代码之家  ›  专栏  ›  技术社区  ›  Javier Sega

Phantomjs/Casperjs现在无法工作网站检测到机器人

  •  1
  • Javier Sega  · 技术社区  · 7 年前

    我的脚本已经停止工作两天了。如果我从任何浏览器(Chrome、Mozilla等)手动执行这些工作没问题。我认为问题应该在phantojs的标题中。如何在phantomjs中模拟头文件,就好像它是一个普通的浏览器一样?当我使用pantomjs/casperjs访问时,网站会显示以下几行内容

    请原谅我们的打扰。。。

    当你浏览你的浏览器时,我们认为你是一个机器人。这可能有几个原因:

    您已在web浏览器中禁用JavaScript。 第三方浏览器插件(如Ghostery或NoScript)正在阻止JavaScript运行。本支持文章提供了更多信息。

    完成下面的验证码后,您将立即重新获得访问

    在我的脚本中,我有以下配置:

    var casper = require("casper").create ({
    	engine: 'phantomjs', 
        exitOnError: false,
        ignoreSslErrors: true,
        waitTimeout: 5000,
        stepTimeout: 5000,
        verbose: true,
     
      pageSettings: {
            webSecurityEnabled: false,
            javascriptEnabled: true,
            loadImages: true,
            loadPlugins: true,
            localToRemoteUrlAccessEnabled: true,
            userAgent: 'Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36',
            XSSAuditingEnabled: false,
            logLevel: 'debug'
      },
      onWaitTimeout: function() {
           // this.echo('** Wait-TimeOut **');
      },
      onStepTimeout: function() {
            //this.echo('** Step-TimeOut **');
      }
    });
    2 回复  |  直到 7 年前
        1
  •  1
  •   Vaviloff    7 年前

    第一件事:如果第三方网站花费那么多精力检测机器人,他们可能不希望你使用机器人,所以你可能应该遵守。

    至于检测PhantomJS的方法:有很多,从错误的请求头顺序、缺少媒体插件到特定方法,甚至在错误堆栈跟踪中泄漏PhantomJS。

    以下是关于这件事的精彩介绍: Detecting headless browsers .

    我知道,仅仅提供远程页面的链接是不受欢迎的,但这里有太多太多不同的地方需要提及,它们都应该在反检测工作中得到解决。

    奖金建议:看看 puppeteer

        2
  •  1
  •   Grubshka    6 年前

    一般来说,有帮助的事情:

    • 标题应类似于常见浏览器,包括:
    • 导航:
      • 如果您提出多个请求,请输入 随机超时 他们之间
      • 如果打开页面中的链接,请设置 推荐人
    • 图像 应启用
    • Javascript 应启用
      • 检查一下“ 导航器。插件 “和” 导航器。语言 “”是在客户端javascript页面上下文中设置的
      • 检查您使用的客户端是否没有注入明显的javascript变量(如_cdc、_dream…)
    • 使用代理