言語を変更
日本語 English Русский Deutsch Español Français Italiano Українська Tiếng Việt Türkçe Bahasa Indonesia हिन्दी 中文
メニュー
料金
プロキシ
プロキシの種類
地域から探す77の地域
ソリューション
リソース

Seleniumでプロキシを使う方法

Selenium上のChromeやFirefoxを、1つの静的ISPアドレス経由で動かします。このページのサンプルはすべて、公開前にローカルのプロキシで実際に動かしたもので、うまくいかなかった点もそのまま書いています。

要点: Chromeでは--proxy-server=http://HOST:PORTを引数として渡し、Firefoxではオプションに手動のProxyを設定します。Firefoxは、SeleniumのWebDriver BiDiハンドラーadd_authentication_handlerを使って、プロキシのパスワード要求に応答できます。Chromeは当社のテストではできませんでした。--proxy-server内の認証情報を無視し、2つのBiDiハンドラーはどちらもタイムアウトしました。Chromeでは、テストを実行するIPをプロキシのホワイトリストに登録してください。そうすれば、HTTPでもSOCKS5でもプロキシに認証情報は不要です。

Seleniumは自分で通信を中継するわけではありません。ブラウザを起動し、ブラウザのオプションの一部としてプロキシを渡します。そのため答えはChromeとFirefoxで異なり、多くの設定はプロキシの認証でつまずきます。

ChromeとFirefoxでのPython Seleniumのプロキシ

Chromeはコマンドラインのスイッチから、Firefoxはオプションのプロキシオブジェクトからプロキシを読み取ります。どちらも、ホワイトリスト登録済みのプロキシならそれ以上の設定なしで使えます。Firefoxは、WebDriver BiDiを通じてプロキシのパスワード要求に応答することもできます。当社のテストでは、Chromeはこれができませんでした。

Seleniumでプロキシを設定する

  1. テストを実行する公開IPを調べる

    マシンやCIランナーのローカルアドレスではなく、インターネットから見えるアドレスです。What Is My IPで確認できます。

  2. そのIPをプロキシのホワイトリストに登録する

    API呼び出し1回(PUT /orders/ORDER_ID/whitelist)か、MCPサーバーのset_proxy_whitelistツールで行います。ダッシュボードにはまだ設定項目がありません。ホワイトリストにはIPv4アドレスを指定し、呼び出すたびにリストが置き換わります。ホワイトリストが設定されている間、プロキシは一覧にあるアドレスだけを受け入れ、その注文ではユーザー名とパスワードが使えなくなります。空のリストを送るとホワイトリストがオフになり、パスワードでのログインがふたたび使えるようになります。

  3. 注文からホストとポートをコピーする

    「マイプロキシ」かAPIから取得します。ホワイトリストを設定していれば、ユーザー名とパスワードは必要ありません。

  4. ブラウザのオプションにプロキシを設定する

    Chromeは--proxy-server=http://HOST:PORT、プロキシをSOCKS5に切り替えた後はsocks5://HOST:PORTです。Firefoxは、httpProxyとsslProxyを指定した手動のProxyです。

  5. ページを開いて送信元アドレスを確認する

    操作するブラウザでWhat Is My IPを一度開き、購入したアドレスが表示されることを確かめてから、テストスイートを実行します。

# The proxy has your machine's IP on its whitelist, so no credentials
# are sent: Chrome ignores them in --proxy-server anyway.
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # remove to watch the browser
options.add_argument("--proxy-server=http://HOST:PORT")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
# Selenium 4.51+ with WebDriver BiDi; pip install selenium
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

options = webdriver.FirefoxOptions()
options.enable_bidi = True
options.add_argument("-headless")  # remove to watch the browser
options.proxy = Proxy({
    "proxyType": ProxyType.MANUAL,
    "httpProxy": "HOST:PORT",
    "sslProxy": "HOST:PORT",
})

driver = webdriver.Firefox(options=options)
try:
    # Answers the proxy's 407 with your username and password
    driver.network.add_authentication_handler(
        lambda request: request.provide_credentials("USERNAME", "PASSWORD")
    )
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
# The proxy has your machine's IP on its whitelist, so no credentials
# are sent. For a password instead, see selenium-firefox-auth.
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

options = webdriver.FirefoxOptions()
options.add_argument("-headless")  # remove to watch the browser
options.proxy = Proxy({
    "proxyType": ProxyType.MANUAL,
    "httpProxy": "HOST:PORT",
    "sslProxy": "HOST:PORT",
})

driver = webdriver.Firefox(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
# Switch the proxy to SOCKS5 first, then use the port the order shows.
# The whitelist applies to SOCKS5 as well, so no credentials here either.
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # remove to watch the browser
options.add_argument("--proxy-server=socks5://HOST:PORT")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
# Put the public IPv4 address your code runs from on the proxy's
# whitelist. Replaces the list; an empty list turns whitelisting off
# and the proxy falls back to username and password.
curl -X PUT "https://api.proxyjam.com/public/v1/orders/ORDER_ID/whitelist" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"whitelisted_ips": ["YOUR_IP"]}'

PythonでのSelenium 4の検証済みコード

Firefoxのパスワードのサンプルはユーザー名とパスワードを送るので、ホワイトリストを設定していない注文が必要です。ほかのブラウザのサンプルは、お客様のマシンのIPがプロキシのホワイトリストに登録されていることを前提にしています。SOCKS5のサンプルでは、先にプロキシをSOCKS5に切り替える必要もあり、切り替えると新しいポートが表示されます。大文字の部分をお客様の注文の値に置き換え、ホワイトリストの呼び出しではORDER_ID、YOUR_API_KEY、YOUR_IPも置き換えてください。

APIドキュメント全体

Seleniumのプロキシ設定、ブラウザごとの結果

2026-10-22に、Selenium 4.51とヘッドレスモードのChromeおよびFirefoxで、あるポートではパスワードを求め、別のポートではホワイトリスト登録済みのクライアントを受け入れるローカルのプロキシに対して検証しました。
HTTPプロキシSOCKS5プロキシユーザー名とパスワード
Chrome--proxy-server=http://HOST:PORT--proxy-server=socks5://HOST:PORT--proxy-server内では無視される。ホワイトリストを使う
FirefoxhttpProxyとsslProxyを指定したProxysocksProxyとsocksVersion 5を指定したProxyHTTPでは、add_authentication_handler(BiDi)で動作した
ChromeのBiDiハンドラーadd_auth_handlerとadd_authentication_handlerはどちらもタイムアウトした未検証今後のSeleniumかChromeでこれが変わるまでは、ホワイトリストを使う

Seleniumとプロキシでうまくいかない点

--proxy-serverの中の認証情報

Chromeはこの引数からユーザー名とパスワードをエラーも出さずに捨て、それなしで接続して、プロキシから407を受け取ります。するとページの読み込みが失敗し、認証の問題ではなくネットワークの問題のように見えます。

ドライバーのダウンロードがプロキシを通る

Firefoxのオプションにプロキシが設定されていると、Selenium Managerはドライバーを同じプロキシ経由で取得します。パスワードだけのプロキシでは、そのダウンロードがブラウザの起動前に失敗します。ホワイトリストなら成功します。

ホワイトリストのアドレスが違う

CIランナーは、お使いのノートPCとは別の公開IPから接続することが多く、実行のたびに変わるものもあります。テストを実行するアドレスをホワイトリストに登録し、それが変わったら更新してください。呼び出すたびにリストは置き換わります。

切り替え前にブラウザでSOCKS5を使う

HTTPに設定されたアドレスはSOCKS5に応答しません。まず注文でプロキシを切り替え、その後に表示されるポートを使ってください。引数のスキームを変えるだけでは、ブラウザは接続できません。

ブラウザのテストがアドレスから得るもの

ブラウザにパスワード不要
ホワイトリストがランナーのIPv4アドレスを受け入れるので、オプションにもログにも秘密情報が残りません
ブラウザの両方のスキーム
通常のページにはhttp://、注文を切り替えた後はsocks5://
毎回同じ送信元
昨日の実行も今日の実行も、1つのIPから出ていきます。請求期間中ずっと保持されます
並列のドライバー
複数のドライバーで1つのアドレスを共有しても、ドライバーごとに別のアドレスを使ってもかまいません

ほかのガイドと製品

Seleniumのプロキシに関する質問

Seleniumで認証付きプロキシを使うには?

Firefoxでは、WebDriver BiDiを有効にし、driver.network.add_authentication_handlerでユーザー名とパスワードを返すハンドラーを登録します。Selenium 4.51ではこれで動作しました。Chromeでは、当社のテストで認証情報を送る方法はどれも動作しませんでした。プロキシのスイッチに入れた認証情報は無視され、2つのBiDiハンドラーはどちらもタイムアウトしました。Chromeでは、テストを実行する公開IPをホワイトリストに登録してください。そうすれば、ブラウザは認証情報をまったく使わずに接続します。

Python SeleniumでChromeのプロキシを設定するには?

ChromeOptionsを作成し、引数--proxy-server=http://HOST:PORTを追加して、そのオプションをwebdriver.Chromeに渡します。SOCKS5の場合は、注文でプロキシをSOCKS5に切り替え、その後に注文に表示されるポートでsocks5://HOST:PORTを使います。

IPホワイトリストはSOCKS5でも使えますか?

はい。ホワイトリストに登録されたアドレスは、HTTPでもSOCKS5でも認証情報なしで受け入れられます。ChromeはSOCKS5のユーザー名とパスワードを送れないので、ChromeでSOCKS5を使えるのはこのためです。ホワイトリストはAPIかMCPサーバーで設定し、IPv4アドレスを指定します。 SOCKS5

テストスイートのブラウザごとに別のプロキシを使えますか?

はい、ドライバーごとに1つです。プロキシはドライバーの起動時のオプションの一部なので、2つのドライバーで2つのアドレスを使えます。実行中のChromeのプロキシを変えることはできないので、代わりに新しいドライバーを起動してください。

長いテストスイートの途中でアドレスが変わることはありますか?

ありません。ドライバーは終了するまで起動時のアドレスを使い続け、アドレス自体も請求期間中ずっとお客様に割り当てられたままです。一度に多数の送信元が必要なテストスイートには、送信元を入れ替えるプールが必要ですが、それはまだ販売していません。

プロキシは何に使えますか?

自社製品のエンドツーエンドテスト、自社ストアの地域別チェック、広告検証、価格調査、ブランド保護は、当社の適正利用ポリシーのもとで事前審査なしに行えます。CAPTCHA、ボット対策、レート制限、アカウント停止を破るためにブラウザを操作するのは別の話です。アドレスにそれはできず、それを試みることもポリシーで禁止しています。 適正利用ポリシー

静的アドレスなら、ブラウザのテストを再現できます。同じテストスイートを来週実行しても同じ場所から届くので、結果が変わればその原因はサイトにあります。アドレスはISPプロキシで注文し、価格は料金でご確認ください。通常のHTTP呼び出しに同じアドレスを設定するには、Python requestsのガイドをご覧ください。

出典