搜了一圈基本是用 cloudscraper 这个库,但是现在这个库好像已经没有维护了,5s 盾又升级了,现在这个库也绕不过去;还有就是用 Selenium ,对于部分网站可能能正常访问首页,但是之后还需要验证
1
iqingqian 2022-05-25 15:46:27 +08:00 via iPhone
同求
|
2
tmtstudio 2022-05-25 15:55:02 +08:00
人家专门吃这碗饭的,有方法发出来就失效ㄟ( ▔, ▔ )ㄏ
|
5
huruwo 2022-05-25 17:55:23 +08:00
据说有手就行 当然我不行
|
6
huruwo 2022-05-25 17:56:01 +08:00
你应该加到一些内部的爬虫群里问问
|
7
dicc 2022-05-26 11:26:16 +08:00
webdriver
|
8
chengyiqun 2022-05-27 15:26:13 +08:00
控制有头浏览器把自己弄得像真实用户?
|
9
jeeyong 2022-05-30 22:18:40 +08:00
https://github.com/onebits/chromedriver/releases
重新编译了 chromedriver, 删除了 js 层面的一些特征.. README 里有说. 虽然有时候并没啥卵用.. |
10
LeeReamond 2022-06-03 08:25:46 +08:00
@jeeyong 具体有哪些特征能分享一下么,想尝试自己编译,直接用二进制不放心
|
11
jeeyong 2022-06-04 17:57:27 +08:00 1
@LeeReamond
git 上写了.... 我并不知道所有的特征, 我也是学一点改一点.. 替换了字符串: $cdc_asdjflasutopfhvcZLmcfl_ 这个长度不能变... 但是虽然替换了... 依旧可以用其他方式进行检测, 比如正则直接取$ _ 之间的东西... 因为长度不变, 所以 length 一下也可以判断出来. 这部分原始代码里是 var someVar = cdc_adoQpoasnfa76pfcZLmcfl_Array || window.Array var someVar = cdc_adoQpoasnfa76pfcZLmcfl_Promise || window.Promise var someVar = cdc_adoQpoasnfa76pfcZLmcfl_Symbol || window.Symbol 我直接把 cdc_adoQpoasnfa76pfcZLmcfl_Symbol || 这部分删掉了.. 但是, 好像在特定场景下还是可以在 window 全局变量中发现到这个值 cdc_adoQpoasnfa76pfcZLmcfl_Symbol. 目前我没法重现... 以上特征都是在 chrome/test/chromedriver/js 的文件中... |
12
LeeReamond 2022-06-05 14:21:59 +08:00
@jeeyong 查了一下好像反爬端的角度看是通过 window.cdc_adoQpoasnfa76pfcZLmcfl_Array 来判断是否调用 chromedriver ?
|
13
jeeyong 2022-06-06 19:15:18 +08:00
@LeeReamond 只是一种手段....而且其实是很低阶的方法
检测是否存在这个变量..检测这个变量是否还是 Native Function... 还可以检测 navigator.webdriver, 检测方法也是, 简单的就判断属性是否存在, 是否返回 false, 或者 undefined. 不同平台返回是不一样, ios 是 false, 但是 android 我记得好像是 undefined..至少部分是. 还可以检测 webdriver 的是否挂了方法, 或者是通过 Proxy()或者 Reflect()伪造过. 初次之外还是有好多好多方法..哎...没头没头... |
14
jeeyong 2022-06-06 19:24:17 +08:00
我做爬虫的经验来看...
真正的有效的方法...基本都不说.. 大概率是闷头赚钱... 最近开始看到的一些文章, 大概 2,3 年前的东西了, 才陆续有人发出来..至少我是 2,3 年前就知道的.. |