javascript - Phantomjs/Casperjs 现在不工作网站检测机器人

标签 javascript header phantomjs casperjs

我的脚本已停止工作 2 天。如果我从任何浏览器(Chrome、Mozilla 等...)手动执行工作,没问题。我觉得问题应该出在phantojs的header中。你怎么能像普通浏览器一样在 phantomjs 中模拟标题?下面这些行是当我使用 pantomjs/casperjs 访问时网站向我显示的内容

请原谅我们的打扰...

当您浏览浏览器时,我们认为您是机器人。发生这种情况的原因有几个:

您是 super 用户,以超人的速度浏览本网站。 您已在网络浏览器中禁用 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 **');
  }
});

最佳答案

首先要注意的是:如果第三方网站花费大量精力来检测机器人程序,他们可能不希望您使用机器人程序,因此您可能应该遵守。

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

这是关于此事的精彩演讲:Detecting headless browsers .

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

奖金建议:看看puppeteer如果您对 PhantomJS 基础设施的投入不是太多。

关于javascript - Phantomjs/Casperjs 现在不工作网站检测机器人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557501/

相关文章:

javascript - React - 使用 reduxForm 的两个语句之间的差异

javascript - axios.get 调用返回 "response.data.map is not a function"

php - 导出到 Excel 时隐藏 html 列

javascript - 无法使用 Phantomjs 单击元素

javascript - 简单的 CoffeeScript for 循环从 End 到 0

javascript - jquery搜索结果过滤

c - OpenCV - C 库在我的 Ubuntu11.10 中无法工作

如果 num_rows 大于零,则 PHP header

css - PhantomJS 上的 Flex

Python Selenium WebDriver 在新版本(2.4.9)中无法执行 quit()