Python 2.7 with SeleniumでFirefox WebDriverを使用しています。私のpythonプログラムは、Firefoxブラウザを起動し、プログラムを実行するとさまざまなWebサイトにアクセスします。しかし、認証付きのプロキシを設定して、プログラムが任意のWebサイトにアクセスしたときに、プロキシサーバー経由でアクセスするようにします。
SOについても同様の質問があります。ただし、PythonのSelenium Firefox WebDriverに固有のソリューションはありません。
資格情報が保存されているプロファイルでFirefoxを実行することに加えて。これは、password1Textbox
のloginTextbox
およびchrome://global/content/commonDialog.xul
に書き込む拡張機能をロードして実行できます(アラートウィンドウ)。
仕事をする拡張機能はすでにいくつかあります。例:Close Proxy Authentication
from Selenium import webdriver
from base64 import b64encode
proxy = {'Host': Host, 'port': PORT, 'usr': USER, 'pwd': PASSWD}
fp = webdriver.FirefoxProfile()
fp.add_extension('closeproxy.xpi')
fp.set_preference('network.proxy.type', 1)
fp.set_preference('network.proxy.http', proxy['Host'])
fp.set_preference('network.proxy.http_port', int(proxy['port']))
# ... ssl, socks, ftp ...
fp.set_preference('network.proxy.no_proxies_on', 'localhost, 127.0.0.1')
credentials = '{usr}:{pwd}'.format(**proxy)
credentials = b64encode(credentials.encode('ascii')).decode('utf-8')
fp.set_preference('extensions.closeproxyauth.authtoken', credentials)
driver = webdriver.Firefox(fp)
複製: Python/Seleniumを使用してプロキシ認証のユーザー名:パスワードを設定する方法
セレンワイヤー: https://github.com/wkeeling/Selenium-wire
Selenium-wireをインストールします
pip install Selenium-wire
インポート
from seleniumwire import webdriver
プロキシへの認証
options = {
'proxy': {
'http': 'http://username:password@Host:port',
'https': 'https://username:password@Host:port',
'no_proxy': 'localhost,127.0.0.1,dev_server:8080'
}
}
driver = webdriver.Firefox(seleniumwire_options=options)
警告
Selenium-wireキャッシュフォルダーをご覧ください。ディスク容量をすべて使用するため、問題が発生しました。必要に応じて、スクリプトから削除する必要がある場合があります。
Firefoxの例があります+ Pythonただし、認証なし here 。次に、ソースコードで他の使用可能なパラメータ here を見つけることができます。したがって、次のものが必要なようです。
_socksUsername
socksPassword
_
例えば:
_from Selenium import webdriver
from Selenium.webdriver.common.proxy import *
myProxy = "Host:8080"
proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': myProxy, # set this value as desired
'ftpProxy': myProxy, # set this value as desired
'sslProxy': myProxy, # set this value as desired
'noProxy': '' # set this value as desired
'socksUsername': = ''
'socksPassword': = ''
})
driver = webdriver.Firefox(proxy=proxy)
_
または設定で:
_driverPref = webdriver.FirefoxProfile()
driverPref.set_preference("network.proxy.type", 1)
.
.
.
driverPref.set_preference('network.proxy.socks', proxyHost)
driverPref.set_preference('network.proxy.socks_port', proxyPort)
driverPref.update_preferences()
driver = webdriver.Firefox(firefox_profile=driverPref)
_
[〜#〜]編集[〜#〜]:
もう一度見たところ、FFで認証の詳細を手動で設定することは不可能のようです。唯一の方法は、2つのパラメータによって行われた、すでに入力した詳細を記憶することです。
_signon.autologin.proxy=true
network.websocket.enabled=false
_
set_preference()
メソッドで設定できます。 _about:config
_にアクセスして、すべてのFFオプションを手動で表示することもできます。
拡張子付きの回答に加えて。
フォーム入力を使用して、プロキシの資格情報を動的に変更することもできます。拡張機能ページをロードし、フォームに自動的に入力して、[保存]をクリックするだけです!