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实战滑块验证码登陆网站相关推荐
- 绕过滑块验证码登陆网站的实现
因为有些网站登陆的时候需要经过滑块验证码,这里实现了,一个绕过滑块验证码的实例 from selenium import webdriver import time import random# 1. ...
- Python Selenium破解滑块验证码最新版!
通过率高达百分之95!真的强! 一.滑块验证码简述 有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展.而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号, ...
- 用selenium解决滑块验证码
前言 因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧.这篇博客主要是用selenium解决滑块验证码的个别案列. 思路: 用selenium打开浏览器指定网站 将残缺块图片和 ...
- selenium的滑块验证码的模拟登录(猪八戒网站)
一.登录网址跳转到滑块验证码界面 登录网址: url=https://account.zbj.com/login 先拿到这个标签,在跳转到滑块验证码界面. from selenium import w ...
- selenium破解滑块验证码自动查询+获取后续表单数据
一.装载好chromedriver之后,运行命令行 "chrome.exe"(路径) --remote-debugging-port=9222 打开谷歌浏览器. 二.使用selen ...
- python手工打码_使用Python + Selenium破解滑块验证码
在前面一篇博客,介绍了 Selenium 的基本用法和爬虫开发过程中经常使用的一些小技巧,利用这些写出一个浏览器爬虫已经完全没有问题了.看了前一篇博客,可能有人会有疑惑,浏览器爬虫的优势感觉并不比传统 ...
- python+selenium+pytesseract实现自动识别简单验证码,并且自动登陆网站
文章目录 功能介绍 首先安装需要的库 编写代码 功能介绍 本文章实现自动识别验证码并且自动登陆网站,完全不需要人工操作 Python版本:3.6 Selenium:selenium 是一个用于 Web ...
- 通过cookies跳过验证码登陆页面,直接访问网站的其它URL
我每次手动访问去NN网的一家酒店,就不需要登陆,一旦我用脚本打开就会让我登陆,而登陆页面又有验证码,不想识别验证码,所以就想:"通过cookies跳过验证码登陆页面,直接访问网站的其它URL ...
- python 登陆网站图片验证,用python登录带弱图片验证码的网站
上一篇介绍了使用python模拟登陆网站,但是登陆的网站都是直接输入账号及密码进行登陆,现在很多网站为了加强用户安全性和提高反爬虫机制都会有包括字符.图片.手机验证等等各式各样的验证码.图片验证码就是 ...
最新文章
- html如何扩大div,HTML – 如何让绝对div适合父宽度/填充?
- 适配器模式和外观模式
- sql注入-error、boolean、time-based and 宽字节
- 智能高柜机器人_丰田公司推出新型助力机器人
- IOS零碎技术整理(3)-获取wifi列表
- 深入分析Php处理浮点数的问题
- WordPress 主题教程 #6:侧边栏
- 升级指南:将 SharePoint Portal Server 2003 升级到 Office SharePoint Server 2007
- 开源H5棋牌 cocos creator微信棋牌小游戏 幼麟棋牌服务端分析笔记
- Java Apache POI 小记(读取Word通过模板创建PPT)
- 图片居中操作 空行 html,word中进行图片居中对齐批量设置的操作技巧
- FreeCodeCamp学习--Falsy Bouncer
- 电脑前面板耳机没声音
- day 0150面向对象-成员
- i2c我们用得很多,i3c又是什么?
- 微信扫码(扫一扫二维码)下载不了app怎么解决
- 某科技厅办公工作协同平台
- linux 查找目录或文件 (详解)
- Fzu 2206 函数求解【规律】
- 总结2016年国内外的AR/VR产品