18

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

SOにはいくつかの同様の質問があります。ただし、Python の Selenium Firefox WebDriver には具体的な解決策はありません。

4

6 に答える 6

8

資格情報が保存されているプロファイルで Firefox を実行することに加えて。loginTextboxおよび(アラート ウィンドウ)password1Textboxに書き込む拡張機能をロードすることで実行できます。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)
于 2016-10-06T18:52:34.560 に答える
0

Firefox + Python の例がありますが、ここでは認証なしです。次に、ソース コードで他の利用可能なパラメーターを見つけることができますしたがって、次のものが必要なようです。

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()。を参照して、すべての FF オプションを手動で表示することもできますabout:config

于 2016-07-11T13:31:09.033 に答える