给 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 是最常见的两处遗漏。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
