Facebookクローラー

コンテンツはウェブページの形でFacebookにシェアされるのが最も一般的です。リンクが初めてシェアされると、FacebookクローラーはそのURLのHTMLをスクレイピングして、タイトル、説明、サムネイル画像など、コンテンツに関する情報を収集、キャッシュし、Facebookで表示します。Facebookで直接シェアされているウェブページ以外にも、ウェブページのクロールをトリガーできる他の方法があります。たとえば、ウェブページでFacebookのソーシャルプラグインを実装していると、クローラーにそのウェブページをスクレイピングさせることができます。

クローラーの識別

Facebookクローラーは次のユーザーエージェント文字列のいずれかによって識別できます。

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

または

facebookexternalhit/1.1

クローラーによるアクセス

Facebookクローラーは、スクレイピングとシェアが正しくできるよう、コンテンツにアクセス可能である必要があります。つまりページがクローラーに対して公開されている必要があります。コンテンツに対してログインが必要であったり、アクセスを制限していたりする場合、Facebookクローラーをホワイトリストに登録してください。Facebookのクローラーはgzipおよびdeflateのエンコーディングのみを受け入れます。そのため、サーバーが適切なエンコーディングを使用していることを確認してください。クローラーはページの最初の1MBのみをスクレイピングすることに注意してください。そのため、Open Graphプロパティはその前に記載されている必要があります。

スクレイピング時にコンテンツにアクセスできなかった場合は、アクセス可能になってからシェアデバッガーを通じてURLを渡すかグラフAPIを使用することでスクレイピングをやり直すことができます。

クローラーにアクセスを許可するには、次の2つの方法があります。

  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はリソースを表示できません。

クローラーレート制限

ページやオブジェクトにラベル付けすると、Facebookクローラーが新規コンテンツがないかチェックする間隔を変更できます。クロールの頻度が高すぎる場合、og:ttlオブジェクトプロパティを使用して、クローラーのアクセスを制限します。

Facebotクローラー

2014年5月28日より、次のユーザーエージェント文字列でもクローラーを確認できるようになりました。

Facebot

Facebotは、Facebookのウェブクローリングロボットで、広告パフォーマンスを向上させるために役立ちます。Facebotは洗練されたロボットです。業界基準に従って、数秒ごとに1回のみ各ウェブサーバーへアクセスを試み、利用者のrobots.txt設定を尊重します。

Facebotがサーバーのrobots.txtファイルの変更を確認するのは1日数回のみです。そのためアップデートが反映されるのは次回のクロール時となり、すぐには反映されません。