メニュー

ホーム

すべてのページ

外観

位置:🇺🇸 アメリカ合衆国
メインサイト gistwillan.top
ブログに戻る
検出 · 約 10 分

あなたはどう識別されるか:プロキシ判定・TLS 指紋・Bot スコア

証拠は 3 層。通信を運ぶネットワーク、ハンドシェイクの形、そして挙動に付くスコア。どれも聞こえるほど強くありません。

ラックに並ぶネットワークスイッチ
ShakataGaNai · CC BY-SA 3.0 Wikimedia Commons

「プロキシかどうか」は是か非かではなく、証拠の連鎖です。最も外側はネットワーク。そのアドレスを誰が広告しているか、ホスティングか住宅か、公開 Tor 出口リストに載っているか。1 層内側はトランスポート。ClientHello の形はブラウザかスクリプトライブラリかを語り、IP を変えても変わりません。最も内側は挙動とスコア。Bot スコア、リクエストの間隔、セッション長。どの層も確率しか出せず、重ねてようやく足りる程度です。だから誤検知は同じ人たちに集中します。

ネットワーク・トランスポート・挙動の証拠が 1 つの確率に集まる
各層は確率しか出せず、重ねてようやく足りる程度。だから誤検知は同じ人に偏ります。

「隠された」通信も一様ではありません。商用 VPN、データセンターのプロキシ、Tor の出口ノードは、ネットワークのエッジに異なる指紋を残します。本記事では、現代の IP インテリジェンスが実際に使う信号を整理します。

1. まず ASN が手がかり

すべての IP は自律システム(ASN)に属します。家庭向け ISP、モバイル事業者、ホスティング事業者の ASN は大きく異なります。クラウド/ホスティングの ASN(AWS、DigitalOcean、Hetzner など)から広告されるアドレスは、ほぼ家庭回線ではありません。ASN だけでプロキシ/VPN の相当部分を特定できます。

2. データセンター vs 住宅回線

住宅プロキシは厄介です。実際の家庭 IP を借りるため、ASN は国内の ISP に見えます。対策として、評判データ、接続種別データベース、行動シグナル(同一 IP からの多数アカウント、珍しいポート、短いセッション)を組み合わせます。

3. Tor の出口ノードは公開されている

Tor は出口ノードの一覧を公開しています。その一覧にある IP は即座に分類できます。Tor 出口からのリクエストは「匿名化の可能性」ではなく既知の中継であり、機微なエンドポイントでは拒否されることも多いです。

4. VPN 検出は確率的

商用 VPN は動く標的です。IP を回転させ、住宅レンジを購入し、難読化を使います。単一の信号では断定できないため、ASN・評判・TLS フィンガープリント(JA3)・挙動を統合してスコア化します。

5. 実務的な意味

  • サービスを運営するなら、高い不正スコアは「摩擦を足す」(CAPTCHA、メール確認)理由であり、即時 BAN の理由ではありません。
  • プライバシー重視なら、VPN が変えるのは IP であってブラウザ指紋ではありません。
  • 信頼する前に、透明なツールで自分の回線を確認しましょう。

6. 誤検知のコスト

本物の利用者をプロキシと判定するコストは「1 訪問の損失」ではありません。その人はたいてい戻ってきません。企業の出口、キャンパス網、キャリアグレード NAT の背後の全員、プライバシー拡張を入れた開発者——その信号はプロキシと大きく重なります。成熟したシステムは是か非かを返さず、理由を添えたスコアを返し、どこに摩擦を足すかは人間が決めます。良い検出がほとんど見えない理由もそこにあります。

IP を変えるのは簡単ですが、TLS ハンドシェイクの見え方を変えるのは容易ではありません。そしてそのハンドシェイクは、HTTP リクエストが存在する前に平文で送られます。

7. ClientHello は指紋である

すべての TLS 接続は ClientHello で始まり、対応する暗号スイート、拡張、楕円曲線、署名アルゴリズムなどを特定の順序で列挙します。その組み合わせはブラウザ、バージョン、OS、TLS ライブラリに依存します。これらのフィールドをハッシュ化すれば、安定した識別子になります。

8. JA3 とは

JA3 はその代表的な方式で、ClientHello の数値フィールドを連結して MD5 を取ります。JA4 は同じ発想の、より細かい新しい版です。JA3 が一致する 2 つの接続は、IP や User-Agent、Cookie が違ってもほぼ同じソフトウェアスタック由来と判断できます。

9. プライバシーとの関係

  • VPN は IP を隠しますが指紋はそのままなので、セッションをまたいで関連付けられます。
  • 珍しい JA3 自体がシグナルです。自動化フレームワークやスクレイパーの署名は実ブラウザと一致しません。
  • ボット対策は指紋を ASN、タイミング、挙動と組み合わせて評価します。単一の信号ではなくスコアが判断します。

10. 自分について実際に分かること

Cloudflare では JA3 と JA4 は Bot Management を有効にした Enterprise プランにのみ公開されます。それがない場合、どのサイトでも取得できる正直な信号は、TLS バージョン・暗号スイート・HTTP プロトコルといったトランスポートのメタデータと、ブラウザが自ら送るクライアントヒント(OS プラットフォームやモバイル判定)です。

11. 指紋が一致しないときに疑うこと

名乗っているブラウザのバージョンと指紋が慢性的に食い違うなら、遮断されていると決めつけないでください。よくある原因は 3 つです。企業プロキシやセキュリティソフトが TLS を終端し、自前のスタックで接続し直している。拡張がヘッダーを書き換えている。そして本当に自動化されたクライアントである。前の 2 つは「不自然に見える」以上の意味があります。TLS の終端は原理的に平文を見られるということで、指紋そのものより重大な懸念です。

あるフォームが叩かれ始め、誰かが CAPTCHA を足し、登録数が 3 分の 1 減り、濫用は量を減らして続いた。CAPTCHA は求められた仕事をしたのです。望んでいた人も含めて全員に摩擦を足しました。ボット対策は別の問題で、自動化された通信を特定し、必要な場所にだけ摩擦を置く話です。

12. エッジは挙動より先に接続を見る

JavaScript が 1 行も走る前に、リクエストは多くを運んでいます。送信元 ASN とその評判、TLS バージョンと暗号スイート、ClientHello の形、HTTP/2 の SETTINGS フレーム、ヘッダーの順序と大文字小文字、そして宣言された User-Agent がスタック全体と整合しているか。Chrome 130 を名乗りながら TLS 特性が Python ライブラリのリクエストは、巧妙な発見ではありません。

Cloudflare はこれらを 1〜99 の Bot Score にまとめます。低ければ自動化らしく、高ければ人間らしい。プラットフォームは 1〜29 を「自動の可能性が高い」、30〜99 を「人間の可能性が高い」として扱い、マネージドルールは両端で動作します。スコアは Bot Management 付きのプランでのみ公開されるため、自前の診断ページは数値を出せず「取得できません」と表示することが多く、そう表示するのが正しい態度です。

13. スコアは判決ではない

正当な通信の多くが低スコアになります。監視プローブ、リンクプレビュー、RSS リーダー、アクセシビリティツール、CI で走る curl、ヘッダーを書き換える拡張を入れた利用者などです。逆に、熟練した運用者が動かすヘッドレスブラウザは高スコアを得られます。スコアは入力の 1 つとして扱い、何かを行うときは人間が読める理由を添えてください。

14. Turnstile は CAPTCHA ではない

Turnstile は自信がないときだけ対話式の課題を出します。多くの訪問者は何もせず通過します。そこが要点で、視覚テストの代わりにブラウザと接続の信号を使います。間違えやすいのはサーバー側です。

  • すべてのトークンをサーバー側で siteverify に対して検証する。クライアントの「成功」は提案であって証拠ではありません。
  • トークンは使い捨てで短命(約 5 分)。保存すべきは検証結果で、トークンではありません。
  • トークンを action に結び付け、発行時の hostname を確認する。さもないとトークンファームが別サイトで解いて再利用できます。
  • 機微な操作ではトークン欠落・無効時に閉じる方向で失敗し、それ以外はチャレンジを出して開く方向で失敗する。siteverify のタイムアウトで硬直する決済フローは損失を生みます。

15. ブラウザが証明できること、できないこと

JavaScript の実行、イベントのタイミング、ポインタの軌跡、WebGL の出力は、いずれも素の HTTP リクエストより攻撃者の手間を増やしますが、運用者が辛抱強ければ自動化された実ブラウザはすべて再現できます。ヘッダー順と TLS フィンガープリントは偽装が難しく、TLS ライブラリ由来で呼び出し側のコードでは変えられません。ただし Cloudflare では Enterprise プランが必要で、小規模サイトは JS 信号・レート制限・評判で戦うことになります。

16. 摩擦を置くべき場所

誤検知のコストが最も低く、攻撃者にとって価値が最も高い場所に置きます。アカウント作成、パスワード再設定、決済、そして外へメッセージを送る操作です。読み取りはそのままにします。そのうえで速度ルールを足します。同一 IP から 1 日に複数アカウント、1 台の端末で数十セッション、特定 ASN からのバースト。チャレンジをすり抜けるのはそういう通信です。

ipbox.one は、この 3 層を可能な範囲で並べて表示します。アドレスの ASN とネットワーク種別、このリクエストでエッジが観測した TLS の情報、そしてデプロイが公開している場合の Bot スコア。取得できない項目は推測せず「取得できません」と明示します。それ自体が 1 つの結論です。

関連記事