Selenium另类绕过网站登录检测

前言

  博主最近在鼓捣Selenium,恰好有个朋友需要对淘宝进行一些自动化操作,于是就打算给他做个小工具,作为第一次接触Selenium的练手。起初以为是一会儿的功夫,但由于之前没有研究过爬虫方面的东西,被淘宝的反爬虫机制搞得头疼,经过搜索才得知,原来Selenium已经被各大网站列入“黑名单”了,所以淘宝也不例外,在登录方面加了一些验证机制。网上的各类方法博主也试过不少,均是效果不佳,最后想了几个围魏救赵的法子,凑合应对了。

主要问题

  淘宝在检测到Selenium的时候,会触发验证机制,大致如下:

  • 登录页面的默认显示会在密码登录扫码登录之间变换,具体变换条件没了解。
  • 登录的时候会出现滑块验证

罗列方案

以下方案测试时间为2019年5月31日

方案尝试结果是否支持headless备注
手动滑动滑块无效滑动后提示出错
自动滑动滑块,即代码实现无效滑动后提示出错
使用Pyppeteer有效登录正常,滑块验证成功,但速度慢,不能用headless模式,不爽
修改Chromedriver.exe无效未知毫无作用
添加options.add_experimental_option('excludeSwitches', ['enable-automation']),即开发者模式无效毫无作用,还多一个恼人的提示
手动修改webdriver返回值无效毫无作用
替换js来修改webdriver返回值未尝试未知太麻烦
利用Cookie免登陆无效直接利用浏览器获取的或者代码返回的Cookie会在刷新后失效,需要进一步解析再构建淘宝Cookie,但这不在研究范围内
使用mitmproxy未尝试未知太麻烦
改为淘宝H5移动端页面无效未知不知道是不是代码问题,对于H5移动端页面,Selenium的操作都失效了
直接手动扫码登录有效能正常登录,但不能用headless模式,不爽

最后解决

  最后博主想了几个法子,既能使用headless模式,又不需要花太多功夫。

  1. 利用Selenium的截图函数,在headless模式下将淘宝登录二维码截图保存,再手动扫截图。
  2. 利用https://qrlogin.taobao.com/qrcodelogin/generateQRCode4Login.do这个接口直接获取淘宝二维码,再手动扫码。
  3. 利用淘宝登录页面下的支付宝登录进行绑定登录,通过其网页源码获取barcode值(一个地址),利用代码将这个地址重新生成二维码,再手动扫码。

  截图示例代码:

1
2
3
4
5
6
7
8
options = webdriver.ChromeOptions()
options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=options)
browser.implicitly_wait(8)
browser.get('https://login.taobao.com/member/login.jhtml')
browser.save_screenshot('.\\QRCode.png')
time.sleep(1)
os.startfile('.\\QRCode.png')
-------------本文结束❤感谢阅读-------------

本文标题:Selenium另类绕过网站登录检测

文章作者:三水非冰

发布时间:2019年06月01日

最后更新:2019年06月01日

原始链接:https://www.sanshuifeibing.cn/posts/97ea60cf.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

如果觉得我的文章对您有用,请随意打赏,您的支持将鼓励我继续创作。