robots.txt 或 bot 拦截规则拒绝了该爬虫。
本页针对的是错误信息或详情中提到社交网络无法下载媒体的失败情况,通常涉及
facebookexternalhit、robots.txt、"Restricted by robots.txt"、"HTTP error code 403" 或 Meta 错误 2207052。若是 Instagram 错误码 138 中的宽高比或格式问题,请改为参见 Instagram 媒体指南 或 Threads 媒体指南。症状
当爬虫被阻止时,你会看到类似以下的错误:Error 440 (primary)
Instagram Error 138 (fallback — less specific upstream response)
Threads Error 379
错误码 440 是 Ayrshare 专门针对此故障的错误码,其消息中明确提到了
facebookexternalhit 和 robots.txt —— 如果你看到 440,就说明来到了正确的页面。当上游响应不够明确时,同样的根本原因会以错误码 138 返回;138 也会用于宽高比 / 格式问题,因此媒体抓取相关的 138 变体可以通过 details 中出现的 "Restricted by robots.txt" 或 "HTTP error code 403" 来识别。错误码 379 不包含 details 字段——若 Threads 与 Instagram 440 或 138 同时报错,其根本原因通常相同。出现原因
当你通过 Ayrshare 向 Instagram 或 Threads 发布内容时,Meta 的服务器会从你提供的 URL 抓取媒体。这一服务器端抓取使用facebookexternalhit User-Agent。如果你服务器的 robots.txt 禁止该爬虫,或 WAF/bot 防护规则阻止了它,Meta 将无法下载该文件,发布也会因此失败。
Facebook Page 的发布使用的是不同的接入路径,这就是为什么同一个 mediaUrl 在 Facebook 上可能可用,但在 Instagram 和 Threads 上却失败。
修复方法:更新你的 robots.txt
推荐做法:明确允许 Meta,同时保持对其他爬虫开放
将以下规则添加到你的robots.txt:
robots.txt
进阶做法:仅允许社交平台的爬虫
如果你希望屏蔽大部分爬虫但允许社交媒体平台:robots.txt
验证 Meta 是否能抓取你的 URL
在重试发帖之前,请先验证 Meta 的爬虫现在能否访问你的媒体。运行以下命令,将$URL 替换为你完整的媒体 URL:
- 正常响应: HTTP 200 或 206,且响应体为二进制数据。
- 被阻止的响应: HTTP 403,或空白/HTML 错误页。
根据 Meta 的文档,
robots.txt 的更改在 Meta 的爬虫缓存中最长可能需要 24 小时才能生效。若验证成功但发布仍然失败,请等一段时间后再重试。若仍未修复
如果你已经更新了robots.txt,并通过 curl 命令验证通过,但仍然失败:
- 24 小时的生效延迟 —— Meta 会缓存
robots.txt。请在更改后至多等待 24 小时再重试。 - WAF 或 bot fight 规则 —— Cloudflare Bot Fight Mode、AWS WAF 托管 bot 规则组等服务即使
robots.txt允许,也可能封锁 Meta 爬虫的 IP 段。请检查你的 WAF 日志,并为facebookexternalhit添加例外。 - 防盗链/Referer 检查 —— 某些 CDN 会阻止来自数据中心 IP 或缺少有效
Referer头的请求。请将 Meta 爬虫加入白名单,或对媒体路径关闭防盗链保护。 - Signed URL / Presigned URL 过期 —— 如果你的媒体 URL 带有过期时间(S3 预签名 URL 常见),请确保它在 Meta 爬虫抓取之前不会过期。对于已排期的帖子,请生成在排期时间之后仍有效的 URL。
- 托管媒体服务 —— 如果你使用 Cloudinary、Imgix 等无法编辑
robots.txt的服务,请查阅其文档,了解是否提供 Meta/Facebook 爬虫的白名单设置。
- 错误响应中失败的
postId - 上面
curl验证命令的输出 - 你的
robots.txt内容
