> ## 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)

> Cách khắc phục mã lỗi 440 (và các mã liên quan Instagram 138 / Threads 379) do robots.txt hoặc quy tắc chặn bot chặn crawler phương tiện của Meta.

Mã lỗi **440** (và các mã liên quan Instagram **138** / Threads **379**) được trả về khi crawler xuất bản của Meta không thể tải xuống URL phương tiện của bạn — phổ biến nhất là do `robots.txt` hoặc quy tắc chặn bot trên máy chủ của bạn từ chối crawler.

<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 lỗi 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](/media-guidelines/instagram) hoặc [Hướng dẫn phương tiện Threads](/media-guidelines/threads) thay thế.
</Note>

## Triệu chứng

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

```json Error 440 (primary) theme={"system"}
{
  "status": "error",
  "errors": [{
    "action": "post",
    "code": 440,
    "message": "The social network could not download media from this URL (for example Instagram/Meta error 2207052). Ensure the file is publicly reachable by the platform's crawlers (e.g. facebookexternalhit), via media bucket's robots.txt file, not only in a browser.",
    "details": "Media download has failed.: The media could not be fetched from the provided URI...",
    "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>
  Mã **440** là mã Ayrshare chuyên dụng cho lỗi này và thông báo của nó nêu rõ tên `facebookexternalhit` và `robots.txt` — nếu bạn thấy 440, bạn đang ở đúng trang. Mã **138** đượ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`. Mã **379** không bao gồm trường `details` — nếu Threads thất bại cùng với Instagram 440 hoặc 138, nguyên nhân gốc thường giống nhau.
</Note>

## 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.
</Warning>

## 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 class="custom-bullets">
  <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.
</Note>

## 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 class="custom-bullets">
  <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

Sau khi bạn đã giải quyết vấn đề truy cập crawler, hãy thử lại bài đăng thất bại của bạn bằng cách sử dụng [endpoint Retry Post](/apis/post/retry-post).

## Xem thêm

<ul class="custom-bullets">
  <li>[Instagram API](/apis/post/social-networks/instagram)</li>
  <li>[Threads API](/apis/post/social-networks/threads)</li>
  <li>[Hướng dẫn phương tiện Instagram](/media-guidelines/instagram)</li>
  <li>[Hướng dẫn phương tiện Threads](/media-guidelines/threads)</li>
  <li>[Mã lỗi Ayrshare](/errors/errors-ayrshare#media-fetch--crawler-access-errors)</li>
  <li>[Đăng video thất bại](/help-center/technical-support/video_publishing_fails)</li>
</ul>
