这种爬虫是不是无解?

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 明示,嘿嘿,谢谢,周末愉快~

11236 次点击
所在节点    NGINX
62 条回复
woshinide300yuan
2017-05-06 10:07:19 +08:00
dd99iii
2017-05-06 10:10:59 +08:00
道高一尺魔高一丈
woshinide300yuan
2017-05-06 10:15:06 +08:00
@dd99iii 我觉得也是 = = 已送去感谢!!
zhs227
2017-05-06 10:15:43 +08:00
只要不是把服务器采挂了,对方采就让它采。万一对方是用真实浏览器采的呢,怎么区分
频度高的封 IP,频度低的就只能任由它,根本没有简单的处理的办法
woshinide300yuan
2017-05-06 10:20:14 +08:00
@zhs227 如果到采挂了的底部,是不是挂 CDN 会好点?

还好现在不疼不痒的。

已感谢!
liuhaotian
2017-05-06 10:27:42 +08:00
你可以看到它们都是在一个 C 段下
很直接的一个做法:用 redis 之类做一个记录 key 是 x.x.x.0/24,超过了一个阈值就封禁这个 C 段

更复杂的话 可以用前端再做一层验证
zhs227
2017-05-06 10:29:05 +08:00
挂 CDN 能应对更大规模的开采,如果你的源服务器应付不了那么大的访问量的话。
如果是固定 IP 大规模开,直接排一下序把最顶上的用 iptables 干掉,或者采用某些手段限制访问频次。不痛不痒就算了,随便让它开采。本来开放的 web 就是让人访问的,人和机器访问的界限有时候很模糊。
woshinide300yuan
2017-05-06 10:30:36 +08:00
@zhs227 回答很有帮助,不管是技术还是思路,谢谢。
woshinide300yuan
2017-05-06 10:31:27 +08:00
@liuhaotian 谢谢,我去学习下如何做一个访问频率。V2 就好棒,那天我机械键盘 F5 回弹卡住了,一直刷的封了 IP - - 破键盘~买到残次品了。
O14
2017-05-06 10:35:06 +08:00
把他这几个 IP 封一段时间,重点照顾下这几个 IP,每秒超过 5 个请求就屏蔽一天,让他学乖点,一秒只请求你网站一次
winterbells
2017-05-06 10:47:48 +08:00
关于防爬虫有个想法
可不可以在页面添加几个链接,用 css 隐藏掉(或者用 js 禁止点击?),保证正常浏览网页的人不会去访问这几个链接
有用户访问其中两个或以上链接的时候就暂时禁掉这个 ip [._________.]⊿
hcymk2
2017-05-06 11:07:09 +08:00
$http_user_agent='Mozilla/5.0'
当然这只是临时的方法。别人换个 UA 你就没办法了。
taineric
2017-05-06 11:11:06 +08:00
@winterbells 浏览器预读会不会预读到
quericy
2017-05-06 11:16:36 +08:00
@winterbells #11 11 楼的方法可行,但也可能误伤一些待预缓存功能的浏览器的正常流量;

其实还可以反向扩展:
对页面里加载的一些静态资源的访问可以记录下来,如果访问了页面又没访问静态资源的 ip,可以设计一套规则给 ban 掉(或弹验证码),也能防止一部分非模拟浏览器的爬虫
crab
2017-05-06 11:23:25 +08:00
无解的。BAT 都不能防止。也只能靠限制 IP,出验证码这种方案。
ryd994
2017-05-06 11:25:29 +08:00
不要 regex 匹配,直接检查等于
没有浏览器会只有这一段 UA
另外,这种不是 Nginx 强项,if is evil
ytmsdy
2017-05-06 13:07:43 +08:00
设置个蜜罐页面吧,列表页面里面增加一个隐藏连接,链接的格式和正常的一样,但是在 css 中做限制不显示出来。
如果有 ip 访问蜜罐页面,直接小黑屋伺候。
正常用户是不会去访问蜜罐页面的,误伤率会比较低。
lgpqdwjh
2017-05-06 13:52:21 +08:00
埋点。。 加 js 验证。。ip+url 的 hash 漏桶。。 但都只是提高爬的门槛,仅此而已
beyoung
2017-05-06 14:14:40 +08:00
让他爬!
harker
2017-05-06 14:22:18 +08:00
简单有效的方法就是限流了,每分钟访问超过多少次就屏蔽一段时间,或者给他个验证码输,输入对了就重置请求频次,错了就屏蔽 ip,大公司大多都这么搞的吧

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

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

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

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

© 2021 V2EX