事情本身不复杂,线索都在日志里。排查蜘蛛行为时发现日志里有个 UA 为 Wget/1.21.3 的客户端,一天抓了六万多条,全站文章被完整复制到第三方站点,之后蜘蛛开始抓到对方域名下的同款页面。

原因不止一个,得分开看。镜像工具默认不带 robots 校验,按链接全量下载。也可能是对方的复制站没有设 canonical,被当成独立站点收录。

还有一种情况,日志里这些请求和蜘蛛混在一起,统计抓取预算时被算错。

上来先统计非蜘蛛 UA 的抓取量

grep -iE "wget|httrack|python-requests" access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head

随后在 Nginx 层挡掉常见镜像工具

if ($http_user_agent ~* "(wget|httrack|libwww-perl)") { return 403; }

等前面都确认过,再确认被镜像页面是否指向本站

curl -s https://mirror.example.net/post/1 | grep -i canonical

改完先别撤,确认这几项。日志里 Wget 请求全部 403 且数量归零,镜像站的抓取量下降,本站文章在搜索结果里的规范地址仍指向 www 域名。

提醒一点。挡 UA 只是止损,真正要处理的是内容被整体复制,canonical 加版权声明比封 UA 更有用。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189