Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

ボットフィードバックループ

最終更新 Markdown で表示Agent セットアップ

ボットフィードバックループ(Bot Feedback Loop)では、Bot Management が誤って スコア付け したリクエストを報告できます。偽陰性または偽陽性のレポートを送ると、Cloudflare がそのデータを分析し、次の機械学習モデルの学習に使います。

利用可否

ボットフィードバックループは、Enterprise の Bot Management をご利用のお客様向けです。詳細は プラン を参照してください。

偽陽性

ブラウザー、モバイルアプリ、デスクトップアプリを使っている人からのリクエストを、Cloudflare が automated または likely automated の範囲でスコア付けした場合に、偽陽性が起きます。

偽陰性

サイト上の自動トラフィックの一部を Cloudflare が検出できなかった場合、偽陰性レポートを送ると、今後の検出に役立ちます。

サブタイプ

サブタイプ 定義
アカウント作成の悪用 サイトのリソースにアクセスするため、多数の新規アカウントを自動作成すること。
広告詐欺 広告のクリック数や表示回数を不正に増やすこと。
クレジットカードの悪用 多数のクレジットカード番号、または同じ番号に異なる検証情報を付けて、繰り返し検証しようとすること。
Cashing Out 対象のインターネットアプリケーションを悪用して、価値のある商品を得ること。
ログインの悪用 多数のユーザー名とパスワードの組み合わせで、パスワード保護された部分にアクセスしようとすること。
在庫の悪用 数量限定の在庫の購入や、ほかの人が取引できないように在庫を抑える自動的な悪用。
サービス拒否 サーバー資源を枯らして、インターネットアプリケーションを動かなくすることを目的とした自動リクエスト。
Expediting 人間の訪問者より速く取引するため、インターネットアプリケーションの利用を自動化し、不当な優位を得ること。
ファジング 不正な形式のデータを自動で注入し、実装上のバグを見つけること。
スクレイピング インターネットアプリケーションから、価値のある情報や独自情報を自動で取得すること。
スパム送信 コンテンツ投稿フォームを悪用してスパムを送ること。
トークンクラッキング アプリケーション内で何らかの特典を与える有効なトークンコードを特定すること。
脆弱性スキャン 識別できる、推測できる、未知のコンテンツ位置、パス、ファイル名、パラメーターを体系的に列挙・検査し、弱点やセキュリティ上の脆弱性がありそうな箇所を見つけること。

レポートを送信する

  1. Cloudflare ダッシュボードで、Security Analytics ページを開きます。

    Analytics を開く ↗
  2. 1 つ以上のフィルターを適用します。

  3. Request activityBot analysis で絞り込みます。

  4. Report incorrect data を選び、フォームに入力します。

  5. Submit を選びます。

API で送信する

フィードバックレポートを作成する

curl 'https://api.cloudflare.com/client/v4/zones/{zone_id}/bot_management/feedback' \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
  "type": "false_positive",
  "description": "Legitimate customers having low score",
  "expression": "(cf.bot_management.score le 46 and ip.src.asnum eq 132892 and http.host eq \"api-discovery.theburritobot.com\" and cf.bot_management.ja3_hash eq \"3fed133de60c35724739b913924b6c24\")",
  "first_request_seen_at": "2022-08-01T00:00:00Z",
  "last_request_seen_at": "2022-08-10T00:00:00Z",
  "requests": 100,
  "requests_by_score": {
    "1": 50,
    "10": 50
  },
  "requests_by_score_src": {
    "heuristics": 25,
    "machine_learning": 75
  },
  "requests_by_attribute": {
    "topIPs": [
      {
        "metric": "10.75.34.1",
        "requests": 100
      }
    ],
    "topUserAgents": [
      {
        "metric": "curl/7.68.0",
        "requests": 100
      }
    ]
  }
}'

フィードバックレポートを一覧する

curl 'https://api.cloudflare.com/client/v4/zones/{zone_id}/bot_management/feedback' \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>"
[
	{
		"created_at": "2022-08-19T00:05:24.749712Z",
		"type": "false_positive",
		"description": "Legitimate customers having low score",
		"expression": "(cf.bot_management.score le 46 and ip.src.asnum eq 132892 and http.host eq \"api-discovery.theburritobot.com\" and cf.bot_management.ja3_hash eq \"3fed133de60c35724739b913924b6c24\")",
		"first_request_seen_at": "2022-08-01T00:00:00Z",
		"last_request_seen_at": "2022-08-10T00:00:00Z",
		"requests": 100,
		"requests_by_score": {
			"1": 50,
			"10": 50
		},
		"requests_by_score_src": {
			"heuristics": 25,
			"machine_learning": 75
		},
		"requests_by_attribute": {
			"topIPs": [
				{
					"metric": "10.75.34.1",
					"requests": 100
				}
			],
			"topUserAgents": [
				{
					"metric": "curl/7.68.0",
					"requests": 100
				}
			]
		}
	}
]

API フィールド

Field Type Description Value Example
type string フィードバックレポートの種類です。 false_positive
description string 問題の詳細を含む、フィードバックレポートの説明です。 Legitimate customers having low scores.
expression string 報告対象のリクエストに一致する wirefilter 式です。 (cf.bot_management.score le 46 and ip.src.asnum eq 132892 and http.host eq "app.example.com" and cf.bot_management.ja3_hash eq "3fed133de60c35724739b913924b6c24")
first_request_seen_at string 最初のリクエストが観測された時刻範囲の開始です。RFC 3339 形式です。 2022-08-01T00:00:00Z
last_request_seen_at string 最後のリクエストが観測された時刻範囲の終了です。RFC 3339 形式です。 2022-08-10T00:00:00Z
requests integer 報告したリクエストの総数です。 100
requests_by_score object スコア別のリクエスト内訳です。 下記の例を参照。
requests_by_score_src object スコアソース別のリクエスト内訳です。 下記の例を参照。
requests_by_attribute object 属性別のリクエスト内訳です(任意)。 下記の例を参照。

requests_by_score

{
	"1": 50,
	"10": 50
}

requests_by_score_src

{
	"machine_learning": 75,
	"heuristics": 25
}

requests_by_attribute

{
	"topIPs": [
		{
			"metric": "10.75.34.1"
			"requests": 100
		}
	],
	"topUserAgents": [
		{
			"metric": "curl/7.68.0",
			"requests": 100
		}
	]
}

式のフィールド

Field Type Description
cf.bot_management.ja3_hash string ボットの可能性があるリクエストを識別するための SSL/TLS フィンガープリントです。
cf.bot_management.score integer リクエストがボットから来た可能性を、1〜99 のスコアで示します。
http.host string リクエスト URI 全体で使われたホスト名です。
http.request.uri.path string リクエストの URI パスです。
http.user_agent string HTTP の User-Agent です。クライアントの OS とウェブブラウザーを識別するための文字列を含むリクエストヘッダーです。
ip.src.asnum integer クライアント IP アドレスに紐づく自律システム(AS)番号を表す、16 ビットまたは 32 ビットの整数です。
ip.src.country string ISO 3166-1 Alpha 2 形式の 2 文字の国コードです。
ip.src string 送信元の IP アドレスです。

レポート送信時の推奨事項

レポートを送るときは、Bot Analytics ダッシュボードのフィルターを使い、スコアが誤っていたトラフィックだけがレポートに入るようにします。スコアでの絞り込み(必須)に加え、User-Agent、IP、ASN、JA3 で絞り込むと、誤スコアの区間をより正確に示せます。

一部のトラフィックのスコアが誤っているか確信できない場合は、そのトラフィックもレポートに残します。

ドメインへの通常トラフィックと比べて、これらのリクエストをチームが理解しやすくなるコメントがあれば、説明欄に記入してください。

偽陽性を送信したあとの推奨事項

偽陽性を送信したあと、そのトラフィック元が今後の悪用に使われないと確信できる場合は、そのトラフィックを明示的に許可できます。許可するには、偽陽性レポートの特徴に一致する WAF カスタムルールを作り、残りのカスタムルールをスキップする アクションを使います。作成するスキップルールは、想定トラフィックがアクセスするリクエストメソッドと URI を制限するなど、できるだけ狭い範囲にして、悪用の余地を減らすことを推奨します。

  • JA3/JA4 フィンガープリント を許可する:専用 IP から来ない安定したソフトウェアクライアントへのアクセスを許可したい場合は、Bot Analytics ダッシュボードでそのクライアントが使う JA3 フィンガープリントを調べ、その JA3 フィンガープリントに基づいてトラフィックを許可する WAF カスタムルールを作ります。JA3 フィンガープリントはクライアントの TLS ライブラリにだけ一致するので、ほかのクライアントとの重複と、OS による違いの両方に注意してください。

    悪用される可能性があるモバイルアプリでは、JA3 ルールに頼ることは推奨しません。モバイルアプリからのトラフィックを安全に許可する方法について不明な点があれば、アカウントチームに問い合わせてください。
  • IP アドレス を許可する:許可したいトラフィック元だけに属する専用リソースである場合に限り、IP アドレスで許可してください。
    許可したいトラフィックがほかのトラフィック元と IP を共有している場合や、IP が頻繁に変わる場合は、IP アドレスでの許可以外の方法を検討してください。

偽陰性を送信したあとの推奨事項

偽陰性レポートを送信したあと、IP アドレス、JA3 フィンガープリント、ASN、User-Agent などの特徴を組み合わせて、誤スコアのトラフィックを明示的にブロックまたはレート制限できます。JA3 フィンガープリントに基づいてブロックまたはレート制限する前に、Bot Analytics で、そのフィンガープリントが正当なトラフィック元に使われていないことを確認してください。

役に立ちましたか?