robots.txt 或防 bot 規則拒絕了爬蟲(facebookexternalhit)。只有在 Ayrshare 的自動重新託管備援也失敗後才會回傳此代碼,這強烈表示問題出在主機端的封鎖或無法連線的來源。
當 Ayrshare 發佈到 Instagram 或 Threads 時,不會只是把你的 URL 交給 Meta 就放棄。Ayrshare 會自動重試擷取;若 Meta 仍無法存取媒體,Ayrshare 會在自己的 CDN 上重新託管一份副本,並請 Meta 改為擷取該副本。代碼 479 代表連這個備援都無法讓 Meta 擷取到媒體,因此在修正底層的託管問題之前,重試相同的請求並不會有幫助(retryAvailable: false,HTTP 400)。
本頁針對錯誤訊息或詳情提到社群平台無法下載媒體的失敗情況,通常會提及
facebookexternalhit、robots.txt、"Restricted by robots.txt"、"HTTP error code 403" 或 Meta subcode 2207052。若為 Instagram 代碼 138 的長寬比或格式錯誤,請改參閱 Instagram 媒體規範或 Threads 媒體規範。症狀
當爬蟲被封鎖時,你會看到類似下列的錯誤:Error 479 (primary — dedicated, non-retryable)
Error 440 (transient ingestion — retryable)
Instagram Error 138 (fallback — less specific upstream response)
Threads Error 379
了解這些代碼之間的區別:
- 代碼 479:專用的媒體擷取 / 爬蟲封鎖代碼(無法重試)。 這是本頁所涵蓋失敗情況的代碼。當 Meta 即使在 Ayrshare 將媒體重新託管到自己的 CDN 後仍無法擷取媒體(subcode
2207052或媒體擷取相關的文字模式)時,會以retryAvailable: false回傳。其訊息會明確提到facebookexternalhit/Facebot與robots.txt,如果看到 479,你就在對的頁面。請先修正託管設定再重試。 - 代碼 440:暫時性的擷取問題(可重試)。 現在用於真正暫時性的擷取耗盡,例如 Meta subcode
2207032(“download too slow”)/2207003(“create media fail”),或未分類的耗盡情況。此代碼帶有retryAvailable: true;請透過/post/retry重試。 - 代碼 138:較不具體的 Instagram 備援代碼。 當上游回應較不具體時,同樣的根本原因會發出此代碼。138 也用於長寬比 / 格式問題,因此可從
details中的"Restricted by robots.txt"或"HTTP error code 403"辨識出媒體擷取的變體。 - 代碼 379:Threads。 不包含
details欄位。若 Threads 失敗並同時伴隨 Instagram 479 或 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內容
重試失敗的貼文
重試方式取決於你收到的代碼:- 代碼 440(暫時性,
retryAvailable: true):擷取只是逾時,或遇到 Meta 的暫時性錯誤。請直接使用重試貼文端點重試,不需要變更你的託管設定。 - 代碼 479(
retryAvailable: false):即使 Ayrshare 已將媒體重新託管到自己的 CDN,Meta 仍無法擷取,因此重試未變更且仍被封鎖的 URL 會再次失敗。請先修正託管設定:在robots.txt與 WAF 中允許 Meta 的爬蟲(facebookexternalhit/Facebot),或將媒體重新託管到 Meta 可存取的 CDN。用上方的curl指令驗證後,再透過重試貼文端點重試。