【翻译】如何识别PhantomJs爬虫
发布于 9 年前 作者 zhuyingda 8801 次浏览 最后一次编辑是 8 年前 来自 分享

如何识别PhantomJs爬虫 欢迎拍砖,对于想要做 防野爬 的朋友应该有很大帮助。 我自己的网站做了检测后发现现在很多蜘蛛都是用PhantomJs。

23 回复

来自酷炫的 CNodeMD

哈哈,那slimerjs怎么办

nightmarejs呢

nightmare用的是chromium

道高一尺,魔高一丈,大小写的问题找到源码,改了以后重新编译一下不就解决了

@yakczh 就像你说的 安全方面的东西本身就是“道高一尺 魔高一丈”,没有说怎样做一套防御系统就绝对安全了。 找到源码 重新编译一下,这无形中其实也提高了 “编写蜘蛛程序绕过网站防御机制”做到这件事情的门槛。另外文中提到的alert延迟时间的判断,phantom官方似乎没提供相应api,如果像你说的修改源码,这个成本应该也不算低。

@simongfxu slimer我也没有用过,有时间我再研究研究 看有没有一些相应的解决方案。

@dou4cc 额 没忽略你哈,这篇译文主要是看到这个老外总结的一些特征真的很全面文章写得很好,所以翻了一下转给大家。 slimer和nightmare用的浏览器引擎不同,一个gecko一个是chrome版的webkit。而Phantom的服务端检测技巧完全是基于其使用Qt框架编写这一特性的,所以对slimer和nightmare确实没有参考性了, 不过我觉得文中提到的客户端检测技巧 alert那一条 你可以借鉴一下,任何爬虫伪装模仿出的浏览器在这一点上都是一样的。 具体的有关那两个爬虫的识别方法,我回头看到了相应资料再转给大家哈

@zhuyingda alert怎么测?难道每点开一个页面还要确认一个alert?

@dou4cc 当然不是,你可以先根据其他几点特征进行判断,如果发现可疑之处,再弹个窗 告诉用户 “您的浏览器似乎存在异常插件,请检查,如有疑问请联系XXX” 这个弹窗的延长时间检测作为最后一环,如果时间符合正常用户 那么暂时放过此用户,如果时间小于15毫秒 则基本断定一定是一个phantom机器人,直接执行你的任何毁灭性代码, 然后上报给你的服务端 封IP~~~哈哈哈

@dou4cc 我相信 多数人, 就算想到 对自己的PhantomJs做一些手脚 也很可能遗漏了哪一项。 留下蛛丝马迹

@zhuyingda 野爬本来是很好玩的事,那么在乎版权为什么不出版?

@dou4cc 这个问题我的看法是:版权问题一直是web的一个劣势,无论作为web开发者还是作为互联网从业人员,如果把“版权的保护技术”流程化、正规化,我觉得这对行业既是一件好事,又是一个必然的趋势。如果知识产权可以受到完善的保护,那么知识产权的所有者才有动力创造更好的产品,好的产品大家都喜欢,相比之下也就会有更多的消费者愿意为这样的产品买单,这是一个良性的闭环。反之真的会是一个恶性循环,知识产权越是无法受到法律保护,越是没有人愿意创造好的刊物、博客,长此以往,网络上将会流通着大量重复的、抄袭而来的低端垃圾信息,这对web来讲我真的不认为是一件好事。包括你说的出版物,其实也存在着很多盗版问题,一方面国家法律体系制度有待完善,另一方面这也对web开发者是一种技术上的挑战。 我看到很多网站,只是依靠一些文案性的法律声明来保护版权,这说白了还是站在一个道德的层面上谴责无良的盗版产品,我觉得这是不够的。

能否从一些人为操作如鼠标移动、键盘操作等方式介入呢?判断是否会准确些

@fritx 这个就相当于验证码了呗?

@zhuyingda 验证码也行 不过比较粗暴 我说的或许是验证码的一种替代?

nightmarejs 感觉更爽~!

@fritx 和csrf一样 就是需要加入一种强交互来进行测试。 并且测试的方式应该是机器很难学会的。

同步给各位看官一个最新信息: 经过测试发现, 老外原文中说的phantomjs 的识别特征, 对phantomjs 最新的2.1.1版不起作用。 仅仅对于特征识别来说,似乎phantomjs的爬虫目前算是无敌了…

回到顶部