私はこのコードを使用しています:
profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", "proxy.server.address")
profile.set_preference("network.proxy.http_port", "port_number")
profile.update_preferences()
driver = webdriver.Firefox(firefox_profile=profile)
python webdriver。これはFFで機能します。Chromeでこのようにプロキシを設定する方法は?これを見つけました exmaple しかし、あまり役に立ちません。スクリプトを実行しても何も起こりません(Chromeブラウザは起動しません)。
from Selenium import webdriver
PROXY = "23.23.23.23:3128" # IP:PORT or Host:PORT
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=%s' % PROXY)
chrome = webdriver.Chrome(options=chrome_options)
chrome.get("http://whatismyipaddress.com")
私のために働いています...
from Selenium import webdriver
PROXY = "23.23.23.23:3128" # IP:PORT or Host:PORT
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://%s' % PROXY)
chrome = webdriver.Chrome(chrome_options=chrome_options)
chrome.get("http://whatismyipaddress.com")
私は同じことで問題がありました。 ChromeOptionsは、あなたが思うように望ましい機能と統合されていないため、非常に奇妙です。正確な詳細は忘れてしまいますが、基本的にChromeOptionsは、目的の機能辞書を渡したかどうかに基づいて、特定の値をデフォルトにリセットします。
ChromeOptionsの複雑さを心配せずに独自の辞書を指定できるようにする次のモンキーパッチを実行しました
/Selenium/webdriver/chrome/webdriver.pyの次のコードを変更します。
def __init__(self, executable_path="chromedriver", port=0,
chrome_options=None, service_args=None,
desired_capabilities=None, service_log_path=None, skip_capabilities_update=False):
"""
Creates a new instance of the chrome driver.
Starts the service and then creates new instance of chrome driver.
:Args:
- executable_path - path to the executable. If the default is used it assumes the executable is in the $PATH
- port - port you would like the service to run, if left as 0, a free port will be found.
- desired_capabilities: Dictionary object with non-browser specific
capabilities only, such as "proxy" or "loggingPref".
- chrome_options: this takes an instance of ChromeOptions
"""
if chrome_options is None:
options = Options()
else:
options = chrome_options
if skip_capabilities_update:
pass
Elif desired_capabilities is not None:
desired_capabilities.update(options.to_capabilities())
else:
desired_capabilities = options.to_capabilities()
self.service = Service(executable_path, port=port,
service_args=service_args, log_path=service_log_path)
self.service.start()
try:
RemoteWebDriver.__init__(self,
command_executor=self.service.service_url,
desired_capabilities=desired_capabilities)
except:
self.quit()
raise
self._is_remote = False
変更されたのは「skip_capabilities_update」kwargだけでした。今、私は自分の辞書を設定するためにこれを行います:
capabilities = dict( DesiredCapabilities.CHROME )
if not "chromeOptions" in capabilities:
capabilities['chromeOptions'] = {
'args' : [],
'binary' : "",
'extensions' : [],
'prefs' : {}
}
capabilities['proxy'] = {
'httpProxy' : "%s:%i" %(proxy_address, proxy_port),
'ftpProxy' : "%s:%i" %(proxy_address, proxy_port),
'sslProxy' : "%s:%i" %(proxy_address, proxy_port),
'noProxy' : None,
'proxyType' : "MANUAL",
'class' : "org.openqa.Selenium.Proxy",
'autodetect' : False
}
driver = webdriver.Chrome( executable_path="path_to_chrome", desired_capabilities=capabilities, skip_capabilities_update=True )
認証が必要なchromeでプロキシサーバーをセットアップする方法を尋ねる人々は、これらの手順に従う必要があります。