通过网站日志做网络爬虫和恶意访问分析

普通爬虫

  • 分别查看有爬虫标志的访问次数和合计的总页面访问次数
cat www.access.log | grep spider -c
cat www.access.log | wc
  • 查看爬虫来ip地址来源
cat www.access.log | grep spider | awk '{print $1}' | sort -n | uniq -c | sort -nr
  • 在防火墙上对其地址做限制
    /etc/sysconfig/iptables 中添加规则
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.0.1/24 -j REJECT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.4.1/24 -j REJECT

service iptables restart 使限制生效

恶意爬虫与访问

一般可以对网站访问日志做分析,通过分析单位时间里面某个ip访问服务器的次数等信息来找出爬虫的来源地址和恶意访问的来源地址

  • 初步筛选
    列出在一分钟内访问网站次数最多的前20位ip地址
cat www.access.log | awk '{print $1 " " substr($4,14,5)}' | sort -n | uniq -c | sort -nr | head -20

这是一个 Linux 命令行脚本,用于统计 Apache 访问日志中最频繁的前 20 个 IP 地址和时间。解释如下:
cat www.access.log:读取 Apache 访问日志文件。
awk '{print $1 " " substr($4,14,5)}':使用 awk 对读取的信息进行处理,提取出访问者的 IP 地址和访问时间。其中,$1 表示文件中每一行的第一个字段(即 IP 地址),$4 表示每一行的第四个字段(即时间戳),substr($4,14,5) 表示截取时间戳的第 14 个字符开始的 5 个字符,即小时:分钟。将提取出来的 IP 地址和时间以空格符号分隔开。
sort -n:对处理后得到的结果按照IP地址进行排序。
uniq -c:对排好序的结果进行去重和统计,并输出对应 IP 地址出现的次数。
sort -nr:对上一步中统计出来的结果按照出现次数进行逆序排序。
head -20:只输出排序后的前 20 个结果,即出现次数最多的前 20 个 IP 地址及其访问时间。
综上,这段命令用于统计 Apache 访问日志中的访问量数据,并显示出访问量排名前 20 的 IP 地址和时间。

  • 单个IP访问时间段
    查看一天中某个ip地址对网站服务器的访问时间分段情况。
cat www.access.log | grep 60.190 .128 .6 | awk '{print $1 " " substr($4,14,5)}' | sort -n | uniq -c | sort -nr | head -20
  • 单个IP访问详情
    对这些命令中表现出的数量比较突出的一些ip地址,一般来说就是有问题的ip了,在配合
cat www.access.log | grep ip地址

可以看看这些高强度的地址访问都在干些什么。是不是正常访问,如果不是就要考虑是否要做限制了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章