给 Agent 的网页抓取工具配了出网白名单,只放了目标站点主域,运行时大量请求超时,抓包发现静态资源和图片走了第三方 CDN 域名。

真正麻烦的地方在于,几个原因的现象几乎一样。白名单只写了主域,未包含子域与 CDN;重定向到另一域名后被防火墙丢弃;DNS 解析到的 IP 不在放行网段;代理层对 CONNECT 方法单独限制。

上来先抓一次完整请求链看实际域名

curl -sS -o /dev/null -w "%{url_effective} %{http_code}\n" -L https://example.com/news/1

随后把 CDN 与重定向目标补进白名单

python -c "print('allow: example.com, *.cdn-example.net, img.example.org')"

接着按解析后的 IP 段放行并保留域名校验

nslookup img.cdn-example.net

回归抓取 20 个页面确认无超时

python crawl_check.py --urls urls.txt --timeout 10

我习惯把每一步的执行时间和结果记在一边,后面复盘省事。

别只看报错消失,验证要多做一步。20 个页面全部抓取成功,平均耗时 1.2 秒,白名单里补了 3 个域名与 2 个网段,超时告警消失。

提醒一点。出网白名单要按实际请求链配而不是按页面主域配,重定向和 CDN 是最常见的两处遗漏。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189