Camoufox ProxyとGeoIP: あなたのExit IPは指紋です
geoipをオンにすると、CamoufoxはプロキシのExit IPからタイムゾーン、ロケール、座標、および偽装されたWebRTCアドレスを導き出します。それにより、誤ったラベルのプロキシは、プロキシを使用しないよりも目立つ存在になります。
ほとんどのCamoufoxプロキシチュートリアルは、proxyとgeoip=Trueを設定する2行で止まります。その結果、誰も書かないことが起こります: geoipが有効になると、CamoufoxはプロキシのExit IPからタイムゾーン、ロケール、緯度、経度、および偽装されたWebRTCアドレスを導き出します。プロキシはネットワークの中継ではなく、全体のアイデンティティの真実の源となります。誤ったラベルや再利用されたExitを与えると、Camoufoxは嘘に基づいた完璧に一貫した指紋を構築します — これは全く偽装しないよりも強いシグナルです。ここに設定、Googleに貼り付けるエラー、SOCKS5のギャップ、そして最初にExitを確認する方法があります。
プロキシからgeoipが実際に導き出すもの
CamoufoxはPlaywrightのPython APIをラップしたアンチディテクトFirefoxビルドであり、プロキシ設定はPlaywrightの形をしています。geoレイヤーがそれを異なるものにしています。プロジェクトのドキュメントによると、geoip=True(またはターゲットIPアドレス)は、CamoufoxがターゲットIPの経度、緯度、タイムゾーン、国、ロケールを使用し、WebRTC IPアドレスを偽装し、さらに進んで、その地域の言語話者の分布からブラウザ言語を計算し、国の公式言語にデフォルトしません。これらのルックアップは、オプションの追加として提供されるMaxMind形式のデータベースに対して実行されます。
pip install -U "camoufox[geoip]"
python -m camoufox fetch
[geoip]の追加は、パッケージングの意味でのみオプションです — ドキュメントでは、プロキシを使用する場合には強く推奨されると述べられていますが、それは控えめな表現です。それがないと、ホストマシンのタイムゾーンとロケールで動作するステルスブラウザが得られ、そのIPは別の国にあると主張します。ここに認証されたHTTPゲートウェイを使用した最小限の動作設定があります。
from camoufox.sync_api import Camoufox
with Camoufox(
geoip=True,
humanize=True, # cursor movement, not a fingerprint setting
headless=False,
proxy={
"server": "http://gate.quantumproxies.io:PORT",
"username": "USER",
"password": "PASS",
},
) as browser:
page = browser.new_page()
page.goto("https://httpbin.org/ip")
print(page.text_content("body")) # should be the exit IP, not yours
proxy辞書の形状に注意してください: 認証情報はusernameとpasswordの別々のフィールドに入れ、server URLの中には入れません。それはPlaywrightから継承されており、ここで認証されたプロキシが簡単である理由です — 拡張シムも、無視する認証ダイアログもありません。非同期APIはAsyncCamoufoxを通じて同一です。他のステルススタックとの比較については、アンチディテクトフレームワーク間の認証プロキシサポートのマップをご覧ください。
なぜ間違ったプロキシがあなたを暴露するのか
アンチボットシステムは、単一の悪い値を探すことはめったにありません。彼らは矛盾を探します — 同じ人間に対して両方が真であることができない2つのシグナルです。IPがオハイオにジオロケートされるブラウザがEurope/Romeを報告するのはその一例です。Camoufoxのgeoip機能はそのクラスの矛盾を排除するために存在し、その仕事をうまくこなします。問題は、それが常にIPに有利に矛盾を解決することです。データベースがあなたのExitがドイツにあると言っているが、そのアドレスがインターネットの半分がすでにプロキシとしてフラグを立てている再利用されたデータセンター範囲である場合、Camoufoxは忠実にあなたのブラウザをドイツの家庭ユーザーとして装います。
それはExitの品質をブロッキングだけでなく、指紋の問題にします。すべての実行には2つのチェックが必要です: Exitの実際のASNと国、およびそのIPがすでに詐欺やプロキシスコアを持っているかどうか。私たちの無料IP品質チェッカーは両方に答え、実際のISP範囲の住宅プロキシは200以上の国で派生したアイデンティティを可能にします。それは下のレイヤーからあなたを免除するものではありません — エンジンはまだTLSハンドシェイクを発行し、JA3/JA4フィンガープリンティングは偽装された値が送信される前にそれを読み取ります。

実際に遭遇するCamoufoxプロキシエラー
3つの失敗が問題トラッカーを支配しており、それらはどれもあなたの認証情報が間違っていることを意味しません:
InvalidProxy: Failed to connect to proxy— ブラウザが開始する前に発生し、これはgeoipの副作用です。CamoufoxはあなたのExitアドレスを公開IP APIのリストを通じて解決し、何を調べるべきかを知ります。これらのエンドポイントはHTTPSであるため、TLSをCONNECTトンネルできないプロキシは、プレーンHTTPを通じて成功してもチェックに失敗します(ディスカッション#397)。geoipを削除すると同じプロキシが「動作」します — まさに間違った修正です。Page.goto: NS_ERROR_PROXY_CONNECTION_REFUSED— Firefoxレベルの拒否。launch_server()のための問題#294に記録されています: 通常の起動で動作するプロキシ文字列が、ブラウザがサーバーとして起動され、WebSocketエンドポイントを介して駆動されると失敗します。最初に直接起動でプロキシを確認し、どのレイヤーが壊れているかを知ってください。- geoipとIPv6のExit — 同じデータベースがIPv4では問題ないところでルックアップがエラーになります(ディスカッション#241)。IPv6プールでは、アドレスを自分で解決して渡してください。
最初と3番目のケースのクリーンな回避策は文書化されていますが、あまり使用されていません: geoipはIPアドレスを受け入れ、Trueだけではありません。同じプロキシを通じてExitを自分で解決し、Camoufoxに答えを渡します。内部ルックアップを完全にスキップし、ボーナスとして各セッションがどのExitで実行されたかをログに記録できます。
import requests
from camoufox.sync_api import Camoufox
HOST = "gate.quantumproxies.io:PORT"
USER, PASS = "USER-session-a1b2", "PASS" # sticky session id in the username
PROXY = {"server": f"http://{HOST}", "username": USER, "password": PASS}
url = f"http://{USER}:{PASS}@{HOST}" # percent-encode odd characters
# 1) resolve the exit through the same gateway and session
exit_ip = requests.get(
"https://api.ipify.org", proxies={"http": url, "https": url}, timeout=15
).text.strip()
# 2) hand Camoufox the address instead of letting it discover one
with Camoufox(geoip=exit_ip, proxy=PROXY, humanize=True) as browser:
page = browser.new_page()
page.goto("https://browserscan.net")
print("session exit:", exit_ip)
2つの詳細が重要です。スティッキーセッションを使用して、ステップ1で解決されたIPがステップ2でもExitであることを確認します — リクエストごとのローテーションでは、それらは異なるアドレスであり、最初のページロードから派生したgeoが間違っています。そして、@、:、#を含む認証情報をパーセントエンコードします: 辞書形式は免疫ですが、URL形式はそうではありません。
CamoufoxとSOCKS5: WebRTCと認証のギャップ
SOCKS5はCamoufoxユーザーが詰まる場所であり、その理由は単なる機能の欠如よりも興味深いものです。問題#368はそれを正確に示しています: UDPを運ぶプロキシがなければ、WebRTCはあなたを露出させる可能性があります。WebRTCはUDPを介して交渉し、HTTPプロキシはTCPのみであり、SOCKS5はUDPアソシエーションモードを持つ一般的なプロトコルです — これが人々がここでそれを特に望む理由です。Camoufoxの答えは、メディアパスをルーティングする代わりにgeoipデータからWebRTCアドレスを偽装することであり、それが一般的な漏洩をカバーします。block_webrtcオプションは、WebRTCが無効になっているブラウザのように見えるコストで、表面を完全に削除します。
認証されたSOCKS5はより難しいギャップです。ディスカッション#334は、トリックを求めるユーザーであり、唯一動作したのは、ローカルプロキシサーバーを実行してブラウザトラフィックをログインとパスワードでSOCKS5エンドポイントに転送することだったと報告しています。それが現在の状況であり、3つのオプションを残します。優先順位順に:
- IPホワイトリストによる認証。 あなたのマシンまたはサーバーアドレスを許可リストに追加し、SOCKS5エンドポイントは全く認証情報を必要としません。すべてのQuantumProxiesプランはHTTPとSOCKS5エンドポイントを公開し、ユーザー:パスの代替としてホワイトリストをサポートしているため、これは1行の修正であり、エキゾチックなものではありません。
- 同じゲートウェイのHTTPポートを使用。 UDPが特に必要でない限り、辞書内の認証情報を持つHTTP(S)はトラブルが少ないです。SOCKS5とHTTPプロキシの違いの解説は、違いが重要なときにカバーしています。
- ローカルリレーを実行し、
127.0.0.1で認証されていない接続を受け入れ、上流で認証情報を追加します — #334からの回避策です。Camoufoxをsocks5://127.0.0.1:1080に向け、リレーに認証させます。

geoipを信頼する前の事前チェックリスト
- プロキシを通じてExit IPを解決し、セッションIDと共にログに記録します。使用されたアドレスを名前で呼べない場合、そのブロックをデバッグすることはできません。
- プールが主張するものとExitの実際の国とASNを確認します。国の不一致はすべての派生シグナルを毒します。
- ブラウザのライフタイム全体にわたってスティッキーセッションを固定します。セッション中にローテーションすると、古いもののために計算された指紋の下でIPが変わります。
- プールごとに一度、プロジェクトごとに一度ではなく、指紋テストページをロードします — タイムゾーン、ロケール、WebRTCの値はExitと共に変わります。
- ターゲットごとに
block_webrtcまたはgeoipベースのWebRTC偽装を選び、セッション内で一貫性を保ちます。
よくある質問
Camoufoxでプロキシを設定するにはどうすればいいですか?
Playwrightスタイルの辞書をCamoufox()コンストラクタに渡します: proxy={"server": "http://host:port", "username": "USER", "password": "PASS"}。認証情報はサーバーURLではなく、別々のフィールドに属します。それに加えてgeoip=Trueを追加し、タイムゾーン、ロケール、座標をホストマシンではなくそのExitから導き出します。
CamoufoxはSOCKS5プロキシをサポートしていますか?
プロキシ辞書はsocks5://サーバーを受け入れますが、認証されたSOCKS5は既知の問題点です — ディスカッション#334は、ローカルリレーが唯一の信頼できるルートであると報告しており、完全なSOCKS5サポートはまだ未解決の拡張リクエストです(#368)。実際的な修正はIPホワイトリストであり、認証要件を完全に取り除くか、ゲートウェイのHTTPポートを使用することです。
Camoufoxでgeoip=Trueは何をしますか?
MaxMind形式のデータベースでExit IPを調べ、その結果を使用してブラウザの経度、緯度、タイムゾーン、国、ロケールを設定し、WebRTCアドレスを偽装し、その地域に適した言語を選びます。camoufox[geoip]の追加がインストールされている必要があります。自己発見ステップをスキップするためにTrueの代わりにIP文字列を渡すこともできます。
なぜInvalidProxy: Failed to connect to proxyが表示されるのですか?
geoipの事前チェックがプロキシを通じて公開IP APIに到達できなかったためです。これらのエンドポイントはHTTPSであるため、プロキシはCONNECTトンネリングをサポートする必要があります。プレーンHTTPのみを転送するゲートウェイはここで失敗し、他の場所では動作しているように見えます。同じプロキシを通じてHTTPSリクエストでテストするか、Exitを自分で解決し、geoip="1.2.3.4"として渡します。
Camoufoxのgeoipオプションは、より多くの回避コードにお金を使うのではなく、IP品質にお金を使うためのエコシステムでの最良の議論です。それはフィンガープリントの一貫性の最も難しい部分 — ブラウザをネットワークと一致させること — を自動的に解決しますが、ネットワークが真実を語っているという条件で。最初にExitを購入し、次にgeoipをオンにします。FirefoxではなくChromiumが必要な場合、同じ規律が私たちのPatchrightプロキシ設定ガイドに引き継がれます。これは技術的なガイダンスであり、法的アドバイスではありません: 法律とターゲットの条件に従ってスクレイピングしてください。