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

时间:2017-10-04 05:19:28

标签: javascript header phantomjs casperjs

我的脚本已停止工作2天了。如果我从任何浏览器手动执行工作(Chrome,Mozilla等...)没问题。我认为问题应该在phantojs的标题中。你怎么能在phantomjs中模拟标题,好像它是一个普通的浏览器?以下这些行是我访问pantomjs / casperjs时网站显示的内容

原谅我们的中断......

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

您是以超人的速度在此网站上移动的超级用户。 您已在网络浏览器中停用了JavaScript。 第三方浏览器插件(如Ghostery或NoScript)阻止JavaScript运行。有关其他信息,请参阅此支持文章。

完成下面的CAPTCHA后,您将立即重新获得

的访问权限

在我的脚本中,我有这样的配置:



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 个答案:

答案 0 :(得分:1)

首先要做的事情是:如果第三方网站为了检测机器人做了很多努力,他们可能不希望你使用僵尸程序,所以你应该遵守。

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

以下是关于此事的精彩演讲:Detecting headless browsers

我知道只是提供远程页面的链接是不受欢迎的,但是这里有太多不同点,这些都应该在反击检测工作中得到解决。

奖金建议:如果您不太投资PhantomJS基础架构,请查看puppeteer

答案 1 :(得分:1)

总的来说可以帮助您的事情:

  • 标题应类似于常见的浏览器,包括:
  • 导航:
    • 如果您有多个请求,请在它们之间放置一个随机超时
    • 如果打开页面中找到的链接,请相应地设置 Referer 标头
    • 或者更好的方法是模拟鼠标活动以移动,单击并跟随链接
  • 图像应启用
  • JavaScript 应该已启用
    • 检查是否在客户端JavaScript页面上下文中设置了“ navigator.plugins ”和“ navigator.language
    • 检查您使用的客户端没有注入明显的javascript变量(例如_cdc,__ nightmare ...)
  • 使用代理