IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Selenium实战滑块验证码登陆网站 -> 正文阅读

[开发测试]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的鼠标行为提交时有延迟。

高阶,对抗 反机器人技术

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

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

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 19:08:14  更:2021-11-16 19:09:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:49:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码