インターネット上のボットと聞いて、まず何を思いますか?
おそらくネガティブな印象でしょう。CAPTCHAやパスワード窃盗、その他、悪性ボットが引き起こす面倒を思い起こす人が大半だと思います。
しかし実際は、インターネット上にはお利口なボットがたくさん存在します。GoogleのサーチクローラーやStripeのペイメントボットなどです。Cloudflareは、良性のボットがブロックされないように手作業で「検証」を行っており、お客様は検証済みのボットを許可リストに登録することができます。残念ながら、当社で検証するより速いペースで新しいボットが出現します。その対策として、当社は本日、Friendly Botsを発表します。
まず、背景を少し説明しましょう。
ボットの検証方法
当社は一般に、パブリックフォームを通して良性ボットを見つけます。どなたでもボットをお送りいただけますが、ボットオペレーターがフォームで必要情報を提供していただけると助かります。ボット名、公開ドキュメント、ユーザーエージェント(または正規表現)など標準的な項目の情報を、続いてボットの妥当性確認に役立つ情報の入力をお願いします。一般的には次の4つの方法があります。
IPリスト
お客様のボットが使用するIPアドレスのリストをお送りください。静的リストでなくても構いません。変化する動的ページで結構です。URLをお送りいただければ、当社で毎日情報を更新します。IPはドキュメントが公開されていて、お客様のボット専用でなくてはなりません。共用のIPアドレス(プロキシサービスで使っているものなど)を送られますと、システムがリスクを検知して協力を拒否します。他のトラフィックを偶発的に許可することは避けたいからです。
rDNS
これは面白いやり方です。DNSについてはお聞きになったことがあるでしょう。インターネットの電話帳で、ドメイン名をIPアドレスへマッピングするシステムです。rDNSはその逆方向に働くもので、IPアドレスからの演繹により関連ドメイン名を割り出します。
つまり、ホスト名のサフィックスをいただければ、ボットのアイデンティティはたいてい検証できます。
ユーザーエージェント + ASN検証
一貫して同じネットワーク(「ASN」と呼ばれます)を発信元とし、ユーザーエージェントが同一のボットを、検証できる場合もあります。ただし、この方法はいつも使えるとは限りません。トラフィックがスプーフィングしやすくなってしまうからですが、当社では検証方法として自信を持って使える場合が多いです。
機械学習
そして、最も派手な方法です。Cloudflareは、毎秒3200万件以上のリクエストをモニターし、それらのリクエストをモデルにフィードして、良性ボットのプロフィールを正確に把握できるようにしています。先述の検証方法が難しい場合でも、機械学習を活用してお客様のボットを見つけられる可能性は十分あります。ただし、有用なパターンを検知するには、十分な量のトラフィック(数千件のリクエスト)が必要です。
検証済みボットの登録承認は、品質テストを実施しすべてが安全であることを確認してから出されるため、通常は数週間かかります。しかし、前述の通り、多くのユーザーがボットの許可リスト登録を必要としているにもかかわらず、このプロセスは多くの場合、信頼するパートナーと大規模ボットに限定せざるを得ません。
大規模グローバルサービスでないボットの場合は?
当社では、検証済みボット(Verified Bots)の「個人」バージョンの希望者がいればわかるように、常に注視(Twitterのチェックも)しています。
たとえば、いくつかの個人Webサイトをクロールするモニタリングサービスを開発した人がいるとします。このボットは、次に挙げる基準を一つも満たしていないため、当社としては検証する意味がありません。
幅広いインターネットを対象とするサービス
良性の挙動を客観的に実証
robots.txtなどのインターネット標準に準拠
そのボットは作成者のもので、ご本人には良いかもしれませんが、当社の他のユーザーはそうは思わないかもしれません。他人のボットが自分のインフラストラクチャ内へいつでも入ってこれる状況を想像してみてください。
また、こんなケースもあります。たとえば、特定のプロキシを使い、人とボットの両方がインターネットにアクセスしているという理由で、Cloudflareがそれを自動プロキシとラベリングしたとします。Cloudflareの他のお客様には影響を与えずに、ご自分のサイトへはこのトラフィックを許可したいと思われるかもしれません。
最後に、スタートアップ企業で勤務し、自社で自動サービスを稼働しているが、Cloudflareが要件とする規模にまだ達していないという方で、それでもサービスを許可リストに載せる方法が必要というケースです。
Friendly Botsを発表
上記のボット(特に一般的なサービス)は悪いものではありません。_「悪性」と「検証済み」_の間の状態にあると言うべきフレンドリーなボットです。
そこで当社は、フレンドリーなボットの巧い管理方法を考案しました。
Cloudflareの新機能 Friendly Botsは、IPリスト、rDNSなどを使ってあらゆるトラフィックを瞬時に自動検証することができます。
仕組みを説明しましょう。Cloudflareダッシュボードで、お客様のボットの情報を入力してください。パブリックIPリストでも、ホスト名のサフィックスでもいいですし、機械学習など他の方法を選んでいただいても構いません。Cloudflareのエニーキャストネットワークなら、それらすべてのメカニズムを_すべての_データセンターで実行できますから、実効性と安全性が高くスケーラブルなボット検証が可能です。
Friendly Botsをまとめてお客様のサイト間で共有すれば、このタイプのトラフィックの許可、レート制限、ログ記録を行うカスタムポリシーが作成できます。特定のボットを監視したいだけというケースでも大丈夫です。応答オプションは柔軟で、Cloudflare Workersプラットフォームと直接統合します。
当社はこれまで、Web上を大規模にクロールしないボットの検証に苦労してきました。なぜでしょう?当社のシステムは、検証済みトラフィックのキャッシュに依存して、特定のIPやその他のデータのインターネット上の挙動が良性であることを確認しています。そのため、ボットがCloudflareに何千ものリクエストを送信しなければ、検証が難しいこともあるのです。そこで登場するのがFriendly Botsです。これにより規模の要件はなくなり、小規模プロジェクト向けに最適化する動的キャッシュが新たに導入されました。
下流効果
Friendly Botsでダッシュボードが合理的になり、使い勝手が良くなります。そして、下流においても隠れた効果がいくつかありますのでご紹介します。
検証の簡便化
もちろん、インターネット上のすべての良性ボットを常に把握しておくことは容易ではありません。ボットの検証は手作業での提出に依存しているため、数週間かかる場合がありますし、良性ボットの作成からは数か月を要することもあります。そうした状況が、Friendly Botsの登場で一変します。多くのお客様が特定のボット(たとえば特定のIPアドレスやホスト名サフィックス)を許可リストに載せていることを当社が察知すれば、当社のシステムが自動的にそのボットを検証待ち行列に入れます。また、お客様のFriendly Botsをインテリジェントに活用して、Cloudflareの他のお客様にも役立てます。
瞬時のフィードバック
従来の検証プロセスは、ユーザーにとってわかりにくいものでした。_IPドキュメントは提出する必要があるのだろうか?ユーザーエージェントはどうか?経時的な変更は可能か?など。_検証データの一部が欠損すると、それを特定し修復するのに数週間かかることもありました。
そういった問題はもうありません。Friendly Botsで検証がほぼ瞬時にできるようになりました。何かがおかしい(rDNS検証のホスト名が誤りなど)と、ボットが許可リストに載らないため、すぐわかります。当社サポートチームの連絡を待つ必要はもうないのです。
情報収集の改善
かつては、ボットオペレーター(Googleなど)に検証用データの提出を求めていました。検証したいボットがあっても、自分がオーナーでなければ情報提供できなかったのです。
Friendly Botsはボットオペレーターに依存しません。識別情報を見つけられる人なら誰でも、自分のサイトでボットを登録することができます。
仲立ち不要
仮にスクレイパーが自分のサイトにやってきたとします。それは良いことでしょうか?露出だから良いことだという人もいれば、スクレイパーにデータを取られるかもしれないから悪いことだという人もいるでしょう。これは、当社がこれまでの検証済みボットすべてについて慎重に考えてきた問いです。
それが今、お客様自身が答えを選択できるようになりました。Friendly Botsではお客様が制御権を持ち、ドメインレベルでボットのカテゴライゼーションができます。当社は引き続き、グローバルレベルでボット検証(挙動が客観的に見て良性の場合)をしていきます。
Cloudflare Radar
もう一つ嬉しいお知らせです。本日Friendly Botsを発表しましたが、当社はCloudflare Radarにもいくつか変更を加えています。
今日から、多数の検証済みボットのリストをRadarで見ることができます。これまで発表したことのない詳細なリストです。
データはすべてリアルタイムで更新され、新たに検証されたボットがRadarモジュールにこのように表示されます。
また、特定の検証済みボットをログ製品にも追加し始めました。Bot Tagsに表示されますので、リクエストの送信元がPinterestのボットであれば、リクエストに「pinterest」という文字列が含まれます。
今後の展開は?
当社のチームは、まもなくFriendly Botsをローンチできることを大変嬉しく思っています。そのインパクトはボット管理全体に及び、誤検知が減って、クローラビリティが向上し、全般的にサイトの安定性が高まるでしょう。
ボット管理をご利用でこの新機能を試してみたいと思われる方は、担当のアカウントチームにご連絡ください(早期アクセス期間のお試しに登録します)。もちろん、今後も引き続き、検証が必要なボットについて当社へご連絡いただくこともできます。