1. 查原始服务器日志
Nginx 常见访问日志位于 /var/log/nginx/access.log,Apache 常见位于 /var/log/apache2/access.log。应至少保留请求时间、来源 IP、方法、URL、状态码、响应字节、Referer 和 User-Agent。
rg -i "spider|bot|crawler" /var/log/nginx/access.log
# 不要只看 UA,还要核对 URL、时间和状态码User-Agent 是线索,不是身份学证明。它可以被伪造,也可能随平台更新;未公开稳定 UA 的平台不应被自动归因。
2. 核对状态码
200本次响应成功,仍需检查 Content-Type 和正文。
301/308永久跳转;检查最终地址和循环。
302/307临时跳转;查明是否被登录、地区或风控页截获。
403/429被权限、WAF 或限速拒绝;需检查规则和频率。
404/410资源不存在或已移除;不应用首页 HTML 伪装 200。
5xx服务器或上游错误;查日志并确认重试后是否恢复。
3. 检查 robots.txt 与响应类型
先确认 /robots.txt 真正返回 text/plain 和 robots 规则,不是 SPA 回退首页。通用 User-agent: * 允许公开页即可覆盖未单独列出的爬虫;不必为每个未经官方确认的 UA 堆叠规则。
curl -I https://example.com/robots.txt
curl -sS https://example.com/robots.txt4. 检查服务端 HTML 是否有正文
很多网站在浏览器执行 JavaScript 后完整,但原始 HTML 只有一个空容器。爬虫即使获得 200,也可能没有拿到标题、产品定义、价格或链接。
curl -sS -A "ExampleCrawler" https://example.com/ \
| rg -n "<h1|canonical|application/ld\\+json|产品名称"对 CSR 页面,优先将公开核心信息改为 SSR/预渲染,而不是假设所有爬虫都会完整执行 JavaScript。
5. 再分别验证索引与 AI 引用
日志中的 200 只是抓取证据。搜索索引应通过官方站长平台、搜索结果和索引报告单独检查;AI 可见度应使用固定问题池、固定平台、时间戳和完整回答快照单独记录。不要将模型 API 的非联网回答冒充为真实搜索产品结果。