爬虫大量改变用户代理

信息安全 阿帕奇 机器人
2021-08-22 04:50:33

今天早上,我注意到一个 IP 地址有点在爬我的网站,尽管它在几分钟内多次查询同一个页面。然后我注意到它正在使用不同的用户代理来执行此操作。

我决定通过分析 Apache httpd 日志来检查发生了什么

  cut -d' ' -f1 /var/log/apache2/*access.log | # Extract all IP-addresses from the server logs
  sort -u |                                    # List every IP-address only once
  while read ip; do                            # Cycle through the list of IP-addresses
    printf "$ip\t";                            # Print the IP-address 
    grep ^$ip /var/log/apache2/*access.log |   # Select log entries for an IP-address
    sed 's/^.*\("[^"]*"\)$/\1/' |              # Extract the user-agent
    sort -u |                                  # Create a list of user-agents
    wc -l;                                     # Count the unique user-agents 
  done | 
  tee >( cat >&2; echo '=== SORTED ===' ) |    # Suspense is killing me, I want to see the progress while the script runs...
  sort -nk2 |                                  # Sort list by number of different user agents
  cat -n                                       # Add line numbers

这导致了一个很长的列表:

  line  IP-address      number of different user-agents used.
...
  1285  176.213.0.34    15
  1286  176.213.0.59    15
  1287  5.158.236.154   15
  1288  5.158.238.157   15
  1289  5.166.204.48    15
  1290  5.166.212.42    15
  1291  176.213.28.54   16
  1292  5.166.212.10    16
  1293  176.213.28.32   17
  1294  5.164.236.40    17
  1295  5.158.238.6     18
  1296  5.158.239.1     18
  1297  5.166.208.39    18
  1298  176.213.20.0    19
  1299  5.164.220.43    19
  1300  5.166.208.35    19

因此,有数十个 IP 地址在几分钟内摆弄用户代理。我对照已知机器人的私人小日志检查了前 50 个 IP 地址,但没有匹配项。

这是单个 IP 地址的访问日志的样子(为了便于阅读,垂直和水平截断):

"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36" 
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36"

其他人看到了吗?有人知道这里发生了什么吗?

3个回答

这要么只是简单的爬虫、渗透测试、浏览器随机化,要么是其中一些的混合。


网络蜘蛛

许多网络蜘蛛允许您在抽取网站内容的同时随机化您的用户代理。这实现起来相当简单,我的一些网络蜘蛛也做同样的事情。然而,在爬取时随机化用户代理是不好的设计。


浏览器随机化

有一些浏览器插件,例如 Secret Agent,可让您随机化浏览器指纹值以避免检测。

由于您只看到了 19 次以上的尝试,因此他们也有可能每人浏览了大约 15-19 页,但他们一直这样做似乎很奇怪。甚至可能是一个人为每个页面加载切换他们的 VPN 和浏览器设置,这将表明下一级锡箔帽。


渗透测试

自动渗透测试工具在访问页面时也会随机化其用户代理。


结论

如果没有看到更多正在发生的事情,除了做出一些猜测之外,我们无法真正告诉您正在发生的事情。有抓包数据吗?这将有很大帮助。

正如 schroeder 所说,这听起来像是自动扫描。扫描工具有一堆用户代理并循环浏览它们。看看自动化的网络渗透测试工具,例如 Uniscan、Arachni、Golismero 等……您可以尝试在您的网站上运行其中一个工具,看看是否得到相同的结果。

只是一个疯狂的猜测,但如果您的服务器正在提供路过式下载,则可能需要进行一些服务测试。但我想说一些(行为不端?)爬虫是更可能的解决方案。