Facebookクローラー

Facebookクローラーは、リンクをコピーして貼り付けることにより、またはウェブサイト上のFacebookソーシャルプラグインにより、Facebook上でシェアされているウェブサイトのHTMLをスクレイピングします。クローラーは、タイトル、説明、サムネイル画像など、ウェブサイトについての情報を収集し、キャッシュに入れ、表示します。

クローラーの要件

  • サーバーでgzipおよびdeflateのエンコーディングを使用していなければなりません。
  • Open Graphプロパティは、ウェブサイトの最初の1MBより前に記載されている必要があります。そうでない場合、そのプロパティは切り捨てられます。
  • クローラーが数秒以内にコンテンツをスクレイピング可能であることを確認してください。そうでない場合、Facebookはコンテンツを表示できません。
  • ウェブサイトでは、クローラーリクエストのRangeヘッダーで指定されたバイトに従い、必要なすべてのプロパティを含む応答を作成して返すか、Rangeヘッダーを無視する必要があります。
  • クローラーで使用するユーザーエージェント文字列またはIPアドレス(こちらの方が安全)のどちらかを、ホワイトリストに登録してください。

クローラーの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を使用して、スクレイピングを強制的にやり直すことができます。

ウェブサイトのトラブルシューティングを行う必要がある場合は、クローラーリクエストを次のコードでシミュレートできます。

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

クローラーレート制限

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