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 也用於長寬比 / 格式問題,因此可從 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 的變更可能需要最多 24 小時才會在 Meta 的爬蟲快取中生效。若驗證成功但貼文仍失敗,請稍後再重試。若這樣仍無法修復
如果你已更新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 爬蟲加入白名單,或停用媒體路徑的盜連保護。 - 簽章 URL / 預簽章 URL 過期 — 若你的媒體 URL 帶有到期時間戳(S3 預簽章 URL 常見),請確保它不會在 Meta 爬蟲抓取前就過期。排程貼文請產生在排程時間後仍有效的 URL。
- 代管媒體服務 — 若你使用 Cloudinary、Imgix 等無法直接編輯
robots.txt的服務,請查閱其文件關於 Meta/Facebook 爬蟲白名單設定。
- 錯誤回應中失敗的
postId - 上述
curl驗證指令的輸出 - 你的
robots.txt內容
