gpt4 book ai didi

phantomjs - 可靠地检测基于 PhantomJS 的垃圾邮件机器人

转载 作者:行者123 更新时间:2023-12-03 11:00:07 29 4
gpt4 key购买 nike

有没有办法始终如一地检测 PhantomJS/CasperJS?我一直在处理用它构建的一系列恶意垃圾邮件机器人,并且能够根据某些行为基本上阻止它们,但是我很好奇是否有一种坚如磐石的方法来了解 CasperJS 是否正在使用中,作为处理不断的适应变得有点烦人。

我不相信使用验证码。它们是一种负面的用户体验,并且 ReCaptcha 从未在我的 MediaWiki 安装中阻止垃圾邮件。由于我们的网站没有用户注册(匿名讨论板),我们需要为每个帖子提供一个验证码条目。我们每天会收到数千个合法帖子,而验证码会看到这个数字。

最佳答案

我非常同意您对 CAPTCHA 的看法。我将列出到目前为止我能够检测到的内容,用于我自己的检测脚本,具有类似的目标。这只是部分,因为它们更多 headless browsers .

使用暴露的窗口属性来检测/假设那些特定的 headless 浏览器是相当安全的:

window._phantom (or window.callPhantom) //phantomjs
window.__phantomas //PhantomJS-based web perf metrics + monitoring tool
window.Buffer //nodejs
window.emit //couchjs
window.spawn //rhino

以上收集自 jslint doc并使用phantom js进行测试。

浏览器自动化驱动程序(由 BrowserStack 或其他网络捕获服务用于快照):
window.webdriver //selenium
window.domAutomation (or window.domAutomationController) //chromium based automation driver

这些属性并不总是公开的,我正在寻找其他更强大的方法来检测此类机器人,完成后我可能会作为完整的脚本发布。但这主要回答了你的问题。

这是更广泛地检测支持 JS 的 headless 浏览器的另一种相当合理的方法:
if (window.outerWidth === 0 && window.outerHeight === 0){ //headless browser }

这应该很有效,因为即使虚拟视口(viewport)大小是由 headless 浏览器设置的,默认情况下属性也是 0,并且默认情况下它不能报告不存在的浏览器窗口的大小。特别是 Phantom JS doesn't support outerWith or outerHeight .

附录:但是有一个外部/内部维度的 Chrome/Blink 错误。 Chrome does not report those dimensions when a page loads in a hidden tab ,例如从上一个 session 恢复时。 Safari 好像没有这个问题。。

更新:事实证明,iOS Safari 8+ 有一个外部宽度和外部高度为 0 的错误,而 Sailfish WebView 也可以。因此,虽然它是一个信号,但不能单独使用而不注意这些错误。因此, 警告 :请不要使用这个原始片段,除非你真的知道你在做什么。

PS:如果您知道此处未列出的其他 headless 浏览器属性,请在评论中分享。

关于phantomjs - 可靠地检测基于 PhantomJS 的垃圾邮件机器人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20862728/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com