分析淘宝登陆对selenium爬虫的封杀方案,反爬虫机制的升级

关注并标星2808proxy

领取免费爬虫IP

业界领先的分布式爬虫IP服务解决方案商

 

本文转自公众号“python之战”,写的很好,特此记录其经验并 分享给大家,帮助大家理解淘宝的反扒策略。再次感谢“python之战”的分享。

 

 

众所周知,淘宝的反爬虫策略一直比较严格,正常情况下selenium是无法访问淘宝的,不管你是手动还是自动登录一律都是验证不通过的。

今天仔细研究了下淘宝的反爬虫策略,还不完善,将一些经验分享给大家。

 

总体上淘宝的反爬虫思路是:基于用户身份的ua算法,来识别浏览器是正常状态还是非正常状态,我们下面来说具体的方案。

 

首先在淘宝登陆页面还未输入密码时,会触发一个post请求,这个post请求中有一个关键信息ua。

至于ua怎么生成目前还未分析出,他的出处在全局对象window[UA_Opt.LogVal]、或者window["_n"],并且每次输出都不一样。

 

浏览器window对象,他是出于一个私有属性_n,但是怎么做到每次输出的值都不一样的,这是疑问一。

 

 

这个在输完用户名后的post请求有什么用?这个请求决定了是否会出现滑块验证,我们看它的响应内容:

 

 

needcode是需要验证或者不需要验证,在webdriver打开的浏览器中这个返回值一定是True,也就是一定要验证,但是他还不是淘宝拒绝一切selenium验证的标准,继续向下。

 

继续向下,当返回needcode是True时候淘宝出现滑块验证,那我们看滑块验证的请求:

 

 

其中有个t参数,t参数就是ua,也就是在验证滑块是否正确的时候淘宝后台还会对ua验证一番,检验是否为正确的标识,一切selenium打开的浏览器里面'browser': {'ie': False, 'chrome': True, 'webdriver': True},当然webdriver是比较关键的参考标准,除此还有几十个其他异于正常浏览器的属性,很明显这些信息被加密在ua参数之中。

 

淘宝后台在收到滑块验证信息的时候,会同时对ua经行验证,所有含有webdriver=True的验证都会被返回code=300

现在我们大致就清楚了淘宝对selenium的检测:通过本地的js算法生成ua,ua里面含有浏览器信息,甚至含有当前地址,当输入完账号后会把账号和ua一起post给服务器,服务器解析ua后通过智能算法识别是否是常用登陆地、常用浏览器、环境有无异常,selenium打开的浏览器是异常浏览器,一定返回滑块验证,当完成验证后会再把ua和滑动的轨迹发给后台,后台在检测ua,一旦含有异常信息就返回code=300,验证失败。

 

目前ua的生成还没找到,但是他有几个特点:

  1. 每次发送的ua都不一样

  2. ua的长度会随着使用次数的增加越来越长。

 

目前分析到这里,在分析中ua生成没找到,倒是把密码的加密方式找到了,RSA加密。后面的分析还会继续,欢迎探讨。

猜你喜欢

转载自blog.csdn.net/tanqian351/article/details/87810592
0条评论
添加一条新回复