如何控制多 IP 低频率的采集

2017-07-17 18:55:26 +08:00
 tianxiacangshen
查看了一下对方的方式:

几百个 ip,ip 之间基本上很少有三段相同(难以实施屏蔽 IP 和 IP 段);

一个 IP 一小时访问 15 次左右,躲过验证码,并且和正常用户没差别;

几百个 ip 一小时也就采集 5000-6000 次,目前不影响网站速度等性能;

但是,尼玛,看对方模拟发送的 url 配置的参数,总量在一百万以上,这就必须得管管了,不然流量费也要耗掉不少,目前分析对方是模拟 curl 模拟 post 提交的,各项参数齐全,我设置的检测$_SERVER['HTTP_REFERER']已经被他绕过。

还有啥办法?
3349 次点击
所在节点    PHP
26 条回复
ho121
2017-07-17 19:04:59 +08:00
用机器学习的方式判断爬虫 (逃
est
2017-07-17 19:07:25 +08:00
> 但是,尼玛,看对方模拟发送的 url 配置的参数,总量在一百万以上

特征都有了还找不到办法管么。。
tianxiacangshen
2017-07-17 19:15:23 +08:00
@est 是知道,对方是一直变换某一个参数以获取不同的内容,但是这里又不能改掉,毕竟也有真实用户访问
sunwei0325
2017-07-17 19:16:02 +08:00
差不多就行了, 不可能把所有爬虫都干掉的, 误杀用户就不太好了
tianxiacangshen
2017-07-17 19:42:31 +08:00
@sunwei0325 是啊 ,真心一个真实用户都舍不得放弃
lzhr
2017-07-17 19:52:10 +08:00
内容页面登陆可见?
bravecarrot
2017-07-17 19:58:04 +08:00
@lzhr 那也没啥用吧,带个 cookie 完事儿了..
bravecarrot
2017-07-17 20:03:10 +08:00
参数顺序
每次登陆加一个和时间戳相关的 hash
或者在编码问题上搞事情
tianxiacangshen
2017-07-17 20:25:24 +08:00
@lzhr 是,再严格的话就是会员才能浏览了
gidot
2017-07-17 20:28:14 +08:00
如果是 nginx,加这个到配置里:
#禁止 Scrapy 等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
whatsmyip
2017-07-17 20:57:09 +08:00
@gidot 感觉这个反爬措施应该是最弱的吧,再入门的爬虫课程都会提到要改 UA。。。

而且,就这一条,感知后分分钟就能破了。
chengxiao
2017-07-17 21:10:14 +08:00
我很好奇楼主真么侦察到对方的??
whatsmyip
2017-07-17 21:20:07 +08:00
有人愿意找这么多代理爬,看来不是小站而且数据应该还比较有价值?

先说结论吧,爬虫、反爬虫、反反爬虫。。。。。就是一个生生不息的过程,__具体能进行到哪一步就看双方能力和性价比了__(恩,还有最重要的代理数目,不过这是终极对决了)。要是公开数据,而且对方的爬虫行为没有影响系统运行的话,还是睁一只眼、避一只眼吧。。。

不过,攻防的过程确实是挺有意思的,能学到不少知识^_^

目前来看,比较容易上的一个措施就是在 js/css/img 文件上动手脚,找一个站点一定会加载的 js 文件。该 IP 请求 js 资源时做个标记,如果超过两次访问没有带标记则封杀。可能会有误伤

再进一步的话,可以是频率限制,周期长一点,具体的限制根据网站用户来决定,这样对方再多的 IP 也会被限制在一定的范围内。不过这样会消耗一定的资源,看具体日 IP 了,用 redis。

补一句,免费的代理数量是有上限的,而且可用性非常差,要是对方为了爬你的数据买了什么高大上的收费服务的话,不如沟通下,把数据打包卖给他**


之前写爬虫的时候总结的
[http://blog.newnius.com/stream-spider-several-strategies.html#反反爬虫]( http://blog.newnius.com/stream-spider-several-strategies.html#反反爬虫)
tianxiacangshen
2017-07-17 21:21:13 +08:00
@chengxiao 我将每个访客的 ip 地址都临时加入一个表了,包括访问时间,来源页面和要访问的页面,一看就知道什么目的了
whatsmyip
2017-07-17 21:21:39 +08:00
哦,对了。

googlebot 也是爬虫,不要误伤。
zycode277
2017-07-17 21:21:51 +08:00
做状态管理吧,爬虫基本都是线性访问, 用户都是峰访问的。
aqqwiyth
2017-07-17 22:14:44 +08:00
如果需要登录的话,写入一个 cookie,対这个 cookie 做频率判断,统计每日 TOP,封号 多弄几次他就对你没兴趣了
没有 cookie 的直接返回假数据 >逃
duan602728596
2017-07-17 23:05:56 +08:00
233333333,哪个网站
sunwei0325
2017-07-17 23:34:46 +08:00
@aqqwiyth 真实用户也有浏览器禁用 cookie 的
johnnie502
2017-07-18 01:34:33 +08:00
其实最有效的反爬虫策略不是见一个封一个,而是识别以后喂假数据,在对方未察觉的情况下污染对方的结果集,等发觉以后也晚了,早晚就会放弃。

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

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

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

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

© 2021 V2EX