前言
问题引发:
描述:网上看了阿卡迈有个反爬虫产品BOT manager,能够识别出各编程语言的http请求,Nike的官网就是找他们做的登录验证。只要是用Python,nodejs,JAVA的发送https请求,都会登录失败,但是开Charles就可以成功。那他的原理是什么?
解决分析(一)
因为这个世界上没有任何办法能直接通过请求体判断出某个HTTP请求是否是非浏览器发出的!
HTTP协议本身就是无状态的,不管是什么客户端,你自己用某个编程语言写的也好、浏览器发出的也好,只要发出的请求体是一模一样的(包括在HTTPS情况下的SSL/TLS连接),就不可能有人能判断出是来自于什么东西。
你应该可以联想到一些操作了吧?还想不到的话,你可以试试Wireshark抓包对比一下。毕竟现在应该不至于连HTTP包都模拟得不到位,问题肯定出在别的地方,比如建立连接的速度、客户端SSL/TLS协议的版本/连接方式特征、是否有重复建立TCP连接等。
以下回答:并不能!
解决分析(二)
其实他产品网站里面有介绍:Bot Manager 能够利用各种技术检测未知爬虫程 序的流量,这些技术包括用户行为分析、浏览器指纹识别、浏览器自动检测、HTTP 异常检测、高请求率等等。
所谓的用户行为就是鼠标操作,滚轮操作,键盘操作等是否合理。所谓浏览器指纹可能是针对某个版本的浏览器做特性检测等等各种细节。
就好像虽然https流量无法嗅探,但是分析流量特征还是能知道!大概是在下载,还是浏览网页。
好了!话不多说,对于问题描述,你们有什么看法,请理性评论,谢谢!
最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。