Selenium 爬虫检测

2017-04-25 17:26:00 +08:00
 wuhx

https://defyun.oss-cn-shanghai.aliyuncs.com/areyouhuman.html

在输入框输入 imhuman 后,点击提交。

  1. 如果检测为正常人类,显示成功图片。
  2. 如果检测到是用 Selenium 驱动的浏览器模拟访问( PhantomJS 或 Chrome , FF ),显示 Access Deny 图片。

这是开发一个爬虫相关程序/t/356871时写的测试用例,单独拿出来大家一起玩玩。

参考了 http://engineering.shapesecurity.com/2015/01/detecting-phantomjs-based-visitors.html 并加了一点 Chrome 浏览器检测。

5278 次点击
所在节点    程序员
15 条回复
nicevar
2017-04-25 18:07:26 +08:00
正常人类操作都不能显示图片。。。
这是什么检测
nicevar
2017-04-25 18:11:29 +08:00
这做的,只要不用鼠标操作,纯键盘切换你就识别不出来
binux
2017-04-25 18:12:41 +08:00
猜测是各种 keyup, mouse 事件加 isTrusted
然后我不用鼠标,用 tab 到输入框,果然就不是 human 了

同意 1L ,「正常人类操作都不能显示图片。。。」算哪门子检测啊
jiangzhuo
2017-04-25 18:15:48 +08:00
果然我不是人类。。。。
littleylv
2017-04-25 18:18:32 +08:00
为什么我连按钮都不能点 0 0
littleylv
2017-04-25 18:19:05 +08:00
#3 好吧 是要输入 imhuman 没注意看以为随便字符
mobyride
2017-04-25 18:25:53 +08:00
真棒,已经发现我是外星人的身份了。 🤦‍♂️
gouchaoer
2017-04-25 18:37:08 +08:00
不考虑移动端啊,移动端不好检测。。。而且,我会告诉你定制 chromium 内核是高级爬虫工程师的杀手锏么
wuhx
2017-04-25 18:37:15 +08:00
@binux 没错,这就这些小 trick
另外这是一个测试用例,单纯破解练习用的 并不是拿来部署的
@nicevar
键盘事件确实没考虑,要增加也没问题,但也还是能绕过去,理论上 Selenium 是没有办法完美检测的
wuhx
2017-04-25 18:47:39 +08:00
@gouchaoer 是的,移动端没考虑
chromium 还有 headless 模式,简直完美,主要问题是资源占用太高
zzNucker
2017-04-25 20:27:34 +08:00
Selenium 应该有特征的。
wuhx
2017-04-25 22:18:54 +08:00
@zzNucker
只能从用户操作的行为模式中找特征
Selenium 使用的 Webdriver 协议本身是无法区分到底是用户还是代码驱动浏览器的。
kacong
2017-04-26 09:13:31 +08:00
只要一路 tab 下去,就不是人。哈哈。
jinyue524
2017-04-26 12:25:46 +08:00
大量收氪星石...
icedx
2017-04-27 08:31:12 +08:00
终于找到身体被改造的证据了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/357284

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX