Trình thu thập dữ liệu của Facebook

Trình thu thập dữ liệu của Facebook thu thập HTML của ứng dụng/trang web được chia sẻ trên Facebook bằng cách sao chép và dán liên kết hoặc dùng plugin xã hội của Facebook. Trình thu thập dữ liệu thu thập, lưu vào bộ nhớ đệm và hiển thị thông tin về ứng dụng/trang web, chẳng hạn như tiêu đề, nội dung mô tả và hình thu nhỏ.

Yêu cầu về trình thu thập dữ liệu

  • Máy chủ của bạn phải sử dụng phương thức mã hóa gzipdeflate.
  • Bạn phải liệt kê mọi thuộc tính của Open Graph trước khi trang web/ứng dụng đạt ngưỡng 1 MB đầu tiên, nếu không các thuộc tính đó sẽ bị ngừng hoạt động.
  • Đảm bảo nội dung có thể được trình thu thập dữ liệu thu thập trong vòng vài giây, nếu không Facebook sẽ không thể hiển thị nội dung đó.
  • Ứng dụng/trang web của bạn phải tạo và trả về phản hồi có tất cả thuộc tính bắt buộc theo số byte chỉ định trong tiêu đề Range của yêu cầu thu thập dữ liệu hoặc phải bỏ qua hoàn toàn tiêu đề Range.
  • Thêm vào danh sách cho phép các chuỗi tác nhân người dùng hoặc địa chỉ IP (an toàn hơn) mà trình thu thập dữ liệu sử dụng.
  • Đảm bảo ứng dụng/trang web của bạn cho phép Trình thu thập dữ liệu của Facebook thu thập chính sách quyền riêng tư liên kết với ứng dụng/trang web đó.

Tác nhân người dùng và IP của trình thu thập dữ liệu

Các chuỗi tác nhân người dùng của trình thu thập dữ liệu Facebook:

  • facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
  • facebookexternalhit/1.1
  • facebookcatalog/1.0

Để lấy danh sách các địa chỉ IP mới nhất mà trình thu thập dữ liệu sử dụng, hãy chạy lệnh sau đây.

whois -h whois.radb.net -- '-i origin AS32934' | grep ^route  

Các địa chỉ IP này thường xuyên thay đổi.

Ví dụ về phản hồi

...
route:      69.63.176.0/21
route:      69.63.184.0/21
route:      66.220.144.0/20
route:      69.63.176.0/20
route6:     2620:0:1c00::/40
route6:     2a03:2880::/32
route6:     2a03:2880:fffe::/48
route6:     2a03:2880:ffff::/48
route6:     2620:0:1cff::/48
... 

Khắc phục sự cố

Nếu nội dung trang web/ứng dụng của bạn chưa có sẵn tại thời điểm thu thập, bạn có thể buộc thu thập sau khi nội dung có sẵn bằng cách chuyển URL thông qua công cụ Trình gỡ lỗi chia sẻ hoặc bằng cách sử dụng API Chia sẻ.

Bạn có thể sử dụng mã sau để mô phỏng yêu cầu thu thập dữ liệu:

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