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
wc110302
V2EX  ›  Python

关于一个 selenium 被反爬虫识别的问题

  •  
  •   wc110302 · 2018-08-26 18:20:09 +08:00 · 9745 次点击
    这是一个创建于 884 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在尝试爬取一个网站数据的时候,遇见了这个网站使用了 distil networks 的反爬虫服务,我尝试了抓包的方式无法有效地进行到下一步,因为需要提交四五次表单,并且每次 Post 请求都被重定向了,于是想着用 requestium,使用 selenium 发送 post 请求,却还是无法达到预期效果。这里主要还是因为 selenium 被识别出来了,我在这个反爬虫服务加载的 js 中发现了这样几句代码,isWebdriver:function(){return!!navigator.webdriver 自己也试着尝试了一下,在 chrome 的浏览器中输入 windows.navigator.webdriver 返回的是 undefind,而在 chromebdriver 中输入后返回的是 true,所以我在想是不是这句代码阻塞了我的 post 执行,有没有什么好的办法绕过这段 js 或者修改它的值呢?
    20 条回复    2019-12-21 13:57:54 +08:00
    wzwwzw
        1
    wzwwzw   2018-08-26 18:26:28 +08:00   ❤️ 1
    为什么不说一下目标网站呢。
    kran
        2
    kran   2018-08-26 19:46:39 +08:00 via iPhone
    selenium 源码混淆变量名,重新编译
    xiaoyu233
        3
    xiaoyu233   2018-08-26 20:28:28 +08:00
    之前找的解决方法是 2 楼说的改代码重新编译方式。不过不会编译,可以尝试用 pyqt 来爬
    wc110302
        4
    wc110302   2018-08-27 00:17:06 +08:00
    @wzwwzw 不好意思现在才上到网--! 目标网站是这个: https://www.flyscoot.com/zh
    wc110302
        5
    wc110302   2018-08-27 00:18:09 +08:00
    @kran 网上能找到现有的教程吗--! 我也不太懂编译 希望能详细解答一下
    wc110302
        6
    wc110302   2018-08-27 00:23:10 +08:00
    @xiaoyu233 谢谢提供的解决方案,明天我去尝试用 pyqt 看能否爬取,其实我现在已经能爬取到数据了,就是耗时太久了,我想绕过这个反爬虫 distil networks 所带来的验证码来减少我耗费的时间,或者直接能使用 Post 请求就更好了,不过现在还没能找到解决方案
    wenzhoou
        7
    wenzhoou   2018-08-27 06:43:58 +08:00 via Android
    selenium 已经好久不更新了啊。感觉死而不僵。鸡肋啊。
    wc110302
        8
    wc110302   2018-08-27 10:02:07 +08:00
    @wenzhoou 但是现在的问题是我也只能采取 selenium 自动采集,抓包的方式尝试过了无法通过
    kran
        9
    kran   2018-08-27 10:24:50 +08:00
    cyrbuzz
        10
    cyrbuzz   2018-08-27 10:26:23 +08:00
    试下 pyppeteer
    https://github.com/miyakogi/pyppeteer
    和 selenium 类似。

    基于 pyppeteer 我也封装了一个小爬虫框架:
    https://github.com/HuberTRoy/Seen
    用不到就忽略这条吧~。
    wc110302
        11
    wc110302   2018-08-27 11:09:54 +08:00
    @kran 谢谢回复 我尝试使用 hex editor 将 chromedrive 里的$cdc_替换了依然不起作用 还是会被反爬虫服务识别 也许是这个教程现在失效了
    yumenlong
        12
    yumenlong   2018-08-27 11:28:36 +08:00
    http://waimai.meituan.com 美团外卖的 js 也对 webdriver 进行了检测,大家来研究研究对策啊
    wc110302
        13
    wc110302   2018-08-29 09:04:52 +08:00
    @xiaoyu233 感谢老铁提供的方法。 这里统一回复一下 使用 pyqt5 可以绕过该网站的反爬服务。 模拟操作需要全程注入 js
    gamecreating
        14
    gamecreating   2018-11-03 21:51:25 +08:00
    @wc110302 注入 JS 的方法有码? pyqt5 + qtwebengine 没找到在哪里注入
    weiyishuxi
        15
    weiyishuxi   2019-02-12 11:01:33 +08:00
    大佬是否可以加微信或者 QQ ( 2408169322 ),我最近也想搞你这个网站,但是爬虫新手,如果可以指导也行,直接有偿交易源码也行
    skt2046
        16
    skt2046   2019-02-27 15:52:08 +08:00
    我最近写一个刷单工具也遇到了万恶的 distil networks,根据的说了 P 参数,我抓包后把它解析了出来可以看出是一个带有详细浏览器信息的 json,并且每次请求这个 json 里面只有一小部分会被修改。看到你说可以模拟生成 p 参数,特意过来请教一下,你是怎么生成的
    skt2046
        17
    skt2046   2019-02-27 15:54:11 +08:00
    可否加鹅企详细讨论:( base64 鹅企) NTIzNzMxNTg5
    skt2046
        18
    skt2046   2019-02-27 15:59:48 +08:00
    还有请求 header 里面有个重要参数和 X-Distil-Ajax 以及 url 参数 PID, 必须和 p 参数一起送过去才能生效,这些参数都是一个 get 取回来的 javascrip 函数生成的
    wc110302
        19
    wc110302   2019-02-27 17:17:22 +08:00
    @skt2046 你的企鹅加不了哦~
    luzhizheng
        20
    luzhizheng   2019-12-21 13:57:54 +08:00
    这楼主是一个搞外包的,大家不要给骗了,加了 QQ 以后一直在忽悠,没两句就开始装逼,然后要我搞外包.
    技术问题一个都不回答,问什么都说很简单自己搞,要不然就找我外包,真是没见过这种人,一点想探讨的精神都没有,还跟我装起逼来,说多了就开始骂我菜鸡,菜鸟,真的是给点阳光就灿烂,懂一点就开始装逼,你爸妈没有教过你做人的道理吗?真是悲哀!
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3120 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:28 · PVG 22:28 · LAX 06:28 · JFK 09:28
    ♥ Do have faith in what you're doing.