你在这里


采集

屏蔽采集者专门进行站内搜索的爬虫

James Qi 2015年11月4日 - 11:54 发布

  网站内容抓取采集真是中国互联网的一大特色,我们做了这么多年网站,一直都遇到各种各样对我们内容进行采集、复制的家伙。前一阵子发现一个网站 www.postcodequery.com 具体和我们的 www.postcodebase.com 几乎内容一样,也真是煞费苦心。no

  另外近期在搬迁一些Wiki网站到云服务器上的时候,发现RDS会急剧升高、卡死,从MySQL进程来看是一些内部搜索语句造成的,显然正常的访问者搜索不会这么多、这么快,只能是机器人采集才会这样,当时来不及查就临时把内部搜索功能关闭了。

  但关闭功能毕竟不是长久之计,今天早上再次排查、处理,过程如下:

参加Drupal大数据采集培训

James Qi 2014年11月6日 - 15:41 发布

  10月份在公司进行Drupal内部讲座的准备过程中,需要在网上搜索一些资料,正好看到北京亚艾元软件有限责任公司近期有两场培训:

  看了一下,还很对我们的胃口,前面一个数据采集我们以前还涉及不多,但可能以后需要用到,后面一个对Drupal的全面介绍以及微信方面的扩展开发也很不错。我们以前基本上都没有特别参加外面的培训,都是自己摸索学习的,有比较系统、深入的培训肯定好了,所以很快就定下来要参加,武汉的自然会去,上海的稍微犹豫一下后,也当天就联系报名确定了。

反采集程序的报告解读

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标准第三方模块的方式等。因为完成采用自己编程实现,所以可以对判别标准、屏蔽方式做各种修改尝试,应对各种采集者。


版本历史:

最近购买了火车头采集软件

James Qi 2013年4月17日 - 11:31 发布

  我们很多年前开始做网站就一直遇到被采集的问题,很多次都是让我们服务器不堪负重,需要排除、采取针对性措施来屏蔽,所以我一直对采集这种方式很排斥。另外,国内太多用采集做成的复制网站、山寨网站、垃圾网站了,在搜索引擎中也不会有长期良好表现,违反了SEO的原则,所以我们一直都没有用采集的方式来获取数据。

  但这两年也一直有尝试采集软件的想法,我们不会去复制网站,但可以用来获取需要的一些数据,然后再做处理利用,去年也提过但一直没有实施,今年初再次提到这个想法,我也去看过、比较过一些采集软件,火车头采集软件在这方面比较领先,最近同事去详细了解、试用,感觉还不错,我们就干脆去购买了“旗舰版”,花大几百元获得一些比免费版多的额外功能以及技术支持还是值得的。

  最近几周同事尝试去采集了几个数据,积累了一些经验,包括采集规则制定、采集时间安排、频率合理使用、代理IP使用等,算是基本熟悉了用法,我以后有时间也再去详细了解。

  另外,Flash等形式的页面还无法使用软件来采集,我们以前曾经在IE的临时文件夹中找到相应的xml文件,现在依然可以用这个办法来人工获取数据。

自由标签:

Apache中设置屏蔽IP地址和URL网址来禁止采集

James Qi 2012年11月23日 - 11:31 发布

  只要是建有数据量比较多的网站,几乎不可避免采集的情况,这方面我们已经有多年的对付经验,主要是通过分析Web访问日志,找到采集的规律,相应来设置屏蔽IP地址或者URL网址来解决。

  国内的Linux服务器上我们都安装了Squid作为Apache的前端缓存,所以我们遇到采集的情况就分析Squid的日志,在squid.conf文件中进行设置屏蔽,然后重启Squid服务就可以。

  近期租用的国外Linux服务器上默认是没有Squid的,我们也就只用了Apache作为Web服务器,修改了httpd.conf来让Apache的日志文件显示更详细的虚拟主机域名、User-Agent等信息,以便遇到采集的情况可以分析。

  前一阵子遇到来自固定某个或者某段IP的采集,我们就修改httpd.conf文件,在影响的主机设置中添加这样的代码:

Order Deny,Allow
Deny from 125.115.2.85
Deny from 91.228.196.234

  然后重启Apache服务就可以。

订阅 RSS - 采集