Camoufox ProxyとGeoIP: あなたのExit IPは指紋です

geoipをオンにすると、CamoufoxはプロキシのExit IPからタイムゾーン、ロケール、座標、および偽装されたWebRTCアドレスを導き出します。それにより、誤ったラベルのプロキシは、プロキシを使用しないよりも目立つ存在になります。

ほとんどのCamoufoxプロキシチュートリアルは、proxygeoip=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辞書の形状に注意してください: 認証情報はusernamepasswordの別々のフィールドに入れ、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フィンガープリンティングは偽装された値が送信される前にそれを読み取ります。

フローダイアグラムは、住宅のExit IPがCamoufox geoipルックアップを供給し、タイムゾーン、ロケール、座標、WebRTCアドレスを導き出し、指紋が注入される前に示しています
geoipをオンにすると、5つのアイデンティティシグナルが1つの入力から計算されます: Exit IPです。その入力を誤って選ぶと、全体のチェーンが一貫して間違っています。

実際に遭遇するCamoufoxプロキシエラー

3つの失敗が問題トラッカーを支配しており、それらはどれもあなたの認証情報が間違っていることを意味しません:

最初と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エンドポイントを取得

検証済みの住宅Exitに基づいて構築された一貫したCamoufoxアイデンティティと、誤ったラベルのプロキシからの矛盾するシグナルを比較するチェックリスト
失敗モードは欠落した値ではありません。それは背後のIPと一致しない自信のある値です。

geoipを信頼する前の事前チェックリスト

よくある質問

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プロキシ設定ガイドに引き継がれます。これは技術的なガイダンスであり、法的アドバイスではありません: 法律とターゲットの条件に従ってスクレイピングしてください。

検証済みの住宅ExitでCamoufoxを実行