Краулер Facebook

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

Доступ к краулеру

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

Если во время скрапинга материалы недоступны, его можно выполнить повторно, когда материалы станут доступны. Для этого воспользуйтесь отладчиком публикаций.

Идентификация краулера

Для идентификации краулера используются следующие строки запросов программного агента:

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

или

facebookexternalhit/1.1

Один из этих программных агентов можно настроить на предоставление краулеру закрытой версии страницы только с метаданными, без самих материалов. Это позволяет не только оптимизировать результативность, но и защитить материалы, доступные только по платной подписке.

Начиная с 28 мая 2014 г., в краулере также используется следующая строка запросов программного агента:

Facebot

Facebot — это робот Facebook для веб-краулинга, который помогает улучшить результативность рекламы. Facebot работает максимально «вежливо». Он пытается получить доступ к каждому веб-серверу только один раз за несколько секунд, что соответствует отраслевым стандартам, и делает это с учетом ваших настроек robots.txt.

Имейте в виду, что Facebot выполняет проверку на предмет изменений в вашем файле robots.txt только несколько раз за день, так что некоторые обновления могут быть обнаружены не сразу.

Ограничение периодичности краулинга

В коде страниц и объектов можно указать периодичность, с которой краулер Facebook будет проверять наличие новых материалов. Если краулер выполняет скрапинг слишком часто, воспользуйтесь свойством og:ttl объекта, чтобы ограничить доступ для краулера.

Предоставление доступа краулеру

Предоставить доступ краулеру можно двумя способами.

  1. Добавьте указанные выше строки запросов программного агента в список разрешенных, после чего выполнять дополнительные действия по обслуживанию не потребуется.
  2. Добавьте IP-адреса, используемые краулером, в список разрешенных, что гораздо безопаснее.

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

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

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

# For example only - over 100 in total
31.13.24.0/21 
66.220.144.0/20    
2401:db00::/32  
2620:0:1c00::/40  
2a03:2880::/32 

Приемлемая задержка

Необходимо убедиться в том, что краулинг ресурсов, указанных в URL, выполняется достаточно быстро, не более нескольких секунд. Если краулер не обеспечивает должную скорость обработки, то ресурс не удастся показать на Facebook.

Канонические URL

Чтобы получить материалы, которыми люди хотят поделиться, наш краулер разрешает URL, который вы назначили в качестве канонического.

Рекомендуется для всех версий страницы указывать канонический URL, используя для этого тег og:url (предпочтительно) или link rel="canonical". В HTML-код канонического URL также необходимо добавить тег og:url, чтобы указать, что сам ресурс является каноническим.

<meta property="og:url" content="https://example.com/path" />

Благодаря этому гарантируется, что все действия, такие как отметка «Нравится» и «Поделиться», находятся по одному и тому же URL, а не распределены по различным версиям страницы.

Это также означает, что различные версии одних и тех же материалов будут рассматриваться краулером как один и тот же материал, даже если они размещены в разных поддоменах или доступны по обоим протоколам http:// и https://.

При необходимости наш краулер может пройти всю цепочку перенаправления, чтобы разрешить канонический URL.

Перенос материалов и обновление URL

Если вы решили переместить материалы с одного URL на другой, то отметки «Нравится» и сведения о публикациях не будут перемещены автоматически. Чтобы сохранить данные об отметках «Нравится» и публикациях, выполните указанные ниже действия.

1. Исключите краулер Facebook из запроса на перенаправление HTTP.

Используйте запрос на перенаправление HTTP 301 или 302, чтобы перенаправить людей на новый URL, когда они посещают страницу по старому URL.

При этом краулер должен по-прежнему иметь доступ к старой странице, поэтому исключите программный агент краулера из запроса на перенаправление HTTP и отправляйте этот запрос только клиентам, отличным от краулера Facebook.

HTML-код старого URL должен по-прежнему включать теги Open Graph (включая тег og:url, указывающий сам на себя) и возвращать HTTP-отклик 200, когда краулер загружает этот URL.

Кроме того, после изменения URL вы должны убедиться в том, что ваша запись AAAA обновляется должным образом, поскольку краулер будет ее искать и вернет код 0, если не найдет.

2. Укажите старую страницу в качестве канонического URL для новой страницы.

Добавьте в HTML-код нового URL следующий тег:

<meta property="og:url" content="https://example.com/old-url" />

Хотя мы рекомендуем использовать тег og:url, этот метод также поддерживает тег rel=canonical.

Он сообщает нашему краулеру, что в качестве канонического URL используется старое местонахождение. Краулер будет использовать его для создания количества отметок «Нравится» на странице. Новые отметки «Нравится» в любом из местонахождений будут агрегироваться в каждом из этих мест.

В этом случае страница по старому URL должна быть документом с тегами Open Graph и возвращать отклик HTTP 200, по крайней мере когда ее загружает краулер Facebook. Старый URL должен содержать собственный тег og:url, указывающий на этот же URL. Если вы хотите перенаправлять другие клиенты, которые посещают этот URL, вы должны отправлять отклик HTTP 301 всем клиентам, отличным от краулера Facebook.

О том, как распознать краулер Facebook, читайте в нашем руководстве Рекомендации по публикации.