使用 Selenium + win32api 破解阿里的滑动验证码

想了下,还是不删了,

修改一下 chromedriver 中的 $cdc 这个值,长度一致就行了,抓取的时候修改一下 webdriver. 其他的没啥了。这样了就可以了

 

小猪短租的登录以及其他出现滑动的地方都是阿里的滑动

2019-10-23 更新:

单独给一个连接 :


`https://bizverify.xiaozhu.com/?slideRedirect=https%3A%2F%2Fwww.xiaozhu.com%2Fxzweb.php%3Fop%3DFangDong_MyRentCalendar%26lodgeUnitId%3D117800367601`

之前的方案,在登录界面是完全可以的,但是在这个界面完全不行,滑动几次失败几次。成功率为0

所以,更新一个解决方案:

参考 :[阿里系纯滑块验证码破解思路](https://blog.csdn.net/weixin_41733260/article/details/93160484)

阿里系滑块验证码以nc_1开头,通过调用XXXnc.js来实现。

给个例子,视觉中国的登陆页面www.vcg.com/login

对于这样的验证码,进行JS破解是比较难得,所以应该通过selenium进行破解。
在破解过程中会遇到被网站识别出来,一般都是send_keys后面再拖动再点击登陆,但是这样大部分不行的,多半是阿里的js识别出来了。

大抵是出现:

浏览器最大化时被识别

执行滑动的action被识别

send_keys后被识别

处理逻辑是:

打开浏览器后,最大化后get(url)再刷新页面。

滑动滑块不能利用webdriver,利用pynput这个模块去做拖动操作,这个库是比较底层的,调用win32。之前使用pyautogui发现不行,估计被封装多次,已经被识别出来了

 

 

我只是单纯为了破解滑动,所以直接使用 pynput 完全是可以的。

 

-------------------------------------------------------------分割线---------------------------------------------------------------------

 

从118,到119,现在到了120.

刚开始使用 selenium 完全可以滑动成功,自从更新到120之后,我之前写的代码就失效了。

模拟滑动基本完全不会成功。

检查模拟滑动以及在页面滑动的区别,发现生成的参数 n,差距很大

经过测试发现,更新滑动会检测系统级的鼠标事件,而 selenium 是外部程序控制的鼠标事件,所以就会失败

解决办法

  • 使用 win32api, 系统级别去控制鼠标移动,只要在滑动的时候,

**鼠标有移动 **

,那么这次滑动一定会成功。所以就是两者相结合解决这个问题。

win32的安装

这个库好像直接使用 pip install pywin32 不会成功

还有一种安装方法就是去官网直接下载exe文件,下载对应版本的文件,直接安装,会自动检测 python 的安装目录,并进行安装

  • https://sourceforge.net/projects/pywin32/files/pywin32/

不过还没试过完全使用 win32api 进行滑动会产生什么样的结果。

后续在测试。

欢迎关注我的公众号: Python爬虫scrapy

posted @ 2019-10-23 11:55  MSandrew  阅读(2922)  评论(3编辑  收藏  举报