> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Meta Media Crawler bị chặn (Instagram / Threads)

> Khắc phục error 479 khi robots.txt hoặc WAF chặn crawler facebookexternalhit của Meta truy cập phương tiện Instagram hoặc Threads của bạn, sau đó kiểm tra quyền truy cập bằng curl.

Mã lỗi **479** là mã Ayrshare chuyên dụng, **không thể thử lại**, được trả về khi Meta không thể tải URL phương tiện của bạn. Nguyên nhân phổ biến nhất là `robots.txt` hoặc quy tắc chặn bot trên máy chủ của bạn từ chối crawler (`facebookexternalhit`). Mã này chỉ được trả về sau khi cơ chế dự phòng tự động lưu trữ lại của Ayrshare cũng thất bại, điều này cho thấy rõ máy chủ đang chặn hoặc nguồn không thể truy cập được.

Khi Ayrshare đăng lên Instagram hoặc Threads, Ayrshare không chỉ đơn giản chuyển URL của bạn cho Meta rồi bỏ cuộc. Ayrshare tự động thử tải lại và, nếu Meta vẫn không thể truy cập phương tiện, sẽ **lưu trữ lại một bản sao trên CDN của chính Ayrshare** và yêu cầu Meta tải bản sao đó. Mã **479** có nghĩa là ngay cả cơ chế dự phòng đó cũng không giúp Meta tải được phương tiện, vì vậy việc thử lại cùng một yêu cầu sẽ không có tác dụng cho đến khi vấn đề lưu trữ gốc được khắc phục (`retryAvailable: false`, HTTP 400).

> [!NOTE]
>
> Trang này đề cập đến các lỗi mà thông báo lỗi hoặc chi tiết đề cập rằng mạng xã hội không thể tải xuống phương tiện, thường tham chiếu đến `facebookexternalhit`, `robots.txt`, `"Restricted by robots.txt"`, `"HTTP error code 403"`, hoặc subcode Meta `2207052`. Đối với lỗi tỷ lệ khung hình hoặc định dạng trên mã Instagram 138, xem [Hướng dẫn phương tiện Instagram](https://www.ayrshare.com/docs/media-guidelines/instagram.md) hoặc [Hướng dẫn phương tiện Threads](https://www.ayrshare.com/docs/media-guidelines/threads.md) thay thế.

## Triệu chứng

Khi crawler bị chặn, bạn sẽ thấy các lỗi như sau:

```json Error 479 (primary — dedicated, non-retryable) theme={"system"}
{
  "status": "error",
  "errors": [{
    "action": "post",
    "code": 479,
    "retryAvailable": false,
    "message": "The social network could not fetch the media from this URL, even after Ayrshare re-hosted it on its own CDN (Instagram/Meta subcode 2207052). Ensure the file is publicly reachable by Meta's crawlers (facebookexternalhit / Facebot) — check your robots.txt and any WAF/bot rules — not only in a browser. Retrying the same URL will not help until hosting is fixed.",
    "details": "Media download has failed.: The media could not be fetched from the provided URI. Restricted by robots.txt (HTTP error code 403). Meta subcode 2207052.",
    "platform": "instagram",
    "status": "error"
  }],
  "postIds": [],
  "id": "..."
}
```

```json Error 440 (transient ingestion — retryable) theme={"system"}
{
  "status": "error",
  "errors": [{
    "action": "post",
    "code": 440,
    "retryAvailable": true,
    "message": "The social network could not ingest the media in time. This is usually transient (for example Meta subcode 2207032 'download too slow' or 2207003 'create media fail'). Retry the post.",
    "details": "Media download has failed.: Media download took too long / could not create media...",
    "platform": "instagram",
    "status": "error"
  }],
  "postIds": [],
  "id": "..."
}
```

```json Instagram Error 138 (fallback — less specific upstream response) theme={"system"}
{
  "status": "error",
  "errors": [{
    "retryAvailable": true,
    "status": "error",
    "code": 138,
    "details": "Media download has failed.: The media could not be fetched from the provided URI. Video download failed with: HTTP error code 403. Restricted by robots.txt",
    "action": "post",
    "platform": "instagram",
    "message": "Instagram Error: Instagram cannot process your post at this time. Please try your post again."
  }],
  "postIds": [],
  "id": "..."
}
```

```json Threads Error 379 theme={"system"}
{
  "status": "error",
  "errors": [{
    "status": "error",
    "code": 379,
    "message": "Error posting to Threads.",
    "action": "post",
    "platform": "threads"
  }],
  "postIds": [],
  "id": "..."
}
```

> [!NOTE]
>
> Phân biệt giữa các mã này:
>
> <ul>
>   <li>**Mã 479: lỗi tải phương tiện / crawler bị chặn chuyên dụng (không thể thử lại).** Đây là mã cho lỗi được đề cập trong trang này. Mã được trả về kèm `retryAvailable: false` khi Meta không thể tải phương tiện (subcode `2207052` hoặc một mẫu văn bản lỗi tải phương tiện) **ngay cả sau khi Ayrshare đã lưu trữ lại nó trên CDN của chính mình**. Thông báo của mã này nêu rõ tên `facebookexternalhit` / `Facebot` và `robots.txt`: nếu bạn thấy 479, bạn đang ở đúng trang. Hãy khắc phục việc lưu trữ trước khi thử lại.</li>
>   <li>**Mã 440: lỗi tiếp nhận tạm thời (có thể thử lại).** Hiện được dùng cho các trường hợp tiếp nhận thực sự tạm thời bị cạn thời gian: subcode Meta `2207032` ("download too slow") / `2207003` ("create media fail"), hoặc các trường hợp cạn thời gian chưa được phân loại. Mã này đi kèm `retryAvailable: true`; hãy thử lại qua [`/post/retry`](https://www.ayrshare.com/docs/apis/post/retry-post).</li>
>   <li>**Mã 138: mã dự phòng ít cụ thể hơn của Instagram.** Được phát ra cho cùng một nguyên nhân gốc khi phản hồi upstream ít cụ thể hơn. 138 cũng được sử dụng cho các vấn đề về tỷ lệ khung hình / định dạng, vì vậy biến thể tải phương tiện có thể được nhận diện bởi `"Restricted by robots.txt"` hoặc `"HTTP error code 403"` trong `details`.</li>
>   <li>**Mã 379: Threads.** Không bao gồm trường `details`. Nếu Threads thất bại cùng với Instagram 479 hoặc 138, nguyên nhân gốc thường giống nhau.</li>
> </ul>

## Tại sao điều này xảy ra

Khi bạn đăng lên Instagram hoặc Threads qua Ayrshare, các máy chủ của Meta lấy phương tiện của bạn từ URL bạn cung cấp. Việc lấy dữ liệu phía máy chủ này sử dụng User-Agent `facebookexternalhit`. Nếu `robots.txt` của máy chủ bạn không cho phép crawler này — hoặc quy tắc WAF/bảo vệ bot chặn nó — Meta không thể tải xuống tệp và việc đăng thất bại.

Việc đăng Facebook Page sử dụng đường dẫn nhập khác, đó là lý do tại sao cùng một `mediaUrl` có thể hoạt động cho Facebook nhưng thất bại cho Instagram và Threads.

## Khắc phục: Cập nhật robots.txt của bạn

### Được khuyến nghị: Cho phép Meta rõ ràng, giữ các bên khác mở

Thêm các quy tắc này vào tệp `robots.txt`:

```txt robots.txt theme={"system"}
User-agent: facebookexternalhit
Allow: /

User-agent: *
Allow: /
```

Điều này cho phép crawler của Meta rõ ràng đồng thời giữ trang web của bạn mở cho các crawler khác (Google, Bing, v.v.).

### Nâng cao: Khóa chỉ cho các publisher mạng xã hội

Nếu bạn muốn chặn hầu hết các crawler nhưng cho phép các nền tảng mạng xã hội:

```txt robots.txt theme={"system"}
User-agent: facebookexternalhit
Allow: /

User-agent: Twitterbot
Allow: /

User-agent: LinkedInBot
Allow: /

User-agent: Pinterest
Allow: /

User-agent: *
Disallow: /
```

> [!WARNING]
>
> Sử dụng một khối `User-agent: *` duy nhất, đặt ở cuối tệp. Các crawler tuân thủ RFC 9309 gộp nhiều nhóm ký tự đại diện thành một, nhưng không phải mọi parser trong thực tế đều tuân thủ RFC — các nhóm ký tự đại diện trùng lặp là một nguồn phổ biến khiến các quy tắc bị loại bỏ hoặc áp dụng không nhất quán.

## Xác minh Meta có thể lấy URL của bạn

Trước khi thử đăng lại, hãy xác minh rằng crawler của Meta bây giờ có thể truy cập phương tiện của bạn. Chạy lệnh này, thay `$URL` bằng URL phương tiện đầy đủ của bạn:

```bash theme={"system"}
curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" \
  -A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" \
  "$URL"
```

<ul>
  <li>**Phản hồi khỏe mạnh:** HTTP 200 hoặc 206 với dữ liệu nhị phân trong body.</li>
  <li>**Phản hồi bị chặn:** HTTP 403 hoặc trang lỗi trống/HTML.</li>
</ul>

> [!NOTE]
>
> Theo tài liệu của Meta, các thay đổi `robots.txt` có thể mất tới 24 giờ để lan truyền qua bộ nhớ đệm crawler của Meta. Nếu việc xác minh thành công nhưng bài đăng vẫn thất bại, hãy đợi và thử lại sau.

## Nếu điều này không khắc phục được

Nếu bạn đã cập nhật `robots.txt` và xác minh với lệnh `curl` nhưng vẫn thấy lỗi:

<ul>
  <li>**Độ trễ lan truyền 24 giờ** — Meta lưu bộ nhớ đệm `robots.txt`. Đợi tối đa 24 giờ sau khi thực hiện thay đổi trước khi thử lại.</li>
  <li>**Quy tắc WAF hoặc chống bot** — Cloudflare Bot Fight Mode, AWS WAF managed bot rule groups và các dịch vụ tương tự có thể chặn dải IP crawler của Meta ngay cả khi `robots.txt` cho phép nó. Kiểm tra nhật ký WAF của bạn và thêm một ngoại lệ cho `facebookexternalhit`.</li>
  <li>**Bảo vệ hotlink / Kiểm tra Referer** — Một số CDN chặn yêu cầu từ IP trung tâm dữ liệu hoặc không có header `Referer` hợp lệ. Đưa crawler của Meta vào danh sách trắng hoặc tắt bảo vệ hotlink cho các đường dẫn phương tiện.</li>
  <li>**Hết hạn URL đã ký / URL presigned** — Nếu URL phương tiện của bạn có dấu thời gian hết hạn (phổ biến với URL presigned S3), đảm bảo nó không hết hạn trước khi crawler của Meta có thể lấy nó. Đối với bài đăng được lên lịch, hãy tạo URL vẫn còn hiệu lực đến sau thời gian đăng đã lên lịch.</li>
  <li>**Lưu trữ phương tiện được quản lý** — Nếu bạn sử dụng dịch vụ như Cloudinary, Imgix hoặc tương tự mà bạn không thể chỉnh sửa `robots.txt`, hãy kiểm tra tài liệu của họ để tìm cài đặt danh sách cho phép crawler Meta/Facebook.</li>
</ul>

Nếu không có cách nào giải quyết được vấn đề, [liên hệ hỗ trợ Ayrshare](https://www.ayrshare.com/contact) và bao gồm:

* `postId` thất bại từ phản hồi lỗi
* Đầu ra của lệnh xác minh `curl` ở trên
* Nội dung `robots.txt` của bạn

## Thử lại bài đăng thất bại

Cách thử lại phụ thuộc vào mã bạn nhận được:

<ul>
  <li>**Mã 440 (tạm thời, `retryAvailable: true`)**: quá trình tiếp nhận chỉ đơn giản là hết thời gian hoặc gặp lỗi tạm thời từ Meta. Hãy thử lại trực tiếp bằng [endpoint Retry Post](https://www.ayrshare.com/docs/apis/post/retry-post.md); bạn không cần thay đổi gì về việc lưu trữ.</li>
  <li>**Mã 479 (`retryAvailable: false`)**: Meta không thể tải phương tiện ngay cả sau khi Ayrshare đã lưu trữ lại nó trên CDN của chính mình, vì vậy việc thử lại với URL bị chặn không thay đổi sẽ lại thất bại. **Hãy khắc phục việc lưu trữ trước**: cho phép các crawler của Meta (`facebookexternalhit` / `Facebot`) trong `robots.txt` và WAF của bạn, hoặc lưu trữ lại phương tiện trên một CDN mà Meta có thể truy cập. Xác minh bằng lệnh `curl` ở trên, sau đó thử lại qua [endpoint Retry Post](https://www.ayrshare.com/docs/apis/post/retry-post.md).</li>
</ul>

## Xem thêm

<ul>
  <li>[Instagram API](https://www.ayrshare.com/docs/apis/post/social-networks/instagram.md)</li>
  <li>[Threads API](https://www.ayrshare.com/docs/apis/post/social-networks/threads.md)</li>
  <li>[Hướng dẫn phương tiện Instagram](https://www.ayrshare.com/docs/media-guidelines/instagram.md)</li>
  <li>[Hướng dẫn phương tiện Threads](https://www.ayrshare.com/docs/media-guidelines/threads.md)</li>
  <li>[Mã lỗi Ayrshare](https://www.ayrshare.com/docs/errors/errors-ayrshare.md#media-fetch-crawler-access-errors)</li>
  <li>[Đăng video thất bại](https://www.ayrshare.com/docs/help-center/technical-support/video-publishing-fails.md)</li>
</ul>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.