你在这里


防采集

反采集程序的报告解读

James Qi 2013年12月10日 - 09:46 发布

  最近把自己编写的网站防采集程序进行了升级,添加了每日邮件报告的功能,各台服务器在每天凌晨将前一天被屏蔽的IP信息汇总发送邮件到指定邮箱。典型的邮件内容摘录如下:

101 Bad IPs Found on 2013-12-11 from XXX.XXX.XXX.XXX

自由标签:

从Apache访问日志统计IP访问数,发现采集者屏蔽

James Qi 2013年11月8日 - 15:31 发布

  在Drupal网站中使用PHP程序来屏蔽采集者效果还不错,可以自己任意设定判断标准。不过我们以前的MediaWiki平台上的网站还没有使用这套PHP程序来屏蔽,最近发现采集又太多了,搞得服务器负载太高,老是从Apache日志人工排查太麻烦、太慢(以前的办法见博文《Apache中设置屏蔽IP地址和URL网址来禁止采集》),今天花一些时间编写了一个小程序来统计日志中的IP访问数,程序很简短,如下:

自己编写网站防采集程序

James Qi 2013年7月9日 - 15:02 发布

  对于我们这种数据量很大的网站,面临的一个麻烦是总有人来采集,以前多使用过人工检查、屏蔽的办法,这种办法有效果但太费精力,前段时间也找了插件来自动限制最大连接数,但存在误屏蔽搜索引擎的问题,最近老夫下决定亲自操刀写程序,把这些采集者都斩草除根,虽然编程麻烦但效果好。

  思路是在Drupal的模板文件中嵌入PHP程序代码,读取$_SERVER参数并记录到数据库中,通过对参数及访问频率的判断来决定是否要访问者提交验证码,如果验证码错误或者不填写的次数过多则屏蔽,可以通过host反向dns查找来判别常见搜索引擎。

  这个程序还稍微有点复杂,以前修改开源PHP程序都是直接上手,这个程序还编写了流程图,数据库表结构也是自己规划的,为了避免拉慢速度,MySQL中采用了Memory引擎,对于多是临时访问记录已经够用了。程序写得很烂,就不放在博客中了。

  这个程序anti-scraping.php上周调试了几天,本周刚刚投入试用,已经可以从日志中看到效果,还需要不断改进,例如增加黑名单、白名单、尝试改用Drupal标准第三方模块的方式等。因为完成采用自己编程实现,所以可以对判别标准、屏蔽方式做各种修改尝试,应对各种采集者。


版本历史:

订阅 RSS - 防采集