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の各エンコーディングのみを承認します。そのため、サーバーが適切なエンコーディングを使用していることを確認してください。

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

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

  1. 前述のユーザーエージェント文字列をホワイトリストに登録する。これはアップキープを必要としません。
  2. クローラーが使用するIPアドレスをホワイトリストに登録する。こちらの方が安全です。

クローラーが使用するIPアドレスのリストを取得するには、次のコマンドを実行します。

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

IPアドレスは頻繁に変わりますが、これで最新の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日数回のみです。そのため更新が反映されるのは次回のクロール時となり、すぐには反映されません。