对爬虫的限制

  • Post author:
  • Post category:IT
  • Post comments:0评论

不当家不知道柴米贵

以前用彪悍的服务器用习惯了,还真没有资源窘迫的时候

这个月还早,显然现有资源已经撑不到月底了

sae-forecast

先把常用的600多K文件挪到了七牛的云存储上

结果一天就跑了2G的流量,这么算再跑5天就废了

qiniu-overview

得,偷懒不成,老老实实分析日志

搜索spider,每页50条,竟然有好多好多页的记录:

sae-applog

看来是被各家的爬虫给吃掉了。

解决方法

先用robots.txt屏蔽掉国外的蜘蛛:

User-Agent: AhrefsBot

Disallow: /

User-Agent: Ezooms

Disallow: /

robots的生效需要时间,在生效之前,可以用sae的应用防火墙屏蔽一些IP(非sae用户参考此文

sae-firewall

不过防火墙是全局的,如果想针对某一个目录做限定,可以通过config.yaml来实现。

- hostaccess: if(path ~ "/xxx/xxxx/") deny "123.125.71.12 , 123.125.71.31 , 123.125.71.47 , 123.125.71.95 , 220.181.108.76 , 220.181.108.87, 220.181.108.123, 220.181.108.168 , 220.181.108.105 , 220.181.108.109 , 220.181.108.156 , 220.181.108.160 , 220.181.108.99 , 220.181.108.115 , 220.181.108.139 , 220.181.108.143 , 220.181.108.144 , 220.181.108.163 , 220.181.108.159 , 183.60.212.134 , 183.60.213.39 , 183.60.213.29 , 183.60.214.119"

如上所示,一个IP,一个IP的填毕竟太烦了(还要注意空格!)

时间不够的童鞋(其实是懒)直接干掉整个ip段了事

- hostaccess: if(path ~ "/xxx/xxxx/") deny "123.125.71.0/24 , 220.181.108.0/24 , 183.60.214.0/24 , 183.60.215.0/24"

然后再对漏网之鱼,跳回robots.txt,让他们好好补课。

- rewrite: if(path ~ "/xxx/xxx/" && in_header["User-Agent"] ~ "AhrefsBot" ) goto "http://uicss.cn/robots.txt"

如果是单个的php文件,懒得改config.yaml的,也可以用php搞,返回空白页:

$useragent=$_SERVER['HTTP_USER_AGENT'];

if(substr_count($useragent,"spider")){exit();}

不结尾了,写结尾太麻烦。

总之,问题解决了。

sae-outbytes

相关日志:

发表回复