Chromeriver Python Selen аутентифицировать прокси-сервер luminati? - PullRequest
0 голосов
/ 20 сентября 2019

Привет! Я использую селеновый хромедривер и использую Luminati Proxy.Но я не могу понять, как установить имя пользователя и пароль для прокси.

Я пробовал этот код:

import random
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.proxy import Proxy, ProxyType, ProxyTypeFactory
from selenium.webdriver.support import expected_conditions as EC

username = 'lum-customer-XXXX-static'
password = 'XXXXXX'
port = 22225
session_id = random.random()
super_proxy_url = ('http://%s-session-%s:%s@zproxy.lum-superproxy.io:%d' %(username, session_id, password, port))

proxy = Proxy()
proxy.http_proxy = proxy_url
proxy.ftp_proxy = proxy_url
proxy.ssl_proxy = proxy_url
proxy.no_proxy = "localhost"
proxy.proxy_type = ProxyType.MANUAL

chromedriver_path = '/usr/local/share/chromedriver' # Change this to your own chromedriver path!
driver = webdriver.Chrome(executable_path=chromedriver_path,chrome_options=chrome_options)
driver.get("https://whatismyipaddress.com/")

Но не подключается к моему прокси-серверу.Я также попробовал требуемые возможности.Его код показан ниже:

desired_capabilities = webdriver.DesiredCapabilities.CHROME
desired_capabilities['proxy'] = {
    "proxyType":"manual",
    "httpProxy":"zproxy.lum-superproxy.io:22225",
    "ftpProxy":"zproxy.lum-superproxy.io:22225",
    "sslProxy":"zproxy.lum-superproxy.io:22225",
    "socksUsername":"lum-customer-XXXXX-zone-static",
    "socksPassword":"XXXX",
    "socksVersion": 4
}
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,desired_capabilities=desired_capabilities)
driver.get("https://whatismyipaddress.com/")
WebDriverWait(driver, 20).until(EC.alert_is_present())
alert = driver.switch_to_alert()
alert.send_keys(username + Keys.TAB + password)
# time.sleep(5)
alert.accept()

Но имя пользователя и пароль не заполняет окно предупреждения, требующее имя пользователя и пароль для прокси.

Пожалуйста, помогите мне.Если есть какой-либо альтернативный способ аутентификации прокси, пожалуйста, поделитесь со мной.Спасибо

1 Ответ

0 голосов
/ 23 сентября 2019

Использование прокси-аутентификации с селеном может быть непростым делом, потому что вам нужно использовать правильные версии веб-драйверов, селен и браузер для всех, кто поддерживает прокси-сервер.Я рекомендую использовать одну из этих альтернатив для установки прокси-сервера непосредственно в вашем коде с помощью selenium.

  1. Установите прокси-сервер с учетными данными на хост-компьютере - просто будьте осторожны, чтобы отключить прокси, когда вы нене нужно это или настроить на виртуальной машине, которую вы используете только с прокси.Вот как они рекомендуют делать это на веб-сайте selenium: https://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#using-a-proxy
  2. Используйте Luminati Proxy manager (https://github.com/luminati-io/luminati-proxy)), чтобы настроить прокси-порт, который не требует аутентификации и передает трафик через вашучетные данные прокси.
  3. Используйте Puppeteer для обработки хрома без головы (https://pypi.org/project/pyppeteer/), поскольку библиотека кукловода поставляется с правильной версией хрома и с ней гораздо легче начать работу.
...