Краулер Facebook

Краулер Facebook выполняет скрапинг HTML-данных приложений или сайтов, опубликованных на Facebook путем копирования и вставки ссылки или с помощью социального плагина Facebook. Краулер собирает, кэширует и показывает информацию о сайте или приложении, в том числе название, описание и миниатюрное изображение.

Требования краулера

  • Сервер должен использовать кодировки gzip и deflate.
  • Все свойства Open Graph должны быть перечислены до первого 1 МБ сайта или приложения, иначе они не будут учтены.
  • Скрапинг содержимого должен выполняться за несколько секунд, иначе Facebook не сможет отобразить контент.
  • Ваше приложение или сайт должны либо генерировать и возвращать ответ со всеми необходимыми свойствами согласно байтам, указанным в заголовке Range запроса краулера, либо полностью игнорировать заголовок Range.
  • Добавьте в список доступа строки запросов пользовательских агентов или IP-адреса (более безопасный вариант), используемые краулером.
  • Убедитесь, что ваше приложение или сайт позволяют краулеру Facebook просматривать URL политики конфиденциальности, связанной с приложением или веб-сайтом.

IP-адреса краулера и программные агенты

Строки запросов программного агента краулера Facebook:

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

Чтобы получить актуальный список используемых краулером IP-адресов, выполните следующую команду:

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

Эти IP-адреса часто меняются.

Пример ответа

...
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
... 

Устранение проблем

Если во время скрапинга контент сайта или приложения недоступен, скрапинг можно повторить позже. Для этого передайте URL с помощью отладчика репостов или воспользуйтесь API Sharing.

Чтобы эмулировать запрос краулера, используйте этот код:

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