关于图片服务器的反爬虫处理请教

2015-02-03 01:44:48 +08:00
 lecher

碰到老大提了一个吐血的需求,想要给公司的图片服务器加上反爬虫处理减少带宽消耗。
我了解到的反爬虫策略有几种判断referer,判断user-agent,使用cookie。
但是做为一个写过各种爬虫的做死程序猿,我知道这几种方法都有伪造的策略可以绕过,而且很难防范。
现在老大给我扔了一个链接,说这个网站的反爬虫策略就做得很好,浏览器无referer,无cookie的情况下可以正常打开,但是如果用程序模拟、wget、curl之类的伪造user-agent就只能下载到一个大小正常但是不能打开的图片文件。
我看服务器标识是:Server:grid-cache/1.4.4
莫非是专用的图片服务端?
想请教这样的反爬虫处理是用什么策略做的?
图片链接是这样的: http://www.lady8844.com/h042/h28/img201501281600230.jpg

10234 次点击
所在节点    服务器
30 条回复
lecher
2015-02-03 12:12:11 +08:00
@kisshere
phantomjs 这类的全模拟浏览器行为解析html和js的事情,确实不能防。
heaton_nobu
2015-02-03 13:30:14 +08:00
@binux 我曾经用curl调用一个接口,传中文时那边数据会出现乱码,可是我不知道怎么指定utf8格式。。。
lecher
2015-02-03 14:34:53 +08:00
@heaton_nobu
curl 指定utf8格式是在发送的header里面指定的。
"content-type: application/x-www-form-urlencoded;
charset=UTF-8"
这样服务器会收到返回utf8格式的header。

当然接收的时候也要记得处理。curl不会帮你做字符串转换的处理,还是要自己处理接收数据。
binux
2015-02-03 14:48:36 +08:00
@heaton_nobu curl 不处理编码,只要你正确地把你需要的编码数据传给 curl 就行了。仔细读这句话,看你是否做到了。
ryd994
2015-02-03 17:33:46 +08:00
@lecher 打水印?
@heaton_nobu iconv或者同类
lecher
2015-02-04 00:25:46 +08:00
@ryd994
说实话 做爬虫的人都不在乎水印,打多大的水印都一样,要抓取的还是会抓取,毕竟用户硬需还是有的。
老大也不指望能完全禁掉,只希望能爬的慢一点。
现在能做的也只是定期更新一下隐藏获取图片地址列表的js参数,但是效果不理想,不知道有没有人做这方面的。对于做js加密,有没有好一点的办法?随机返回不同的js获取图片地址列表的代码给客户端执行这个貌似比较伤用户体验。
ryd994
2015-02-04 05:54:34 +08:00
@lecher 最有效还是限制请求频率,频率太高的时候不要返回错误代码,而是返回错误图片,把你的站名打上去。记得别用同一张图片,否则判断错误太容易了。
因为只要浏览器能执行的,客户端就一定有办法执行,只要模拟一个浏览器,什么内容都能抓走。
所以最终还是要靠服务器上限制。如果对方IP多的话就要求用户注册。
lecher
2015-02-04 11:48:38 +08:00
@ryd994
感谢
Melodic
2015-02-04 23:42:58 +08:00
@yegle 哈哈哈
yegle
2015-02-05 05:41:39 +08:00
@kisshere phantomjs又怎样?判断鼠标在页面上移动规律,机器学习一下就可以搞定。

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

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

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

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

© 2021 V2EX