SeleniumBaseは、テスト環境でSeleniumインスタンスを実行するためのラッパーとして設計されています。とはいえ、単なるラッパー以上の機能を備えています。SeleniumBaseを使用すると、認証済みプロキシを介してSeleniumを実行できます。
Seleniumに内在するプロキシの問題
Seleniumのプロキシサーバーサポートは十分とは言えません。--proxy-server引数を渡すことは可能ですが、認証が必要なプロキシはサポートされていません。さらに深刻なのは、長年Seleniumとプロキシを連携させる主要手段だったSeleniumWireが、1年以上前に非推奨となり、2年以上更新されていないことです。

はじめに
まず、SeleniumBase をインストールし、テストケースを作成する必要があります。テストケースは実際に Selenium を制御し、WebDriver インスタンスを実行する役割を担います。
インストール
pip install seleniumbase
テストケースの作成
以下は簡単なテストケースです。このコードはIPinfo APIにリクエストを送信します。JSONレスポンスを受信したら、それをパースし、内容をコンソールに出力します。
from seleniumbase import BaseCase
from selenium.webdriver.common.by import By
import json
class ProxyTest(BaseCase):
def test_proxy(self):
#サイトへ移動
self.driver.get("https://ipinfo.io/json")
#JSONレスポンスを読み込み
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
#辞書を反復処理し内容を印刷
for k,v in location_info.items():
print(f"{k}: {v}")
テストの実行
実際にコードを実行するには、テストを実行する必要があります。python name_of_your_script.py ではなく、pytest を使用します。
プロキシなしの場合
プロキシなしでテストスクリプトを実行したい場合は、以下のコマンドを使用できます。
pytest proxy_test.py -s
以下のような応答が表示されます。
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-プロキシ
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
収集したアイテム数: 1
proxy_test.py ip: 23.28.108.255
hostname: d28-23-255-108.dim.wideopenwest.com
city: ウェストランド
region: ミシガン州
country: 米国
loc: 42.3242,-83.4002
組織: AS12083 WideOpenWest Finance LLC
郵便番号: 48185
タイムゾーン: America/Detroit
readme: https://ipinfo.io/missingauth.
==================================================== 1 項目が 1.01 秒で通過 ====================================================
プロキシ設定
プロキシを使用するには、--proxy フラグに続いてプロキシの URL を指定するだけです。以下の形式を参照してください。
--proxy=プロキシURL:プロキシポート
無料プロキシ
無料プロキシの使用例です。IPアドレスは155.54.239.64、ポート80で通信します。
--プロキシ=155.54.239.64:80
認証プロキシ
認証プロキシも同様の方法で扱います。認証プロキシを使用する場合、URLにユーザー名とパスワードを含めるだけです。
プロキシ=<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_URL>:<PROXY_PORT>
最適な認証プロキシの種類とプロバイダー
Seleniumで認証プロキシを使用する場合、最適な選択肢はレジデンシャルプロキシ、データセンター・プロキシ、ISPプロキシです。それぞれ異なるレベルの匿名性と信頼性を提供します。 レジデンシャルプロキシは実際のユーザーIPを使用するため成功率が最も高く、ボット検知回避に最適です。データセンター・プロキシは高速でコスト効率が良い反面、検知されやすい特徴があります。ISPプロキシは両者の利点を兼ね備え、高速性と高い信頼性を提供します。
推奨プロバイダー:
- 地域ターゲティング
- ローテーションプロキシ
SeleniumBaseによるスクレイピングには、Bright Dataのレジデンシャルプロキシが最も信頼性の高い選択肢であり、高い成功率と最小限のブロックを保証します。
プロキシを使用した実行
以下の例は、Bright Dataのプロキシを使用して実行するように設定されています。ユーザー名、ゾーン名、パスワードはご自身のものに置き換えてください。
pytest プロキシテスト.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>@brd.superproxy.io:33335 -s
実行すると以下の出力が得られます。よく見ると、ロケーションが変更されていることがわかります。
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-プロキシ
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
収集したアイテム数: 1
proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.lum-int.io
city: Piscataway
region: New Jersey
country: US
loc: 40.4993,-74.3990
組織: AS20473 The Constant Company, LLC
郵便番号: 08854
タイムゾーン: America/New_York
readme: https://ipinfo.io/missingauth.
==================================================== 1 項目が 3.25 秒で通過 ====================================================
位置情報の制御
当社のプロキシでは、位置情報を選択することも可能です。国フラグを使用することで実現できます。各国には2文字の国コードがあり、これをプロキシに渡すことで設定できます。
pytest プロキシテスト.py --proxy=brd-customer-<YOUR-USERNAME>-ゾーン-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>[email protected]:33335 -s
国コードとしてes(スペイン)を使用すると、スペインのプロキシ経由でルーティングされます。以下の出力でこれを確認できます。
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-プロキシ
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
収集したアイテム数: 1
proxy_test.py ip: 176.119.14.158
city: Paracuellos de Jarama
region: Madrid
country: ES
loc: 40.5035,-3.5278
組織: AS203020 HostRoyale Technologies Pvt Ltd
郵便番号: 28860
タイムゾーン: Europe/Madrid
readme: https://ipinfo.io/missingauth.
==================================================== 1 項目が 3.98 秒で通過 ====================================================
当社の地理位置情報ドキュメントはこちらでご覧いただけます。
ローテーションプロキシ
Pythonの基本知識さえあれば、かなり優れたプロキシシステムを構築できます。以下のコードでは国コードのセットを使用していますが、実際のプロキシIPと簡単に置き換え可能です。countriesには国コードのリストを保持しています。これらを順に処理し、4つの国コード全てでプロキシテストを実行します。
us: アメリカ合衆国es: スペインil: イスラエルgb: イギリス
import subprocess
#国コードのリスト
countries = [
"us",
"es",
"il",
"gb",
]
#各国を反復処理し、それぞれに対してシェルコマンドを生成
for country in countries:
command = f"pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-<YOUR-ゾーン-NAME>-country-{country}:[email protected]:33335 -s"
#シェルコマンドを実行
subprocess.run(command, shell=True)
通常のPythonファイルとして実行できます。
python rotate_proxies.py
コードを実行すると、以下のような出力が得られます。
(Linuxではデフォルトで--headlessが使用されます。上書きするには--headed / --guiを使用してください。代わりにXvfbモードを使用する場合は--xvfbを使用してください。または--headless / --headless2 / --ucを使用してこの情報を非表示にすることもできます。)
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-プロキシ
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
収集したアイテム数: 1
proxy_test.py ip: 164.90.142.33
city: Clifton
region: New Jersey
country: US
loc: 40.8344,-74.1377
組織: AS14061 DigitalOcean, LLC
郵便番号: 07014
タイムゾーン: America/New_York
readme: https://ipinfo.io/missingauth.
==================================================== 1 項目が 3.84 秒で通過 ====================================================
(Linux はデフォルトで --headless を使用します。上書きするには --headed / --gui を使用してください。 Xvfbモードを使用する場合は --xvfb を指定してください。または --headless / --headless2 / --uc でこの情報を非表示にできます。)
=================================================== テストセッション開始 ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-プロキシ
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
収集したアイテム数: 1
proxy_test.py ip: 5.180.9.15
city: Madrid
region: Madrid
country: ES
loc: 40.4066,-3.6724
組織: AS203020 HostRoyale Technologies Pvt Ltd
郵便番号: 28007
タイムゾーン: Europe/Madrid
readme: https://ipinfo.io/missingauth.
==================================================== 1 項目が 3.60 秒で通過 ====================================================
(Linux はデフォルトで --headless を使用します。上書きするには --headed / --gui を使用してください。 Xvfbモードを使用する場合は--xvfbを指定。または--headless / --headless2 / --ucでこの情報を非表示にできます。)
=================================================== テストセッション開始 ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-プロキシ
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
収集したアイテム数: 1
proxy_test.py ip: 64.79.233.151
city: Tel Aviv
region: Tel Aviv
country: IL
loc: 32.0809,34.7806
組織: AS9009 M247 Europe SRL
タイムゾーン: Asia/Jerusalem
readme: https://ipinfo.io/missingauth.
==================================================== 1 項目が 3.36 秒で通過 ====================================================
(Linux はデフォルトで --headless を使用します。上書きするには --headed / --gui を使用してください。 Xvfbモードを使用する場合は--xvfbを指定。または--headless / --headless2 / --ucでこの情報を非表示にできます。)
=================================================== テストセッション開始 ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-プロキシ
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
収集したアイテム数: 1
proxy_test.py ip: 185.37.3.107
city: London
region: England
country: GB
loc: 51.5085,-0.1257
組織: AS9009 M247 Europe SRL
郵便番号: E1W
タイムゾーン: Europe/London
readme: https://ipinfo.io/missingauth.
==================================================== 1 項目が 2.90 秒で通過 ====================================================
ご覧の通り、ごくわずかなコードで米国、スペイン、イスラエル、英国にあるプロキシを制御しています。
結論
ウェブスクレイピングにおいて、SeleniumBaseは多くの人が不可能と考えているSeleniumの機能を実現します。このガイドでは、プロキシの設定方法、地理的位置の制御方法、さらにはローテーションプロキシの方法まで学んできました。これらのツールは、遭遇するほとんどのブロック機構を回避するのに役立ちます。
Bright Dataの業界をリードするプロキシサービスで、Seleniumベースのスクラッピングの真の力を解き放ちましょう。今すぐ無料トライアルを開始し、シームレスで信頼性の高い大規模データ収集を体験してください!