Python爬虫中深不可测的ua参数,爬虫的身份证

ua:UA的中文翻译是用户代理,全称是User Agent,简单来说是终端的环境信息如:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1

它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等

但是这只是一般意义上的ua参数,实际使用中ua代表了一个终端的标识,ID代表了一个用户的标识,随着网络安全的深入,ua已经不再是一串环境的信息字符串,而是开发者单独发开出来的一套甄别终端的算法,成为了单独执行的js文件。

一般在requests的headers里面我们都会附带上User_Agent以规避后台检测是否为爬虫的请求,但是随着安全的提升现在的大型网站已经不再用请求头里面的ua,而是使用单独的js本地生成ua参数,再发给浏览器然后对当前的终端进行鉴别,这样无疑加大了爬虫的难度。

在控制台输出ua信息:

淘宝的ua:

在访问淘帮网站在登陆页会自动发送一个post请求如下

其中携带的form数据如下:

ua参数很长一串,看似像RSA加密过的,并且这个参数时刻变化着在控制台连续输出两次结果如下:

仅有前几位是相同的,其他部分完全不一致,并且在系统window对象中是一个变量,通过一个后台方法更新该参数,目前还未分析出他的计算方式,但可以大胆猜想和本地环境相关和用户标示相关和是否验证相关。

另一个案例

网址https://www.pm9b.com/,看它的post参数

values是密码加上一串固定的字符串ff70d13213246e3c19a6b2d1161d29a这个字符串不是md5,而是后台js计算的一个值,分析该字典的生成js

其中this是一个全局对象这里他的值等于window,保存了全局的方法和变量输出如下:

js中的t参数是由一堆环境信息组成的如下:

然后在经过哈希计算,在这里我们就可以看到他的ua信息是由环境变量生成的,只是没有添加账户信息,那我们可以用一个固定值来代替。

本片文章的中心在于阐述反爬虫机制中对ua信息的应用,目前淘宝ua算法是接触到的比较难的,ua就是一个终端的身份证,服务器可以通过这个身份来过滤很多爬虫。

同时推荐两个随机生成User-Agent的库

fake_useragent

faker

注意:生成ua要指定浏览器,不然因为网页的兼容问题,不同浏览器头返回源码不同;测试ua去重后总数只有50多条。

------------------------------

ID:Python之战

|作|者|公(zhong)号:python之战

专注Python,专注于网络爬虫、RPA的学习-践行-总结

喜欢研究技术瓶颈并分享,欢迎围观,共同学习。

独学而无友,则孤陋而寡闻!

---------------------------

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190118A10ZO300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券