Selenium WebDriverで認証付きプロキシを設定する方法
更新日:
標準のChromeDriverフラグ --proxy-server=http://ip:port はインラインの user:pass 認証情報を無視するため、ログインダイアログが表示されて処理が停止します。Seleniumで VinaProxy の認証済みHTTP(S)プロキシをスムーズに使用するには、selenium-wire を介して認証情報を渡すか、軽量なChrome onAuthRequired バックグラウンド拡張機能を読み込ませます。
http://user:pass@ip:port (selenium-wire / Chrome proxy extension)- 1 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
- 1 IP₫75,000
- 3+ IP₫70,000
- 5+ IP₫65,000
- 10+ IP₫60,000
- 50+ IP₫60,000
- 100+ IP₫60,000
- 200+ IP₫60,000
- 500+ IP₫55,000
Seleniumでプロキシ認証を行う2つの確実なアプローチ
使用している言語ランタイムとブラウザドライバの構成に合わせて最適な方法を選択してください:
| アプローチ | コード構文の例 | 最適な用途 |
|---|---|---|
selenium-wire(Python) | seleniumwire_options={'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} | Pythonで最も迅速な設定方法。セッション実行中のプロキシ動的切替にも対応 |
| Chrome Auth 拡張機能 | chrome.webRequest.onAuthRequired を処理するZIP拡張機能を読み込む | Python、Java、C#の標準Seleniumや undetected-chromedriver に最適 |
| Playwrightへの移行 | browser.newContext({ proxy: { server, username, password } }) | 拡張機能不要でコンテキストごとのネイティブプロキシ認証に対応 |
プロキシ環境でのSeleniumスクレイピング最適化のコツ
options.page_load_strategy = 'eager'を設定し、DOMの読み込みが完了した時点で操作を開始して、重い解析タグの読み込み待ちを省きます- ヘッドレス実行時は
--headless=new(Chrome 109以降)を使用し、Chrome拡張機能とプロキシ認証を有画面モードと全く同様に動作させます - テキストデータのみを抽出する場合は、Chromeの設定で画像の描画を無効化して帯域幅を節約し高速化を図ります
- 孤立したChromiumプロセスが残らないよう、必ず
try / finally: driver.quit()でドライバを終了してください
手順
- 1
selenium-wire のインストール
Pythonの仮想環境で
pip install selenium-wireを実行します。 - 2
VinaProxy プロキシ設定辞書の定義
認証情報を
sw_options = {'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}}の形式で定義します。 - 3
seleniumwire_options を指定して Chrome を起動
driver = webdriver.Chrome(seleniumwire_options=sw_options)でブラウザを初期化します。 - 4
出口IPアドレスの確認
driver.get('https://vinaproxy.com/api/my-ip')を開き、返却されたJSONにプロキシIPが表示されていることを確認します。
よくある質問
ChromeOptionsの'--proxy-server=http://user:pass@ip:port'が機能しない原因は?
Chromiumの仕様により、コマンドライン引数の --proxy-server から user:pass@ 部分が自動的に除外されるためです。selenium-wire、onAuthRequired 拡張機能、または Playwright を使うことで解決できます。
selenium-wireでChromeを再起動せずにプロキシを変更できますか?
はい、可能です。実行中に driver.proxy = {'http': 'http://...', 'https': 'http://...'} に新しい辞書を再代入することで、瞬時に接続先プロキシを切り替えられます。
Chromeプロキシ拡張機能はヘッドレスモードでも動きますか?
はい。旧来の --headless ではなく --headless=new フラグを指定すれば正常に動作します。
通信量無制限の固定IPでSelenium WebDriverを大規模運用
世界7カ国の専用IPv4および固定住宅ISPプロキシを即時提供。
Selenium用プロキシを購入