新手问题 如何防止爬虫抓取图片, 求支招

jn615 · 2016年01月21日 · 最后由 jn615 回复于 2016年01月25日 · 6996 次阅读

如何能在网站上显示图片,但是不让爬虫抓取?

  1. 用 flash?现在都在摒弃 flash 了吧,flash 加载也会慢
  2. 用 lazy loading? 这个防不了爬虫吧,换句话说,即使在页面渲染后,再用 ajax 去请求真实得图片地址,爬虫会去解析 js 吗?

还有什么招数,求解

区分不了真实浏览器啊,有什么浏览器能做的,爬虫做不了得吗

弄个防盗链呗

防盗链不妨爬虫啊,只防被其他站引用

#1 楼 @ywencn 我是指防抓取,不是盗用

那基本上没戏我觉得

必须得注册才能查看,除了这个办法,想不到其它的防爬虫的办法. 你只要非注册能查看,我 1 分钟爬一次,你总不能把我的封了吧。

但如果你注册了,我可以记录你这个用户查看了多少次,超过多少次,直接封帐号。

#6 楼 @cxh116 注册有违用户体验,另寻出路

一般的爬虫不会去解析 JS,如果你用 lazy loading,起码可以防止 90% 的爬虫了 当然,如果对于那些专门针对你的网站的爬虫,你能做的很少。

#8 楼 @zlx_star 对,我刚也一直在看爬虫解析 js 的问题,目前只能用 js 去加载图片这个了

#9 楼 @jn615 爬虫如果要解析 JS,就要加载 V8 引擎。我有遇到过牛逼的把 HTML 代码写在 JS 里面,然后一次性加载下来,爬虫找不到,浏览器可以显示图片,又不增加额外的请求。

我想起来了,新浪微博就是这么干的

听说可以弄一个 用户看不见的链接,如果爬了这个链接,就把 ip 封掉

#11 楼 @cloude9101 爬过了再封已晚

#10 楼 @zlx_star 恩,多谢指点,原则上只要在 js 里面做点文章且爬虫不解析都没问题,要是蜘蛛完全模拟浏览器去解析的话,那就是智能蜘蛛,你再藏也没用了,目前我就把 src 混一下,用 js 解析正确的,先对付

只能你能展示给用户,那它就有办法拿到,所以压根没有办法防,即使有,代价也太高了。

为什么非得防止抓取图片呢,实在不行加水印算了,不过也很牺牲体验。

区分不了真实浏览器啊,有什么浏览器能做的,爬虫做不了得吗

现在有的爬虫是用 Chrome 扩展程序做的,本来就是真实的浏览器。

反爬总的来说算是伤敌一千自损八百的行为。除了用户体验,还有 seo 方面得考虑进去. 个人有以下几个考虑:

  1. 为了 seo 方面的考量,尽量避免 javascript.
  2. 随机变动 html 结构,通过随机增加空 tag, 变动上下顺序等办法,让节点路径查找不便。
  3. 跟踪用户访问资源的频率和数量,可疑行为加上验证码。

大概写过一年多的爬虫,它和浏览器你可以当做是一样的,headless 浏览器,思考方向上,你只能想它和正常用户的行为上的区别,访问频率,验证码。

另外假设是列出公司信息,company/id, 这里的 Id 一定不能是连续的,应该间隔数字很大,这样它就不方便枚举。而且列表页,给个几十页就可以了,别真的全列出来了。不要提供很方便的枚举入口。

许多页面,可以是必须登录后才能访问,而登录前要验证码,如果木有验证码,爬虫是可以自动进行登录的,而即便有验证码,也是可以手动登录后,把 cookie 保存到文件里,爬虫读取的。

当然如果它把抓取频率控制下来,再用各种 ip 来 rotate,这些 ip 可以是网络上买的私人代理,以及各种公开代理网站上抓取下来的公开代理,那就完全没办法了,因为相当于就是正常用户行为了。

封锁爬虫,是个长期活啊,如果对方有毅力的话

现在不写爬虫了,不稳定,也容易招大神黑/鄙视,O(∩_∩)O~

#18 楼 @seaify 这个是啊,如果爬虫针对你的话,你有政策,它有对策,终极必杀只有上验证码,而且还得宇宙无敌验证码,12306 就是例子, 😄

#17 楼 @chenjau 其他不想考虑,就是不想让抓到图片

#15 楼 @greatghoul 水印早就加过,可是还是不想让抓图片。

以现在爬虫的水平来说,你很难防范。我朋友的爬虫抓亚马逊的图片,系统由二十多台树莓派构成,购买了多个不同的线路,抓取任务会控制访问时段,请求次数。通过不停的尝试来获得网站容忍的爬虫请求次数。

#22 楼 @jimrokliu 我自己去抓 Google 得东西也是,验证码又解不了,只好在它容忍内分时间段使用多台机器抓,和你朋友思路一样。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号