URL スキャナー
世界中のインターネット使用状況をよりよく理解するために、CloudflareのURLスキャナーを使用してください。CloudflareのURLスキャナーを使用すると、ドメイン、IP、URL、またはASNの詳細を調査することができます。CloudflareのURLスキャナーは、Cloudflareダッシュボードのセキュリティセンター、Cloudflare Radar ↗およびCloudflareのAPIで利用可能です。
APIを使用して最初のURLスキャンを行うには、URLスキャナー専用のAPIトークンを取得する必要があります。PermissionsグループでAccount > URL Scannerを選択し、アクセスレベルとしてEditを選択してカスタムトークンを作成します。
トークンを取得し、account_idを知っている場合、https://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/でAPIへの最初のリクエストを行う準備が整います。
URLをスキャンするために送信するには、POSTリクエストボディにスキャンするURLを指定するだけです:
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/scan" \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "url": "https://www.example.com"}'デフォルトでは、レポートはPublicの可視性レベルを持ち、最近のスキャン ↗リストや検索結果に表示されます。また、デスクトップ解像度のスクリーンショットが1枚含まれます。
成功したレスポンスはステータスコード200を持ち、以下のようになります:
{ "errors": [], "messages": [{ "message": "Submission successful" }], "result": { "time": "2022-09-15T00:00:00Z", "url": "https://www.example.com", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "visibility": "Public" }, "success": true}上記のレスポンスのresult.uuidプロパティはスキャンを識別し、スキャンレポートを取得する際に必要です。
以下は、いくつかのカスタム設定オプションを含むリクエストボディの例です:
{ "url": "https://example.com", "screenshotsResolutions": [ "desktop", "mobile", "tablet" ], "customHeaders": { "user-agent": "My-custom-user-agent", }, "visibility": "Unlisted"}上記では、可視性レベルがUnlistedに設定されており、スキャンレポートは最近のスキャン ↗リストや検索結果には含まれません。実際には、スキャンIDを知っているユーザーのみがアクセスできることになります。
また、ターゲットデバイスタイプごとに1枚ずつ、合計3枚のウェブページのスクリーンショットが撮影されます。User-Agent ↗ HTTPヘッダーは「My-custom-user-agent」として設定されます。任意のカスタムHTTPヘッダーを設定できることに注意してください。これにはAuthorization ↗も含まれます。
URLスキャンの送信が行われた後、進行状況はhttps://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/scan/{scan_id}を呼び出すことで確認できます。scan_idは前のレスポンスで返されたresult.uuidの値です。
スキャンが進行中の場合、HTTPステータスコードは202であり、完了すると200になります。クライアントは10〜30秒ごとにポーリングすることをお勧めします。
レスポンスには、他の情報の中にresult.scanの以下の主要プロパティが含まれます:
task- スキャン送信に関する情報。page- プライマリリクエストに関連する情報(例:レスポンスクッキー)およびウェブページ自体に関する情報(例:コンソールメッセージ)。meta- 検出された技術、カテゴリ、ランクなどを含むメタプロセッサの出力。ips- 接触したIP。asns- 接触したAS番号。geo- 接触したIPから派生したGeoIP情報。domains- 接触したホスト名、dnsレコード情報を含む。links- DOM内で検出された外部リンク。performance-PerformanceNavigationTiming↗インターフェースによって提供されるタイミング。certificates- HTTPレスポンスのTLS証明書。verdicts- 悪意のあるコンテンツに関する判定。
より具体的なプロパティの例には以下が含まれます:
task.uuid- スキャンのID。task.effectiveUrl- すべてのHTTPリダイレクト後のプライマリリクエストのURL。task.success- スキャンが成功したかどうか。スキャンはDNSエラーなどのさまざまな理由で失敗することがあります。task.status- 現在のスキャンステータス(例:Queued、InProgress、Finished)。meta.processors.categories- 接触した主要ホスト名のCloudflareカテゴリ。meta.processors.securityRiskCategories- 接触した主要ホスト名のセキュリティリスクを表すCloudflareカテゴリ。meta.processors.phishing- 検出されたフィッシングの種類。meta.processors.rank- 接触した主要ホスト名のCloudflare Radarランク ↗。meta.processors.tech- ウェブサイトで使用されている技術の種類(Wappalyzer ↗の助けを借りて)。page.country- 接触した主要IPアドレスのGeoIP国名。page.cookies- ページによって設定されたクッキー。page.console- JavaScriptコンソールメッセージ。page.js.variables- 非標準のJavaScriptグローバル変数。page.securityViolations- CSPまたはSRI ↗違反。verdicts.overall.malicious- スキャン時にウェブサイトが悪意のあると見なされたかどうか。特定の脅威が検出された各サブシステムの残りのプロパティを確認してください。
Get URL Scan APIエンドポイントのドキュメントには、完全なレスポンススキーマが含まれています。
スキャンのスクリーンショットや完全なネットワークログを取得するには、対応するエンドポイントのドキュメントを参照してください。
Publicスキャンも検索できます。ホスト名google.comのスキャンを検索するには、クエリパラメータpage_hostname=google.comを使用します:
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/scan?page_hostname=google.com" \--header "Authorization: Bearer <API_TOKEN>"検索結果には、あなた自身のUnlistedスキャンも含まれます。
代わりに、ホスト名cdnjs.cloudflare.comに対して少なくとも1回リクエストを行ったスキャンを検索したい場合(例:cdnjs.cloudflare.comでホストされているJavaScriptライブラリを使用しているサイト)、クエリパラメータhostname=cdnjs.cloudflare.comを使用します:
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/scan?hostname=cdnjs.cloudflare.com" \--header "Authorization: Bearer <API_TOKEN>"利用可能なオプションの完全なリストについては、https://developers.cloudflare.com/api/operations/urlscanner-search-scansを確認してください。