Selenium实战滑块验证码登陆网站

Posted XiaoYNil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium实战滑块验证码登陆网站相关的知识,希望对你有一定的参考价值。

目录

问题背景

问题分析

环境部署

Selenium基础

解决验证码滑块人机交互问题

缺口识别

轨迹提交

初阶,简单滑动

高阶,对抗 反机器人技术


问题背景

很久以前有个网站上数据交互自动化,需要登录后才能进行,就临时学了selenium,现在也用不上了,就总结一下。

整个交互流程:先是输入密码,然后鼠标拖动验证码滑块完成人机验证,登录完成后通过cookie或者session授权进行数据交互。

问题分析

这个问题难点在于:

1、如何驱动网页的鼠标键盘交互,拿到网页中的重要信息;

2、滑块验证码正确滑动以及人手的轨迹模拟;

第一个问题中键鼠交互其实有很多方案可以实现,不论是使用第三方库还是通过系统API等方案,但是后需要拿cookie的话,就麻烦了,毕竟是不在一个进程里的逻辑;所以综合起来,用selenium最方便,Selenium可以说是非常强大的工具了。

第二个问题,在交互技术底层,其实是形成一个请求数据包提交到服务器来完成人机验证工作的。目前其实已经有很多个方案,解决问题可以从模拟人机交互入手,也可以从数据包构造入手。

环境部署

安装环境(注意Chromedriver版本与Chrome版本一致):selenium 安装与 chromedriver安装 - Rogn - 博客园

[小北De编程手记] : Lesson 01 - Selenium For C# 之 环境搭建 - 小北@Alan - 博客园

user data保持:selenium设置chrome浏览器保持登录方式两种options和cookie - 后来的后来 - 博客园

webdriver.support版本问题导致4.0版本中ExpectedConditions不可用:c# Selenium ExpectedConditions 不存在_weixin_30256505的博客-CSDN博客

Selenium基础

 网页状态机相关:

如何通过Python+Selenium+PhantomJS/Chrome获取HTTP状态和Response Headers_在路上吗-CSDN博客​​​​​​

[Selenium] selenium — selenium三种等待方式解读,waituntil sleep等_HK_John的博客-CSDN博客

元素定位和操作:

[小北De编程手记] : Lesson 03 - Selenium For C# 之 元素定位 - 小北@Alan - 博客园

python selenium-webdriver 元素操作之鼠标操作(四) - 梦雨情殇 - 博客园

Selenium获取input输入框中值的三种方法_沈伟-测试前行者-CSDN博客

Selenium XPATH详解 - 清风软件测试 - 博客园

https://stackoverflow.com/questions/9297134/selenium-webdriver-mouse-actions-inaccuracy-in-internet-explorer-9

在网页中执行javascript

Selenium WebDriver中常用到的JavaScript操作_greta_guo的博客-CSDN博客

selenium的操作JS命令的接口JavascriptExecutor的介绍 - 心悦飞飞 - 博客园

selenium webdriver——JS对Input执行输入 - hjhsysu - 博客园

cookie等信息抓取:How to launch chrome with performance logging .net · Issue #1844 · SeleniumHQ/selenium · GitHub

其它:

自动化测试 - Selenium For C# - 随笔分类 - 小北@Alan - 博客园

解决验证码滑块人机交互问题

缺口识别

目前滑动验证码的缺口方案有两种,一种是原图和缺口图都能被用户看到,一种是只有缺口图传给客户端。(具体哪一种需要分析前端代码)

显然,第一种方案的缺口识别比较简单点,只需两图做一个diff再去掉一些噪点即可;

第二种缺口图稍微麻烦点,需要识别缺口位置,通过传统的图像识别技术识别缺口形状,或者利用颜色突变等方法结合基本都能解决;而神经网络的方法,基本一个小型的检测网络也能搞定了,训练库的生成都可以通过网图来随机生成。

轨迹提交

初阶,简单滑动

一般的滑动验证码,能完成滑块的正确填充即可,可以根据自己的喜好生成滑动轨迹,注意下selenium的鼠标行为提交时有延迟。

高阶,对抗 反机器人技术

现在的一些滑块验证码技术,有的存在反机器人技术,就比较麻烦。

这里采用预设函数+简易的强化学习方案来优化轨迹提交成功率,需要调试过拟合的问题。

以上是关于Selenium实战滑块验证码登陆网站的主要内容,如果未能解决你的问题,请参考以下文章

Selenium实战滑块验证码登陆网站

Selenium实战滑块验证码登陆网站

selenium模拟破解京东滑块验证码

Selenium实战滑动验证码破解JAVA爬虫

python模拟网站登陆-滑动验证码

Selenium实战滑动验证码破解JAVA爬虫