V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wuhx
V2EX  ›  程序员

Selenium 爬虫检测

  •  
  •   wuhx · 2017-04-25 17:26:00 +08:00 · 5460 次点击
    这是一个创建于 2747 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://defyun.oss-cn-shanghai.aliyuncs.com/areyouhuman.html

    在输入框输入 imhuman 后,点击提交。

    1. 如果检测为正常人类,显示成功图片。
    2. 如果检测到是用 Selenium 驱动的浏览器模拟访问( PhantomJS 或 Chrome , FF ),显示 Access Deny 图片。

    这是开发一个爬虫相关程序/t/356871时写的测试用例,单独拿出来大家一起玩玩。

    参考了 http://engineering.shapesecurity.com/2015/01/detecting-phantomjs-based-visitors.html 并加了一点 Chrome 浏览器检测。

    第 1 条附言  ·  2017-04-26 09:29:16 +08:00
    这个网页不是让诸位来证明你是不是人类的
    正确的用法是:你用一个 Selenium 爬虫来爬这个网页,看能不能骗过识别,获得正确图片。
    15 条回复    2017-04-27 08:31:12 +08:00
    nicevar
        1
    nicevar  
       2017-04-25 18:07:26 +08:00
    正常人类操作都不能显示图片。。。
    这是什么检测
    nicevar
        2
    nicevar  
       2017-04-25 18:11:29 +08:00
    这做的,只要不用鼠标操作,纯键盘切换你就识别不出来
    binux
        3
    binux  
       2017-04-25 18:12:41 +08:00
    猜测是各种 keyup, mouse 事件加 isTrusted
    然后我不用鼠标,用 tab 到输入框,果然就不是 human 了

    同意 1L ,「正常人类操作都不能显示图片。。。」算哪门子检测啊
    jiangzhuo
        4
    jiangzhuo  
       2017-04-25 18:15:48 +08:00
    果然我不是人类。。。。
    littleylv
        5
    littleylv  
       2017-04-25 18:18:32 +08:00
    为什么我连按钮都不能点 0 0
    littleylv
        6
    littleylv  
       2017-04-25 18:19:05 +08:00
    #3 好吧 是要输入 imhuman 没注意看以为随便字符
    mobyride
        7
    mobyride  
       2017-04-25 18:25:53 +08:00
    真棒,已经发现我是外星人的身份了。 🤦‍♂️
    gouchaoer
        8
    gouchaoer  
       2017-04-25 18:37:08 +08:00 via Android
    不考虑移动端啊,移动端不好检测。。。而且,我会告诉你定制 chromium 内核是高级爬虫工程师的杀手锏么
    wuhx
        9
    wuhx  
    OP
       2017-04-25 18:37:15 +08:00
    @binux 没错,这就这些小 trick
    另外这是一个测试用例,单纯破解练习用的 并不是拿来部署的
    @nicevar
    键盘事件确实没考虑,要增加也没问题,但也还是能绕过去,理论上 Selenium 是没有办法完美检测的
    wuhx
        10
    wuhx  
    OP
       2017-04-25 18:47:39 +08:00
    @gouchaoer 是的,移动端没考虑
    chromium 还有 headless 模式,简直完美,主要问题是资源占用太高
    zzNucker
        11
    zzNucker  
       2017-04-25 20:27:34 +08:00
    Selenium 应该有特征的。
    wuhx
        12
    wuhx  
    OP
       2017-04-25 22:18:54 +08:00
    @zzNucker
    只能从用户操作的行为模式中找特征
    Selenium 使用的 Webdriver 协议本身是无法区分到底是用户还是代码驱动浏览器的。
    kacong
        13
    kacong  
       2017-04-26 09:13:31 +08:00
    只要一路 tab 下去,就不是人。哈哈。
    jinyue524
        14
    jinyue524  
       2017-04-26 12:25:46 +08:00 via iPhone
    大量收氪星石...
    icedx
        15
    icedx  
       2017-04-27 08:31:12 +08:00 via Android
    终于找到身体被改造的证据了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2872 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:24 · PVG 19:24 · LAX 04:24 · JFK 07:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.