V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
brave256
V2EX  ›  Python

爬虫 5s 盾现在有什么解决办法啊

  •  
  •   brave256 · 2022-05-25 15:40:17 +08:00 · 3800 次点击
    这是一个创建于 897 天前的主题,其中的信息可能已经有所发展或是发生改变。

    搜了一圈基本是用 cloudscraper 这个库,但是现在这个库好像已经没有维护了,5s 盾又升级了,现在这个库也绕不过去;还有就是用 Selenium ,对于部分网站可能能正常访问首页,但是之后还需要验证

    14 条回复    2022-06-06 19:24:17 +08:00
    iqingqian
        1
    iqingqian  
       2022-05-25 15:46:27 +08:00 via iPhone
    同求
    tmtstudio
        2
    tmtstudio  
       2022-05-25 15:55:02 +08:00
    人家专门吃这碗饭的,有方法发出来就失效ㄟ( ▔, ▔ )ㄏ
    brave256
        3
    brave256  
    OP
       2022-05-25 16:08:06 +08:00
    @tmtstudio 道理是这么个道理,所以无解了吗..
    u823tg
        4
    u823tg  
       2022-05-25 16:14:16 +08:00
    @brave256 #3 自己研究么, 要么怎么绕过, 要么怎么把自己模拟的像真实用户。
    huruwo
        5
    huruwo  
       2022-05-25 17:55:23 +08:00
    据说有手就行 当然我不行
    huruwo
        6
    huruwo  
       2022-05-25 17:56:01 +08:00
    你应该加到一些内部的爬虫群里问问
    dicc
        7
    dicc  
       2022-05-26 11:26:16 +08:00
    webdriver
    chengyiqun
        8
    chengyiqun  
       2022-05-27 15:26:13 +08:00
    控制有头浏览器把自己弄得像真实用户?
    jeeyong
        9
    jeeyong  
       2022-05-30 22:18:40 +08:00
    https://github.com/onebits/chromedriver/releases

    重新编译了 chromedriver, 删除了 js 层面的一些特征.. README 里有说.
    虽然有时候并没啥卵用..
    LeeReamond
        10
    LeeReamond  
       2022-06-03 08:25:46 +08:00
    @jeeyong 具体有哪些特征能分享一下么,想尝试自己编译,直接用二进制不放心
    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 的文件中...
    LeeReamond
        12
    LeeReamond  
       2022-06-05 14:21:59 +08:00
    @jeeyong 查了一下好像反爬端的角度看是通过 window.cdc_adoQpoasnfa76pfcZLmcfl_Array 来判断是否调用 chromedriver ?
    jeeyong
        13
    jeeyong  
       2022-06-06 19:15:18 +08:00
    @LeeReamond 只是一种手段....而且其实是很低阶的方法
    检测是否存在这个变量..检测这个变量是否还是 Native Function...
    还可以检测 navigator.webdriver, 检测方法也是, 简单的就判断属性是否存在, 是否返回 false, 或者 undefined. 不同平台返回是不一样, ios 是 false, 但是 android 我记得好像是 undefined..至少部分是.
    还可以检测 webdriver 的是否挂了方法, 或者是通过 Proxy()或者 Reflect()伪造过.
    初次之外还是有好多好多方法..哎...没头没头...
    jeeyong
        14
    jeeyong  
       2022-06-06 19:24:17 +08:00
    我做爬虫的经验来看...
    真正的有效的方法...基本都不说..
    大概率是闷头赚钱...
    最近开始看到的一些文章, 大概 2,3 年前的东西了, 才陆续有人发出来..至少我是 2,3 年前就知道的..
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3216 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:37 · PVG 08:37 · LAX 16:37 · JFK 19:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.