Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
thermoptic — スタックの全レイヤーにわたってリクエストをChromeブラウザとして完全に偽装する、次世代のHTTPステルスプロキシ。 | Kitploit
ツール/GitHubGitHub/mandatoryprogrammer/thermoptic
ウェブプロキシと傍受なりすましツール情報収集WAFバイパスクローラーアンチボットフィンガープリントスプーフィングCAPTCHAバイパス
GitHubmandatoryprogrammer/thermoptic

thermoptic

スタックの全レイヤーにわたってリクエストをChromeブラウザとして完全に偽装する、次世代のHTTPステルスプロキシ。

リポジトリを見る
1.0k664017日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

thermoptic

「信じられない、サーモオプティック迷彩だ!」

これは何?

これは、JA4+ のようなフィンガープリンティングを使用して特定の HTTP クライアントをブロックするサービスを回避するために設計された HTTP プロキシです。このプロキシを使用すると、curl などの好みの HTTP クライアントを使いながら、本物の(Chrome/Chromium)ウェブブラウザと魔法のように見分けがつかないフィンガープリントを得ることができます。thermoptic には、JavaScript ベースのフィンガープリンティングを軽減するための楽しい機能もいくつか備わっています。また、ウェブブラウザと低レベル HTTP クライアントの両方を組み合わせたハイブリッドスクレイピングを簡単に行うこともできます。

JA4+ フィンガープリンティングに馴染みがなくても、スクレイピングをしたことがあるなら、おそらくこれまでにブロックされた経験があるでしょう。Cloudflare のような一般的なサービスは、このような技術(およびその他のトリック)を使って「人間ではない」HTTP クライアントの使用を検出し、リクエストをブロックします。これらのサービスは、このフィンガープリンティングを使って、本物のブラウザでセッションを開始した後に curl のような低レベルクライアントに切り替えたことを検出することもできます。thermoptic は、すべてのスクレイピングリクエストに対して統一された「本物の」ブラウザフィンガープリントを提示することで、これらすべての問題を解決します。

例

以下は、プロキシを使用しない場合の curl の JA4H(HTTP)フィンガープリントの例です:

$ curl https://ja4db.com/id/ja4h/
ge11nn090000_b6a016211e8a_000000000000_e3b0c44298fc

これは、URLに直接アクセスしたときにChromeが生成するフィンガープリントとはかなり異なります:

ge11cn19enus_f2808f0d04cf_9a10d4221160_7068f58def6e

しかし、プロキシを使用してリクエストを行うと、JA4Hフィンガープリントは魔法のように同一になります:

$ curl --proxy http://thermoptic:1234 https://ja4db.com/id/ja4h/
ge11cn19enus_f2808f0d04cf_9a10d4221160_7068f58def6e

(同じことは私たちのJA4 TLSフィンガープリントにも当てはまります、など)。

セットアップ

Ubuntu 22.04上でコンテナ化されたChromeインスタンスを通じてトラフィックを偽装するthermopticプロキシを起動するには:

通常のDockerセットアップ(GPUランタイムのないホストでも動作します):

docker compose up --build

以上で完了です。これでトラフィックをプロキシ経由で送信できます:

curl --proxy http://127.0.0.1:1234 --insecure https://ja4db.com/id/ja4h/

重要な注意事項:

  • デフォルトでは、プロキシは認証なしで動作します。プロキシを外部に公開する予定がある場合は、環境変数 PROXY_USERNAME と PROXY_PASSWORD で認証を設定してください。
  • ---insecure を使用したくない場合は、./ssl/rootCA.crt にある生成済みの CA ファイルを使用する必要があります。これは thermoptic を初めて実行したときに生成されます。
  • thermoptic は --remote-debugging-port フラグを付けて起動された任意の Chrome/Chromium インスタンスに接続できます。これは、フィンガープリントをできるだけ目立たなくするために、より一般的に使用される環境(例: Windows 上の Chrome)をセットアップしてプロキシ経由で使用したい場合に不可欠です。
  • GPU compose オーバーライドは、Docker の NVIDIA ランタイム/ツールキットが既にインストールされている NVIDIA ホストを対象としています。GPU デバイスを予約し、/dev/dri をマウントし、同梱の Chrome コンテナを NVIDIA/Vulkan レンダリングパスに切り替えられるようにします。これを使用するには、docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build を実行します。

機能

  • 🕵️ ブラウザ同等のプロキシにより、実際の Chrome セッションを通じてリクエストを再生し、JA4 フィンガープリントをバイト単位で一致させます。
  • 🤝 HTTP クライアント(例: curl、requests など)を thermoptic と統合するためにカスタムコードはほとんど、あるいはまったく不要です。プロキシを設定するだけで、フィンガープリントは処理されます。
  • 🪝 フックフレームワークにより、リクエスト前/リクエスト後/起動時の自動化が可能で、ブラウザ全体を操作してチャレンジを解決したり、アーティファクトをキャプチャしたりできます。
    • 📘 Cloudflare turnstile を解決するフックの例は ./hooks/onstart.js にあります。
  • 🖥️ Web ブラウザ制御 UI(http://127.0.0.1:14111)で、Docker 化された Chrome ブラウザウィンドウを操作できます。サイトに手動でログインし、その後プロキシをシームレスに使用してログイン済みセッションとしてリクエストを行うのに便利です(デバッグにも)。
  • 🔌 docker-compose.yml の UPSTREAM_PROXY 環境変数で上流の HTTP または SOCKS プロキシ URI を設定できます。
  • 🛡️ 組み込みのヘルスチェックと再起動制御ループにより、フリーズしたブラウザを検出し、オペレーターの監視なしで自動的に復旧します。
  • ⚡ HTTP/1.1 と HTTP/2 をサポートし、どちらのプロトコルでもトラフィックをプロキシできます。(プロキシに対して HTTP/1.1 で通信しても、操作される Chrome はエンドサイトと異なるプロトコルでネゴシエートする場合があることに注意してください。)

このクローキングは正確にはどのように機能するのか?

Visual diagram example

  • curl などの HTTP クライアントを使用し、thermoptic をプロキシとして設定して HTTP リクエストを行います。
  • thermoptic はリクエストを分析し、それが本来どのタイプのブラウザリクエストであるべきか(例: 手動の URL 訪問?フォーム送信?fetch() リクエスト?)を最適に判断します。
  • thermoptic は Chrome Debugging Protocol (CDP) を使用してブラウザを操作し、実際の Web ブラウザで通常発生するのとまったく同じようにリクエストを模倣するページをセットアップします。
  • thermoptic は模倣されたコンテキストを介してリクエストをトリガーし、HTTP レスポンスをキャプチャします。
  • thermoptic は HTTP レスポンスをクライアントに返します。

ブラウザが実際にそのフルスタックを使用してリクエストを行っているため、結果として得られる JA4 フィンガープリントは同一になります。

注: 多くの WAF が Web ブラウザの JavaScript レベルのフィンガープリンティングを採用しているため、thermoptic はスクレイピングプロセスの重要なステップでブラウザを利用するためのフックも公開しています。詳細はこのセクションを参照してください。

なぜ他のソリューションではなくこのアプローチなのか?

率直に言えば、他のアプローチには根本的な欠陥があり、ブラウザフィンガープリンティング問題に対する実用的な長期的解決策にはなりません。

ブラウザの JA4+ フィンガープリンティングを「打ち負かす」他の多くの試みは、ブラウザスタックのさまざまな層を再実装することによって行われます。このアプローチには、次のようないくつかの深刻な欠点があります:

  • 「本物の」ブラウザ実装の動作を完全に一致させるには細心の注意が必要です。その結果、あらゆる癖や不一致が、これらのクライアントを「本物の」ブラウザ実装と区別するために利用される可能性があります。
  • スタックの 1 つの層でのみ問題を解決しようとすること。Chrome は Web ブラウジング体験を提供するために複数のプロトコルを利用します。その結果、完璧に一致する TLS 層を作成したとしても、HTTP 層がバイト単位で完璧でなければ正体が露見する可能性があります。
  • 「本物の」ブラウザは定期的に動作を変更するため、そのフィンガープリントも変化し、その結果これらのツールは補正のために常により集中的な開発作業を必要とします。

対照的に、thermoptic は HTTP リクエストを実行するためにブラウザ自体を使用するため:

  • TCP、TLS、HTTP などのスタックの各層は、通常発生する方法で本物のブラウザを使用してリクエストが行われるため、本物のブラウザと区別がつきません。
  • さまざまな層でのブラウザの動作の変更による影響は最小限で、thermoptic が制御するブラウザを最新のフィンガープリントセットに一致させるために更新するだけで済みます。

もちろん、欠点のないソリューションはありません。thermoptic アプローチの欠点の詳細なリストについては、DOWNSIDES.md ドキュメントを参照してください。

FAQ

なぜ thermoptic という名前なのか?

「Thermoptic」(「thermoptic camouflage」の略)は、Ghost in the Shell (1995) アニメで少佐が使用した架空のカモフラージュへの言及です。映画では、このカモフラージュは可視光と熱放射の両方を含む複数の検出スペクトルにわたって装着者を隠すことができると示されています。同様に、このツールは複数のチャネル(HTTP、TLS など)にわたってユーザーをフィンガープリンティングから隠そうとします。

JA4+ はフィンガープリントのスイートです!どれを偽装しますか?

このツールは、接続している Chrome/Chromium ブラウザとまったく同じになるように、以下の JA4 フィンガープリントを偽装します:

  • JA4(TLS フィンガープリント)
  • JA4H(HTTP フィンガープリント)
  • JA4X(X509 TLS 証明書フィンガープリント)
  • JA4T(TCP フィンガープリント)

これと一緒に別の上流 HTTP/SOCKS プロキシを使用したい場合は?

thermoptic は制御された Chrome インスタンスを内部の proxyrouter サービス経由でルーティングするようになったため、Chrome を上流の HTTP または SOCKS プロキシ(認証情報を必要とするものを含む)に向けることができます。docker-compose.yml の proxyrouter サービスにある UPSTREAM_PROXY の値を編集して、上流プロキシ URI を設定します。空のままにすると、Chrome は認証なしのクラスタ内プロキシを通じてインターネットに直接通信します。

上流 SOCKS プロキシを設定する例:

  proxyrouter:
    environment:
      UPSTREAM_PROXY: "socks5://username:[email protected]:1080"

一部の上流プロキシは低レベルのフィンガープリント(例えば TCP メタデータ)を変更する可能性があり、これによりレジデンシャルブラウザとの同等性が低下する場合があることに注意してください。

クッキーについてはどうですか?

thermoptic は、クライアントが Cookie ヘッダーで指定したクッキーを使用してブラウザをロードします。その後、リクエストがブラウザコンテキストで実行されると、これらのクッキーが含まれます。これは、サーバーがクッキーの順序やその他の安易なトリックをフィンガープリントできないようにするために行われます。

注: これらのクッキーはリクエスト後も残ります。クッキーのクリーンアップロジックを実装したい場合は、thermoptic フックを記述してください。

なるほど、でも人間の検証を通過するために X プロンプトをクリックするには完全なウェブブラウザが必要です!

はい、thermoptic はこのようなハイブリッドな使用方法をサポートしています。詳細についてはこのセクションを参照してください。

リクエスト X のフィンガープリントがブラウザのフィンガープリントと一致しません!

X-Fetch-*、Origin、Referer などのヘッダーを正しく設定していることを確認する必要があります。これらのヘッダーを thermoptic に伝えないと、適切にステルスな方法でリクエストを実行できません。

コンテキストヘッダーを設定しない場合、thermoptic はデフォルト値を設定しますが、これはターゲットサイトが期待するものと正確に一致しない可能性があります。例えば、Origin ヘッダーを設定しない場合、Origin は null に設定され、Referer ヘッダーを設定しない場合は Referer をまったく送信しません。

リクエストを可能な限りステルスにするために、これらのコンテキストヘッダーを含めることをお勧めします! thermoptic はあなたの心を読むことはできず、あなたのリクエストを読むことしかできません :)。

Chrome Debugging Protocol 自体 がフィンガープリント可能です!

一般的に、これは JavaScript/ブラウザレベルのチェックを通過するために一時的に完全なウェブブラウザを利用する thermoptic フックの場合にのみ適用されます。これらのフックと完全なブラウザモードを一時的に使用する場合、ボットとしてフィンガープリントされないように注意する必要があります(例えば、Runtime.enable のような落とし穴を避ける)。

なぜ このツールをリリースするのですか?あなたが可能にしている悪意のある行為者を気にしないのですか?!

ここで働いている倫理的考慮事項と複雑なゲーム理論は、README で答えられる範囲を超えています。ただし、メール/Twitter/Github で私を炎上させる際には、これらの過度に単純化された点のいずれかに反論してください:

ツールをダウンロード