我的脚本已停止工作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 **');
}
});

答案 0 :(得分:1)
首先要做的事情是:如果第三方网站为了检测机器人做了很多努力,他们可能不希望你使用僵尸程序,所以你应该遵守。
至于检测PhantomJS的方法:有很多,从错误的请求标题顺序,缺少媒体插件到特定方法,甚至在错误堆栈跟踪中披露phantomjs。
以下是关于此事的精彩演讲:Detecting headless browsers。
我知道只是提供远程页面的链接是不受欢迎的,但是这里有太多不同点,这些都应该在反击检测工作中得到解决。
奖金建议:如果您不太投资PhantomJS基础架构,请查看puppeteer。
答案 1 :(得分:1)
总的来说可以帮助您的事情: