用iftop流量分析定位爬虫异常带宽占用

如果你发现服务器带宽被跑满,网站访问变慢,很可能是爬虫或恶意请求占用了大量带宽。
iftop 是一款实时流量监控工具,可以显示每个连接的带宽使用情况,帮你精准定位异常 IP。
下面从零开始演示如何安装、使用 iftop 并定位到消耗带宽的爬虫。

核心答案

iftop 基于 libpcap(数据包捕获库)工作,能按 IP 显示实时进出流量。
通过 iftop 可以快速发现占用带宽最多的连接,再结合日志判断是否为爬虫异常。
操作步骤包括:安装iftop → 启动监控 → 观察排名靠前的IP → 确认IP是否为爬虫 → 使用防火墙或Nginx封禁。
整个过程 10 分钟内完成,无需重启服务器。

安装 iftop(两种方式)

CentOS / RHEL / Alibaba Cloud Linux

# 先安装 EPEL 源(如果没装)
yum install -y epel-release
# 安装 iftopyum install -y iftop

Ubuntu / Debian

apt update
apt install -y iftop

安装完成后直接运行 iftop 即可进入实时监控界面。
第一次运行如果提示权限不足,请使用 sudo iftop

快速读懂 iftop 界面

执行 iftop 后你会看到类似下图(文本模拟):

12.5Kb             25.0Kb             37.5Kb             50.0Kb
└─────────────────────┴─────────────────────┴─────────────────────┴─────────────────────
192.168.1.100           => 203.0.113.5           2.00Kb  3.00Kb  5.00Kb
                        <=                       1.00Kb  2.00Kb  3.00Kb
...
  • 左侧列:本机 IP,右侧列:对方 IP。
  • 中间的 => 表示发送(出站),<= 表示接收(入站)。
  • 后面三个数字分别是:最近 2 秒、10 秒、40 秒的平均速率。
  • 顶部显示进出合计流量(上行/下行)。

默认只显示流量最大的前 10-20 个连接,按 P 键可以暂停刷新,方便截图分析。

定位爬虫异常带宽占用的实战步骤

1. 开启 iftop 并指定网卡

如果服务器有多个网卡(比如 eth0 和内网 eth1),建议指定外网网卡:

iftop -i eth0    # 将 eth0 换成你的外网网卡名

常用参数(可以组合):

  • -n 不解析域名,显示 IP 更快
  • -N 显示端口号
  • -B 以字节为单位显示(默认是 bit)

推荐组合:iftop -i eth0 -nN -B

2. 观察占用带宽最高的 IP

启动后等待 30-60 秒,让 iftop 累积流量统计。
你会看到流量最高的连接排在最上面。
记下那个 IP 地址和对应的端口(如果是 80/443 通常是 HTTP 请求)。

3. 进一步确认是否为爬虫

使用 netstatss 查看该 IP 的连接数和状态:

ss -tunap | grep <目标IP>

如果发现大量 ESTABLISHED 连接,且请求频繁,大概率是爬虫。
也可以查看 Web 访问日志(Nginx 为例):

grep <目标IP> /var/log/nginx/access.log | tail -20

观察 User-Agent 是否像爬虫(如 Googlebot、Baiduspider 或自定义的奇怪 UA)。
如果 UA 是搜索引擎官方爬虫,可以不用管;
否则建议封禁。

4. 临时封禁 IP 验证效果

先使用 iptables 封禁 IP 并观察带宽是否下降:

iptables -A INPUT -s <目标IP> -j DROP
iptables -A OUTPUT -d <目标IP> -j DROP

封禁后立即回到 iftop 界面,按 L 键清除流量历史后重新观察,如果带宽恢复正常,说明就是该 IP 导致的异常。

5. 持久化封禁

  • 使用 fail2ban 动态封禁(推荐)
  • 在 Nginx 配置中加入 deny ; 并重载
  • 在 Cloudflare / CDN 防火墙中直接屏蔽 IP

避坑指南

不要直接封搜索引擎官方 IP:例如 Googlebot 的 IP 段是公开的,如果误封会影响收录。
建议复制 IP 到 search.google.com 的抓取工具验证。iftop 只显示实时流量,无法查看历史数据,建议结合 vnstat 或 NetFlow 做长期分析。如果 iftop 里看不到大流量但带宽依然占满,可能是出方向流量(如服务器主动往外发)被限速,检查 iftop 的方向箭头。宝塔面板用户:可直接在软件商店安装 iftop,或在宝塔终端中执行 iftop 命令,结果相同。

高频问题解答

Q1: iftop 命令找不到怎么办?
A: 检查是否正确安装了 epel-release 或更新了 apt 源,安装后重新打开终端。

Q2: 为什么 iftop 显示的总流量和云监控不一致?
A: iftop 只统计当前机器上的流量,云监控可能包含 DDoS 清洗前流量或外网带宽上限,建议以 iftop 为准排查连接。

Q3: 能否通过 iftop 定位到具体进程?
A: iftop 不能直接显示 PID,可以配合 netstat -tunap | grep IP 看到进程号,或用 iotop 观察网络 I/O。

Q4: 封禁 IP 后网站还是慢?
A: 可能同时存在多个异常 IP,建议继续用 iftop 观察,直到带宽降到正常水平,也可以考虑升级带宽防御。

如果你正在处理 iftop流量分析定位爬虫异常带宽占用,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
零基础升级修复K8s Ingress
下一篇
分表分库优化海量跨境商品数据库检索的最佳实践
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意