昨天查看 CDN 服务的后台数据,发现近三天北京地域的流量异常:每天都会产生相对大额且固定的流量。查看其 IP,全部是以 203.119.241.* 开头,来自北京阿里云服务器。

为减少不必要的流量损耗,做如下措施。

调取完整日志

首先,确定该 IP 的来源,访问了什么资源,进而推断该 IP 的目的。

从服务商管理界面的「日志下载」栏中,获得 .gz 后缀的日志文本文件。在 Windows 下解压这些文件,使用 VScode 等文件编辑器打开。语言模式设置为 log

分析日志

搜索 203.119.241 得到大量如下条目:

203.119.241.83 HIT 21 [18/Aug/2021:06:14:08 +0800] "GET https://cdn.mirtle.cn/image/2021*******.jpg HTTP/1.1" 200 351796 "-" "aligreen"

参考官方文档,可知一条 log 从左到右的意思为:

ClientIP Hit/Miss/UNKNOWN ResponseTime [Time Zone] "Method URL Protocol" StatusCode TrafficSize "Referer" "UserAgent"

Hit/Miss/UNKNOWN 或占位符 “-”, UNKNOWN 为客户端主动断开链接

IP 命中率 响应时间 请求时间 请求方法 请求URL 请求协议 状态码 响应大小 referer 用户代理
ClientIP Hit/Miss/UNKNOWN ResponseTime(ms) [Time Zone] Method URL Protocol StatusCode TrafficSize(Byte) Referer UserAgent

所以,我看到的异常流量条目意思为:自称 aligreen,IP 203.119.241.832021 年 8 月 18 日 东八区 6:14 分 直接HTTP/1.1 协议请求资源,成功,传输数据 351796 B,响应时间 21 ms

进一步推断如下:

  1. 203.119.241.*:这个 IP 从 ip.cn 等处可以确定是机房 IP,且并非固定 IP,而是完整的 IP 段,是机器访问;
  2. Aligreen 这个 User-agent 从V2ex 中得知,疑似阿里绿网, 但各个 User-agent 解析平台无法找到此信息。若是阿里绿网,可能的目的就是爬取图片,鉴定是否违规。但?为什么要这么做,我并没有在阿里系产品中推广我的网站。
  3. Refer 为空。表明不是从网站上获得图片。事实上,我配置的防盗链只允许从我的网站以及空 Refer 获得图片。我在本地使用我的图片,但不经过阿里的服务器。难道请求被劫持上传到绿网?
  4. 时间。早上 6 点,我并没有打开过任何网站,也没有在本地使用图片。从 log 中还能看到来自凌晨 4 点的请求。可以断定,这不是我自己设备。
  5. 请求资源。这个 IP 段精准地爬取我所有的资源,但请求一些我刚删掉的资源 URL。不清楚其是怎么办到的。可能是和某个搜索引擎合作?但我并不希望 Baidu 之类的搜索引擎检索我的网站。

措施

配置 Robots.txt,填入:

User-agent: aligreen
Disallow: *

当然,这种爬虫,大概率不会理睬 robots.txt。故直接拉黑此 user-agent 或 IP 段。

  • user-agent 黑名单写:aligreen
  • IP 黑名单写: 203.119.241/24

结果

配置完成后,今天再次调取日志,发现此 IP 仍在爬取网站内容:

但全部返回 403。流量也恢复正常。

担忧

不过,这是不是某管理员想要扫描我的网站是否合法……总体而言,它只是让我每天多了 80 M 的流量,还特意分时段爬取,避免占用宽带(也可能是防止被注意到)。

对方并不具有攻击性。但我并不想多付流量费(尽管只有几分钱)。