web-dev-qa-db-ja.com

Python + Seleniumを使用してプロキシ認証(ユーザーとパスワード)を設定する方法

Python 2.7 with SeleniumでFirefox WebDriverを使用しています。私のpythonプログラムは、Firefoxブラウザを起動し、プログラムを実行するとさまざまなWebサイトにアクセスします。しかし、認証付きのプロキシを設定して、プログラムが任意のWebサイトにアクセスしたときに、プロキシサーバー経由でアクセスするようにします。

SOについても同様の質問があります。ただし、PythonのSelenium Firefox WebDriverに固有のソリューションはありません。

11
Rafayet Ullah

資格情報が保存されているプロファイルでFirefoxを実行することに加えて。これは、password1TextboxloginTextboxおよびchrome://global/content/commonDialog.xulに書き込む拡張機能をロードして実行できます(アラートウィンドウ)。

仕事をする拡張機能はすでにいくつかあります。例:Close Proxy Authentication

https://addons.mozilla.org/firefox/downloads/latest/close-proxy-authentication/addon-427702-latest.xpi

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)
8
Nuno André

複製: 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キャッシュフォルダーをご覧ください。ディスク容量をすべて使用するため、問題が発生しました。必要に応じて、スクリプトから削除する必要がある場合があります。

3

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オプションを手動で表示することもできます。

1
Eugene S

拡張子付きの回答に加えて。

フォーム入力を使用して、プロキシの資格情報を動的に変更することもできます。拡張機能ページをロードし、フォームに自動的に入力して、[保存]をクリックするだけです!