反爬虫机制与反爬虫技术(二)

反爬虫机制与反爬虫技术二

    • 1、动态页面处理与验证码识别概述
    • 2、反爬虫案例:页面登录与滑块验证码处理
      • 2.1、用例简介
      • 2.2、库(模块)简介
      • 2.3、网页分析
      • 2.4、Selenium准备操作
      • 2.5、页面登录
      • 2.6、模糊移动滑块测试
    • 3、滑块验证码处理:精确移动滑块
      • 3.1、精确移动滑块的原理
      • 3.2、滑块验证码图像缺口位置识别
      • 3.3、精确移动滑块实现(完整代码)


1、动态页面处理与验证码识别概述


本文接上篇:反爬虫机制与反爬虫技术(一)

上篇中,我们详细介绍和使用了User-Agent伪装、代理IP、请求频率控制等反爬虫技术,本篇将重点针对动态页面处理验证码识别进行介绍和案件详解

近年来,网站安全性越来越高,许多网站为了避免机器人恶意攻击,采用了滑动验证码。与传统的验证码相比,滑动验证码安全性更高,更难被攻击者破解。但是,这也给爬虫程序带来了困难。Python Selenium是一款非常出色的自动化测试工具,可以用来模拟浏览器行为,可以用于爬虫

例如,一些网站为了防止爬虫,使用了JavaScript来动态生成页面内容,这对于爬虫来说是一个挑战。Python中的Selenium库可以模拟浏览器的行为,执行JavaScript代码,从而获取动态生成的内容

例如在进行数据采集时,很多网站需要进行登录才能获取到目标数据,这时可以使用Selenium库进行模拟登录进行处理

另外,一些网站为了防止爬虫,会在登录或提交表单时添加验证码。随着反爬的不断发展,逐渐出现了更多复杂的验证码,例如:内容验证码、滑动验证码、图片拼接验证码等

Python提供了一些强大的图像处理库,例如Pillow、OpenCV等,可以用来自动识别验证码,从而实现自动化爬取

2、反爬虫案例:页面登录与滑块验证码处理

2.1、用例简介


本案例将以豆瓣的登录页面为例

豆瓣登录:https://accounts.douban.com/passport/login

操作步骤:

1) 打开豆瓣登录页面

2) 点击页面上的密码登录

3) 输入账号密码之后,点击登录豆瓣按钮

4) 点击登录后会弹出滑块验证码,拼接验证

在这里插入图片描述

2.2、库(模块)简介


Selenium是一种自动化测试工具,可以用于控制浏览器执行自动化操作,比如滑动验证码识别。滑动验证码通常是用于网站的登陆、注册等操作,通过鼠标模拟人手在滑动拼图或滑动滑块,达到人机交互的效果。在自动化测试中,如果能够识别滑动验证码,就可以实现完全自动化,提高效率

Selenium详解见文章:传送门

利用OpenCV、PIL等Python的图像处理识别库,可以在页面加载完成后,对验证码图片进行特征提取,然后通过算法自动计算出正确的滑块滑动位置,并模拟用户滑动

OpenCV详解见文章:传送门

本案例需要使用到的库(模块)如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains  # 动作类
from selenium.webdriver.support.wait import WebDriverWait  # 等待类
from selenium.webdriver.support import expected_conditions as EC  # 等待条件类
import time
import re
import numpy as np
import urllib.request as req
import cv2

2.3、网页分析


通过检查网页源代码,按照上述操作步骤进行操作,在HTML中找到用例需要使用到的一些元素

其中,点击登录按钮后,就会出现滑块验证区域,这是一个新增的iframe区域

在这里插入图片描述

2.4、Selenium准备操作


通过以下操作验证Selenium环境WebDriver是否正常:

# 打开自定义配置
options = webdriver.ChromeOptions()
# 设置浏览器不关闭(解决闪退/自动关闭)
options.add_experimental_option('detach', True)
# 禁用浏览器扩展
options.add_argument('--disable-extensions')
# 禁用浏览器弹窗
options.add_argument('--disable-popup-blocking')
# 设置浏览器UA
options.add_argument('--user-agent=Mozilla/5.0')

# 声明浏览器对象
driver = webdriver.Chrome(options=options)

# 最大化浏览器窗口
driver.maximize_window()

# 打开豆瓣登录页
driver

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/183703.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NX二次开发UF_CSYS_ask_wcs 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CSYS_ask_wcs Defined in: uf_csys.h int UF_CSYS_ask_wcs(tag_t * wcs_id ) overview 概述 Gets the object identifier of the coordinate system to which the work coordin…

Matlab三角剖分插值问题分析

目录 前言 一、问题引入 二、一个例子 1.生成散点图 2.对数据进行剖分 3.点法式分析 三、最后结果 前言 上一篇文章感觉对三角剖分问题没有说清楚,这次专门对三角剖分问题再仔细说说。 一、问题引入 实际上这个问题是用来解决二维曲面插值问题的。 二维插值问题&…

python tkinter使用(五)

python tkinter使用(五) 本篇文章讲述tkinter 中treeview的使用 Treeview是一个多列列表框,可以显示层次数据。 #!/usr/bin/python3 # -*- coding: UTF-8 -*- """Author: zhTime 2023/11/23 下午8:28 .Email:Describe: treeview 使用 "&quo…

YB4051系列设备是高度集成的 Li-lon 和 Li-Pol 线性充电器,针对便携式应用的小容量电池。

YB4051H 300mA 单电池锂离子电池充电器0.1 mA 终端,45nA 电池漏电流 概述: YB4051系列设备是高度集成的 Li-lon 和 Li-Pol 线性充电器,针对便携式应用的小容量电池。它是一个完整的恒流/恒压线性充电器。不需要外部感应电阻,由于…

〖大前端 - 基础入门三大核心之JS篇㊷〗- DOM事件对象及它的属性

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

vulnhub6

靶机地址:https://download.vulnhub.com/evilbox/EvilBox---One.ova 准备工作 可以先安装 kali 的字典: sudo apt install seclists ​ 或者直接输入 seclists​,系统会问你是否安装,输入 y 即可自动安装 733 x 3751414 x 723 ​ 默认路…

opencv 常用操作指南

1.通道交换 读取图像,然后将RGB通道替换成BGR通道,需要注意的是,opencv读取的图像默认是BGR。cv2.cvtColor函数可以参考Color Space Conversions img cv2.imread(imori.jpg) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) cv2.imwrite(answe…

HarmonyOS(五)—— 认识页面和自定义组件生命周期

前言 在前面我们通过如何创建自定义组件一文知道了如何如何自定义组件以及自定义组件的相关注意事项,接下来我们认识一下页面和自定义组件生命周期。 自定义组件和页面的关系 在开始之前,我们先明确自定义组件和页面的关系 自定义组件:Co…

聚观早报 |一加12正式开启预订;OPPO Reno11系列卖点

【聚观365】11月24日消息 一加12正式开启预订 OPPO Reno11系列卖点 小鹏第三季度营收财报 Claude 2.1 聊天机器人公布 现代汽车将与伦敦大学学院合作 一加12正式开启预订 全新的一加12系列公开亮相已有一段时间,不久前一加官方宣布,该机将于12月4日…

(1)(1.19) TeraRanger One/EVO测距仪

文章目录 前言 1 通过I2C与TeraRanger EVO连接 2 Mission Planner中的设置 3 测试传感器 4 参数说明 前言 TeraBee EVO 系列测距仪是基于红外飞行时间 (TOF) 技术的轻型距离测量传感器。与基于激光的激光雷达相比,它们的速度比超声波快得多,体积更…

Microsoft Office 2019下载工具

今天博主继续推出重磅福利——Microsoft Office合集的安装工具。 Microsoft Office是一套由微软公司开发的办公软件,它为 Microsoft Windows 和 Mac OS X而开发。与办公室应用程序一样,它包括联合的服务器和基于互联网的服务。最近版本的 Office 被称为 …

Linux实验三:shell程序设计: shell基础

实验目的: 进一步巩固shell程序设计语言基本语法,加深对所学知识理解。 实验要求 1. 四种变量的使用 2. 配置环境变量 3. 元字符和正则表达式 4. 引号 1. 本地变量 $ var1"hello Linux" //定义本地变量var1 $ read var2 //定义本地变量vae…

React基础入门

文章目录 创建项目组件和事件更新状态导出组件jsx react是目前最流行的前端框架,几乎也不同太介绍了。 创建项目 首先下载node.js,安装成功后,最好换成国内的源 npm config set registry https://registry.npm.taobao.org然后就可以使用脚…

Ubuntu20.04清理垃圾vscode缓存

使用VM虚拟机安装了Ubuntu系统,主目录空间越来越小,硬盘扩容之后很快又空间不足,甚至出现了开机卡黑屏的情况,这里记录一下解决过程。 1 重新开机进入系统 状态:卡到了开机黑屏状态,左上角有一条小横杠 原…

Charles 网络抓包工具详解与实战指南

文章目录 导读软件版本Charles基本原理核心功能下载及安装界面介绍网络包展示 常用场景介绍PC 端网络抓包移动端网络抓包PC 端配置手机端配置 开启 SSL 代理PC 端和移动端 CA 证书安装Charles 直接安装Charles 下载 CA 文件手动安装 常用操作请求重发请求改写、动态改写断点&am…

常用服务注册中心与发现(Eurake、zookeeper、Nacos)笔记(一)基础概念

基础概念 注册中心 在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机与端口号、版本号、通信协议等一些附加信息告知注册中心,注册中心按照服务名分类组织服务清单,服务…

【100个Cocos实例】东皇太一的技能环绕效果

引言 Cocos中物体围绕物体做圆周运动。 不管是2D还是3D游戏,旋转是游戏中常见的操作之一,它可以用来改变游戏对象的方向、角度或者位置,从而创造出更加生动和有趣的游戏体验。 本文将介绍一下如何实现王者荣耀中东皇太一的技能环绕效果。 …

五分钟,Docker安装flink,并使用flinksql消费kafka数据

1、拉取flink镜像,创建网络 docker pull flink docker network create flink-network2、创建 jobmanager # 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIES"jobmanager.rpc.ad…

123. 股票买卖的最佳时机III(2次交易)

题目 题解 class Solution:def maxProfit(self, prices: List[int]) -> int:N len(prices)# 状态定义 dp[i][j][k]代表在第i天,被允许完成j次交易时,持有或者不持有的最大利润。k0代表不持有,k1代表持有dp [[[0 for k in range(2)] for…

朋友圈被折叠怎么解决?

最近有客户咨询发的朋友圈老被折叠怎么办,正常发都被折叠。一些朋友在微信做私域的,在朋友圈日常营销是必不可少的,如何避免这种问题和怎么解决呢? 为什么会被折叠? 1.据了解,朋友圈内容折叠功能是主要针对…
最新文章