如题,前两天看论坛里一个老哥说了几种无头跟正常用户不一样的特征,今天搜了一些信息仔细了解了一下,感觉似乎随着 chromedriver 升级,原先检测区别的特征全都消失了,现在的 headless 跟普通用户几乎是完全一样的。唯一区别可能是 navigater 里 webdriver = ture,但是这点也可以通过简单的方式修改。
现在还有靠谱的反爬虫方式吗?还是只能靠接入验证码一类的服务。像淘宝那样的,正常用户用着用着都会卡,才是现在唯一靠谱的反爬虫方式?
1
jim9606 2021-04-05 06:06:45 +08:00
前端特征检测永远有被骗的可能,只能提高爬虫成本。
有一种方法是引入 HashCash PoW 机制,增大爬虫计算成本,不过还是需要一个坚实的后端做验证。 |
2
LeeReamond OP @jim9606 简单查了一下 pow,感觉是个挺有意思的机制。不过似乎不太好实现,一个简单的方法是后端找一个随机数,生成 hash,告诉前端 hash 的结果和随机数大概的生成范围,让前端用穷举法算出原始数值。这种实现有两个问题,一个是前端算力不同,不同用户访问同一个网页可能有的人 0.5 秒就算完了,有的人 5 秒钟也算不完,比较影响体验。
再一个是这种没法在单次连接里验证,需要发起两次连接。后端需要处理多连接状态同步的问题,其实也提高了后端成本,感觉不是很划算。不过应该是确实能有效提高爬虫成本,是一个有意思的思路 |
3
feiniu 2021-04-05 08:22:32 +08:00 via Android
我感觉,阿里的云盾,是真的牛批
|
4
renmu123 2021-04-05 08:28:23 +08:00 via Android
之前看到过一种手动是检查鼠标轨迹,不过需要把这个判断逻辑好好隐藏起来,不然被发现后还是有可能被破解
|
5
LeeReamond OP @renmu123 不太容易实现,打开 A 页面的同时需要根据鉴定是否为爬虫,决定是否返回正确信息,此时 js 脚本刚刚加载。想实现只能保留 B 页面执行的结果,并让这个结果不随页面刷新改动,可能整个网站都要用 ajax 异步加载的方式才能做,成本太高了。
|
6
BeautifulSoap 2021-04-05 10:25:45 +08:00
无脑简单点那就加个 recaptcha v3
|
7
Dreax 2021-04-05 11:06:47 +08:00
CF 最近刚好上线了 [Super Bot Fight Mode]( https://blog.cloudflare.com/super-bot-fight-mode/)
|
8
3dwelcome 2021-04-05 13:44:25 +08:00 via Android 2
以前千里码有道题,就是页面反爬,把页面关键数据做成图片返回,或者文字由 css 自定义字体构建,至少能避免数据被直接利用。
我写爬虫,就是正常开个隐藏浏览器,用 GoogleDevP 协议里 websocket 来控制鼠标,操作 DOM,对前端真是无感知。就连 webdriver 都检测不出来。 |
9
tsutomu 2021-04-05 14:40:44 +08:00 via Android
前端有些操作在无头浏览器中无法直接运行,比如截图录制视频之类的,特征应该都很轻松进行模仿。
|
10
LeeReamond OP @3dwelcome 隐藏浏览器怎么理解,与无头有何不同?百度没什么有效信息
|
11
LeeReamond OP @Dreax 看起来很吊,然而都是国内用户,他这个没意义啊
|
12
3dwelcome 2021-04-05 23:15:31 +08:00 via Android
@LeeReamond 就是写个外挂人为操作窗口句柄,把浏览器给隐藏掉,和普通用户没明显差别,前端没办法检测。
而无头就是启动 chrome 时,传个 headless 参数,或者用 webdriver,多少会留下一点痕迹。 |
13
TongNianShanHe 2021-04-06 01:01:21 +08:00 via Android
@3dwelcome 之前在研究这个的时候留意到 cdp 协议,就想着有什么办法检测本地连接,目前看来不好检测呀
|
14
LeeReamond OP @TongNianShanHe 确实,大部分时候作为开发者都是不希望自己数据被爬取的,写博客之类的当然随便,商业应用通常贵在数据
|
15
lusi1990 2021-04-06 08:01:24 +08:00 via iPhone
搜下浏览器指纹,这个更靠谱。
要隐藏浏览器的无头模式,对客户端来说只要一句话。 |
16
TongNianShanHe 2021-04-06 08:59:22 +08:00 via Android
@tsutomu 不啊,我用 puppeteer 可以自动授权摄像头和录音,况且这么做涉及用户的隐私,不太可行
|
17
TongNianShanHe 2021-04-06 09:29:39 +08:00 via Android
@LeeReamond 其实反爬虫做到一定程度就不需要再做了(边际效应)
|
18
tsutomu 2021-04-06 21:06:00 +08:00 via Android
@TongNianShanHe 录制浏览器内容,不是视频。。。
|
19
TongNianShanHe 2021-04-06 21:15:55 +08:00 via Android
@tsutomu 那就不太清楚了,下次折腾的时候试一试
|