对爬虫的限制

不当家不知道柴米贵
以前用彪悍的服务器用习惯了,还真没有资源窘迫的时候
这个月还早,显然现有资源已经撑不到月底了

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

崔凯博客
Powered by WordPress | Theme by ck web design | TOP 顶部
Copyright © 崔凯 All rights reserved. 蜀ICP备12025891号.