Facebook 크롤러

Facebook 크롤러는 링크를 복사해서 붙여넣거나 Facebook 소셜 플러그인을 통해 Facebook에서 공유된 앱이나 웹사이트의 HTML을 크롤링합니다. 이 크롤러는 제목, 설명, 썸네일 이미지 등과 같이 앱이나 웹사이트에 대한 정보를 수집, 캐싱 및 표시합니다.

크롤러 요구 사항

  • 서버는 gzipdeflate 인코딩을 사용해야 합니다.
  • 앱 또는 웹사이트에서 처음으로 1MB를 스크래핑하기 전에 오픈 그래프 속성을 입력하지 않으면 잘리게 됩니다.
  • 몇 초 이내에 크롤러가 콘텐츠를 크롤링하지 못하면 Facebook에서 해당 콘텐츠를 표시할 수 없습니다.
  • 앱이나 웹사이트는 크롤러 요청의 Range 헤더에 지정된 바이트에 따라 모든 필수 속성을 포함한 응답을 생성 또는 반환하거나, Range 헤더 자체를 무시해야 합니다.
  • 크롤러가 사용하는 사용자 에이전트 문자열 또는 IP 주소(더욱 안전함)를 허용 리스트에 추가합니다.
  • 앱 또는 웹사이트에서 Facebook 크롤러가 앱 또는 웹사이트와 관련된 개인정보처리방침을 크롤링하도록 허용합니다.

크롤러 IP 및 사용자 에이전트

Facebook 크롤러 사용자 에이전트 문자열:

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

크롤러가 사용하는 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를 사용하여 콘텐츠를 사용할 수 있게 되면 크롤링을 강제로 실행할 수 있습니다.

다음 코드로 크롤러 요청을 시뮬레이션할 수 있습니다.

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