防止下载链接被爬虫抓取,有没有最好的方法?

2017-11-12 10:14:44 +08:00
 Reign

目前服务器上几百个 G 的文件全都是静态文件下载地址,只要是幼儿园大班毕业的人都可以不费吹灰之力写个爬虫爬下来,如果想要彻底屏蔽爬虫,包括 Googlebot、bingbot 之类的全都屏蔽了,只允许普通用户用浏览器正常点击后下载,有哪些办法,我目前想了一些办法都不成熟:

  1. 用户注册登录后才能下载,注册页面加上 recaptcha,弊端就是一个“注册登录”会烦掉很多用户,况且 recaptcha 在大陆没法使用
  2. 输入验证码后下载,感觉繁琐而麻烦
  3. 客户端 js 生成一个 token 和服务器端 php 进行校对,这个能屏蔽很多 file_get_contents,但是对于 phantomjs 等无头浏览器无能为力
  4. Google 了一下有很多检验客户端是否为 headless 浏览器的方法,但感觉这些方法随着 phantomjs 不断升级都会不断失效,于是我在想对一个下载按钮比如:“点此下载文件”,每次点击记录鼠标的坐标,如果每次鼠标的坐标像素值( e.pageX 和 e.pageY )都一模一样,就判断为爬虫然后返回脏数据,就是不知道这种原理该怎样实现?用 cookie 来记录?
  5. 蜜罐法,这个貌似很不靠谱,因为我写爬虫第一时间都是去看它的 robots 有没有蜜罐

上面就当抛砖引玉吧,不知道各位 V 友有没有好点的办法?不胜感激

9084 次点击
所在节点    程序员
51 条回复
Reign
2017-11-13 08:54:56 +08:00
@kohos ip 换代理分分钟给你把资源爬完
allenhu
2017-11-13 09:20:54 +08:00
@Reign 既然那么金贵的资源,那就要求登录或者验证码吧
rswl
2017-11-13 09:50:30 +08:00
爬虫与反爬虫的较量
keenwon
2017-11-13 10:02:33 +08:00
recaptcha 其实挺烦的,每次都要花 1-2 分钟
Kilerd
2017-11-13 10:45:44 +08:00
@SlipStupig 那如果用上 chromeless 呢(好像是这么拼的),简直就是一个无头的 chrome
vtwoextb
2017-11-13 10:51:18 +08:00
有必要加 个 滑动的 解锁功能就行 , 既能保证用户良好的 体验 ,又能滤掉大部分爬虫,这样就行了 没有百分之百,,, 我就比较喜欢研究爬虫 我现在爬了某东 一年多了 也还没有阻止我 https://github.com/hizdm/dynamic_ip 这本身就是攻与防的较量,要在利益之间做权衡
580a388da131
2017-11-13 10:52:04 +08:00
能下就能爬,强大如百度网盘不也没辙么。
限速是绝招。
stanjia
2017-11-13 10:54:17 +08:00
OSS token 校验下载
greatghoul
2017-11-13 10:58:05 +08:00
@firefox12 打码平台做这个还不是易如反掌
firefox12
2017-11-13 16:14:46 +08:00
@greatghoul 本来就是成本问题, 给他出奥数 小学 1 年级的题目 保证就没打码公司接了。 但是你的客户也都没了。

google 的反机器人是强,但是你做不到啊。
x7395759
2017-11-13 23:26:24 +08:00
有一个理解,其实真正的人使用浏览器和爬虫在任何非人类的特征上都是没有区别的,浏览器不也是一个爬虫程序吗?只是人操作这个爬虫而已。所以也就是说如果要杜绝,只有在人类的特征上下文章。

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

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

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

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

© 2021 V2EX