web-dev-qa-db-ja.com

Python)のSeleniumWebdriverでヘッドレスFirefoxでhttpプロキシを使用する

私は次のようにFirefoxをヘッドレスで使用しています。

from Selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from Selenium import webdriver
import os
import sys

# Set the MOZ_HEADLESS environment variable which casues Firefox to
# start in headless mode.
os.environ['MOZ_HEADLESS'] = '1'

# Select your Firefox binary.
binary = FirefoxBinary('/usr/bin/firefox', log_file=sys.stdout)

# Start Selenium with the configured binary.
driver = webdriver.Firefox(firefox_binary=binary)

しかし今、私はユーザー/パスワードを必要とするhttpプロキシを追加したいと思います。探し回った後、私は以下を試しました:

from Selenium.webdriver.common.proxy import Proxy, ProxyType

myProxy = "xx.xx.xx.xx:80"

proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': myProxy,
    'ftpProxy': myProxy,
    'sslProxy': myProxy,
    'noProxy': '' # set this value as desired
    })

driver = webdriver.Firefox(firefox_binary=binary, proxy=proxy)

私も試しました

profile = webdriver.FirefoxProfile() 
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", "xx.xx.xx.xx")
profile.set_preference("network.proxy.http_port", 80)
profile.update_preferences() 
driver=webdriver.Firefox(firefox_binary=binary,firefox_profile=profile)

最後に、「socksUsername」と「socksPassword」をcredsとともにproxyに追加しようとしましたが、これは本当の希望よりも必死でした。

言うまでもなく、これらはいずれも機能せず、テストでは、リクエストがプロキシではなく通常のIPを使用していることが示されています。

また、この場合、システム全体のプロキシはオプションではありません。

Httpプロキシ資格情報はどこに存在する必要がありますか?ヘッドレスFirefoxでプロキシを使用するにはどうすればよいですか?

テスト

driver.get("https://www.ipinfo.io");
driver.find_element_by_xpath('//h4/following-sibling::p').text
14
fpghost

プロキシにユーザー名とパスワードが必要な場合は、次のように記述する必要があります。

from Selenium.webdriver.common.proxy import Proxy, ProxyType

myProxy = "username:password@proxyDomain:proxyPort"

proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': myProxy,
    'ftpProxy': myProxy,
    'sslProxy': myProxy,
    'noProxy': '' # set this value as desired
    })

driver = webdriver.Firefox(firefox_binary=binary, proxy=proxy)
1
Reupiey

でプロファイルを手動で設定してみましたか

./firefox --ProfileManager

プロキシを手動でセットアップしてから、手動で設定したプロファイルをロードします

from Selenium import webdriver

url = "https://mail.google.com"
fp = webdriver.FirefoxProfile('/Users/<username>/Library/Application Support/Firefox/Profiles/71v1uczn.default')

driver = webdriver.Firefox(fp)
0

次のニーモニックで環境変数 "HTTP_PROXY"を設定してみてください。

http://<username>:<password>@<proxy_url>

たとえば、「@」が前に付いているプロキシURLの前に、コロン「:」で区切って資格情報を追加します。

http://username:[email protected]:8080/file.pac
0
Samiie