Наконец-то я нашел решение сам, а затем нажимаю здесь для братьев, которым оно необходимо:
Из geckodriver v0.19.1 они удаляют socketUsername и socketPassword. Поэтому мы больше не можем использовать "http://username -sessionid-: passwords@zproxy.luminati.io: порт ".
Решение: сохранить имя пользователя и пароль в профиле Firefox и восстановить его.
Или мы можем ввести пароль и имя пользователя, когда Firefox спросит его, как показано ниже:
класс SeleniumWebDriver:
# Set proxy url and proxy port via proxy_url
def get_proxy_cabability(proxy_url):
desired_capability = webdriver.DesiredCapabilities.FIREFOX
desired_capability['proxy'] = {
"proxyType": "manual",
"httpProxy": proxy_url,
"ftpProxy": proxy_url,
"sslProxy": proxy_url,
"socksVersion": 4
}
return desired_capability
#get driver
def get_driver(proxy_url):
desired_capability = self.get_proxy_cabability(proxy_url)
driver = webdriver.Firefox(capabilities=desired_capability, log_path=log_path)
return driver
def set_auth_proxy(username, password):
try:
# Force driver show authentication dialog
self.driver.get('http://www.google.com/')
# Waiting for alert
WebDriverWait(self.driver, 20).until(
ec.alert_is_present())
alert = self.driver.switch_to_alert()
# send auth information
alert.send_keys(username + Keys.TAB + password)
time.sleep(3)
alert.accept()
except Exception as e:
raise Exception("Can not authenticate proxy server")