thermoptic - 次世代HTTPステルスプロキシ
概要
thermopticは、HTTPリクエストをChromeブラウザのものと完全に偽装することを目的としたステルスプロキシです。近年普及しているJA4+などの高度なフィンガープリンティング技術は、curlやwget、Pythonのリクエストライブラリなどの非ブラウザクライアントを識別し、アクセス制限をかけるケースが増えています。本プロキシを経由することで、任意のHTTPクライアントからのリクエストが、あたかも実際のChromeブラウザから発せられたものと見分けがつかなくなり、ブロックを回避可能です。JavaScriptで書かれており、Docker環境での利用もサポート。プライバシー保護や自動化ツールの安定稼働に貢献します。
リポジトリの統計情報
- スター数: 18
- フォーク数: 1
- ウォッチャー数: 18
- コミット数: 2
- ファイル数: 22
- メインの言語: JavaScript
主な特徴
- ChromeブラウザのHTTPリクエストを完全に模倣し、フィンガープリンティング技術を回避
- curlやwget、Pythonのrequestsなど任意のHTTPクライアントからの通信をカモフラージュ
- Dockerベースの環境構築に対応し、手軽に導入可能
- 軽量でシンプルな設計により、高速かつ安定したプロキシ機能を提供
技術的なポイント
thermopticは、HTTPリクエストのヘッダー構造からTLSハンドシェイクまで、Chromeブラウザ特有の通信パターンを再現することで、ネットワーク上での高度なフィンガープリンティング検知を回避します。特にJA4+(JA3にTLSバージョンや拡張情報を加えた拡張版)などのTLS指紋認識技術は、TLS ClientHelloのパラメータやHTTPヘッダーの微細な違いを検知して、botや非ブラウザクライアントを特定しますが、thermopticはこれらのパターンを忠実に模倣します。
プロキシとして動作し、クライアントからのHTTPリクエストを受け取ると、内部でChromeの通信仕様に基づくTLSセッションを確立し、HTTPヘッダーもChromeと同様のものに書き換えます。これにより、サーバー側ではリクエストが本物のChromeブラウザから発せられたと認識されます。
実装言語はJavaScriptであり、Node.js環境で動作します。これによりクロスプラットフォーム対応や、既存のJavaScriptベースのツールとの連携が容易です。またDockerfileが用意されているため、環境依存を排除したコンテナ運用が可能です。これによりプロジェクトの導入が簡単になり、CI/CDパイプラインやクラウド環境での利用もスムーズです。
さらに、プロキシの動作に関するTODOやDOWNSIDESといったドキュメントが整備されており、今後の拡張や運用時の注意点が明確化されています。コードベースはまだ初期段階でコミット数は少ないものの、機能の根幹である「通信のカモフラージュ」という点に特化した設計で、セキュリティやアクセス制御回避の分野で興味深いアプローチを示しています。
このプロキシは、スクレイピングや自動化ツール、プライバシー保護を重視するユーザーが、アクセス制限に苦しむことなくHTTP通信を行うための強力な武器となるでしょう。
プロジェクトの構成
主要なファイルとディレクトリ:
- DOWNSIDES.md: 技術的な制約や既知の問題点を記述
- Dockerfile: Dockerコンテナのビルド設定
- README.md: プロジェクト概要や導入方法の説明
- TODO.md: 今後の機能追加や改善予定のリスト
- _readme: プロジェクト紹介用の画像やGIFを含むディレクトリ
その他、JavaScriptのソースコードや設定ファイルなど全22ファイルが含まれています。
まとめ
Chromeの通信を完全に偽装し、フィンガープリンティング回避に特化した革新的なHTTPプロキシ。
リポジトリ情報:
- 名前: thermoptic
- 説明: A next-generation HTTP stealth proxy which perfectly cloaks requests as the Chrome browser across all layers of the stack.
- スター数: 18
- 言語: JavaScript
- URL: https://github.com/mandatoryprogrammer/thermoptic
- オーナー: mandatoryprogrammer
- アバター: https://avatars.githubusercontent.com/u/5349141?v=4