# Seleniumのプロキシ設定：ChromeとFirefoxを静的ISP IPで | ProxyJam

SeleniumでChromeとFirefoxにプロキシを設定する方法、--proxy-serverに認証情報を入れると失敗する理由、IPホワイトリストで置き換える方法。検証済みのPythonコード付き。

- Canonical: https://proxyjam.com/ja/integrations/selenium/
- Updated: 2026-10-23
- Language: ja

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でプロキシを設定する

1. **テストを実行する公開IPを調べる** マシンやCIランナーのローカルアドレスではなく、インターネットから見えるアドレスです。[What Is My IP](/ja/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を一度開き、購入したアドレスが表示されることを確かめてから、テストスイートを実行します。

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

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

### Chrome

HTTPプロキシ経由のChrome。

```
# 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()
```

### Firefoxとパスワード

プロキシのパスワード要求に応答するFirefox。

```
# 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()
```

### Firefox

ホワイトリスト登録済みのHTTPプロキシ経由のFirefox。

```
# 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()
```

### ChromeとSOCKS5

SOCKS5プロキシ経由のChrome。

```
# 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()
```

### ホワイトリストの呼び出し

お客様のIPをプロキシのホワイトリストに追加します。

```
# 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"]}'
```


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

|  | HTTPプロキシ | SOCKS5プロキシ | ユーザー名とパスワード |
|---|---|---|---|
| Chrome | --proxy-server=http://HOST:PORT | --proxy-server=socks5://HOST:PORT | --proxy-server内では無視される。ホワイトリストを使う |
| Firefox | httpProxyとsslProxyを指定したProxy | socksProxyとsocksVersion 5を指定したProxy | HTTPでは、add_authentication_handler（BiDi）で動作した |
| ChromeのBiDiハンドラー | add_auth_handlerとadd_authentication_handlerはどちらもタイムアウトした | 未検証 | 今後のSeleniumかChromeでこれが変わるまでは、ホワイトリストを使う |

2026-10-22に、Selenium 4.51とヘッドレスモードのChromeおよびFirefoxで、あるポートではパスワードを求め、別のポートではホワイトリスト登録済みのクライアントを受け入れるローカルのプロキシに対して検証しました。


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

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

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

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

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

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

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

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

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

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

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


## 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アドレスを指定します。

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

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

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

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

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

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


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



## 出典

- [Selenium documentation, Proxy](https://www.selenium.dev/documentation/webdriver/drivers/options/#proxy)：ブラウザのオプションでのプロキシ設定
- [Selenium documentation, Selenium Manager](https://www.selenium.dev/documentation/selenium_manager/)：ドライバーのダウンロード方法と、その際に設定済みのプロキシが使われること
- [Chromium, network settings](https://www.chromium.org/developers/design-documents/network-settings/)：`--proxy-server`スイッチとそのスキーム




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

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

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

