这种爬虫是不是无解?

2017-05-06 10:07:09 +08:00
 woshinide300yuan

http://wx1.sinaimg.cn/large/7e8b4ac8ly1ffbewcp4wrj20wl0d50y1.jpg

问题来了,这么写 if ($http_user_agent ~ "Mozilla/5.0" ) { return 403;
}

是不是所有 Mozilla/5.0 都进不来了。

不会不懂了,请 dalao 明示,嘿嘿,谢谢,周末愉快~

11448 次点击
所在节点    NGINX
62 条回复
SlipStupig
2017-05-06 15:27:13 +08:00
@woshinide300yuan 爬虫对抗我觉得可以尽量让对方察觉的不要那么明显而达到目的

1.做一个 Qos 去限速,不建议封 ip 而是给一堆假数据给对方,而我方可以减少内容被盗并且减少数据库压力, 这样采集的人会过一段时间发现自己采集的内容是假的,会花很长时间调试从而增加对方的痛苦值
2.页面 cookie 跟踪,处了首页以外,每次访问其它页面都需要上报上一次的 cookie 里面的 key,否则不让访问(如果这样会导致百度这些也无法爬行,下面会将)
3.前端页面使用 JS 渲染,对百度和 Google 这些爬虫给一个特定的页面,但是要校验 ip,如果 UA 和 ip 不符合的给予半真半假的数据(可以是 2:8 的比例, 也可以是 1:9 )
4.JS 页面混淆压缩,使用多层嵌套,使用随机的函数名和变量
5.对特定浏览器使用浏览器特性检测,比如用 canvas 检测浏览器指纹,还有 IP 的鼠标点击事件或滚轮事件,如果在规定时间内一次都没有,必定是爬虫

先说这么多方法,如果这些都还能过,可以尝试招安对方 +_+
woostundy
2017-05-06 16:34:12 +08:00
再各种防御办法,也挡不住代理池。
可以换格式,用在前端用 js + 随机 key 解密再展示。
abcbuzhiming
2017-05-06 16:47:14 +08:00
爬虫把自己伪装的足够像一般的浏览器的时候,所有的屏蔽方式就失效了,你难道要影响正常访问吗?
ddd2500
2017-05-06 17:09:10 +08:00
大部分爬虫不会用 v8, 所以 js,images, css 的不会加载。
利用这个思路, 我写过 python 脚本是,分析服务器 apache 日志, 如果一个 IP 在一天内达到多少访问量, 这个 IP 不属于 google, msn 之类的。 那么判断他请求的 URL 资源类型, 如果 非 js, images, css 的请求量大于一半, 直接把 IP 递交给防火墙。
aabbccli
2017-05-06 17:14:01 +08:00
@SlipStupig
什么前端渲染,混淆都挡不住抓包软件的黑手
justtery
2017-05-06 17:41:09 +08:00
ua 的你就放弃吧。
woshinide300yuan
2017-05-06 17:47:20 +08:00
@O14 我去按照你的思路百度学习一下如何操作,谢谢哈!
@abcbuzhiming 对啊,图中的 UA 一封,基本就全封了,很机智又很巧妙的设定。

@SlipStupig 厉害了大哥哥,我只会封 IP 和 UA。因为……我是个渣渣的 FTP 操作员!
@beyoung 好,就这么定了。
@harker 我去学习一下怎么限流,谢谢思路。
ytmsdy
2017-05-06 17:55:58 +08:00
@SlipStupig 你这一整套组合拳太狠了。。
hsmocc
2017-05-06 18:01:09 +08:00
@O14 如果一个小区用一个公网 IP,你的做法是不是会误伤他人?非常奇怪为什么那么多人喜欢封 ip 这种粗暴的方式。
hard2reg
2017-05-06 18:19:33 +08:00
添加暗链接,访问了直接 ban 三分钟- -或者 JS 监听鼠标,方向键。回调添加识别参数
Hardrain
2017-05-06 18:35:25 +08:00
如果支持正则表达式的话
应该不会
这么写 ^Mozilla/5\.0$
没有加多位通配符 .* 的话 其他包含 Mozilla/5.0 的 UA 不会一并被屏蔽.
Hardrain
2017-05-06 18:37:07 +08:00
当然这不是长久之计,爬虫和反爬虫就如病毒和杀软……

30# @hard2reg 说的算是很高端的了。
IP 对方可以扫代理
UA 的话,提供常见浏览器 UA 的网站很多,可以来回改,伪装成正常的浏览器.
Reign
2017-05-06 18:46:32 +08:00
我写爬虫从来都是把浏览器访问你网站的所有 header 复制下来,你来防我吧,防爬虫就是一个伪命题,做的足够好的反爬基本最后把用户和蜘蛛干跑了
jarlyyn
2017-05-06 20:21:49 +08:00
现在不是说都是超频率返回假数据么?
herozhang
2017-05-06 20:47:41 +08:00
之前见过一个网站,需要和站长线下见面,提交身份证和银行流水证明,一顿饭之后通过面试拿到登陆网站的 token 卡。一个下载站做成这样也很奇葩了
SlipStupig
2017-05-06 21:15:16 +08:00
@aabbccli 链接可以动态拼接的,每次请求会产生一个 sessionID 对应一个密钥( session 是有过期时间的),这个密钥产生一个加密链接这个会去请求一个数据库真实的地址,响应的结果的正文放到 DOM 里面随机插入放入不规则的 DIV 里面,你抓包每次地址都不一样,抓包作用有限,逼着你去分析恶心的 JS,如果非要较真的话,我去非洲找 1000 个老黑手动采集,你一点办法没有
woshinide300yuan
2017-05-06 22:00:10 +08:00
@herozhang 太神奇了 还记得 URL 吗
jarlyyn
2017-05-06 22:14:04 +08:00
@SlipStupig

网站上放一堆带木马的小电影网站广告
SlipStupig
2017-05-06 22:33:22 +08:00
@jarlyyn 并没有什么用,人家根本不会下载和解析,如果非要造成困扰,是给一个死递归的函数让浏览器解析,让其爆栈
6oML852dJf9Kn2l7
2017-05-06 22:46:28 +08:00
对于 怀疑对象 用验证码来验证一下,如果是人 就放到白名单里面

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

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

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

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

© 2021 V2EX