Не могу установить прокси Luminati на Selenium в Python 3 - PullRequest
0 голосов
/ 12 апреля 2019

Я устанавливаю прокси для драйвера Firefox с Selenium на Python.

Я следовал этой инструкции, чтобы настроить прокси: https://github.com/luminati-io/api/blob/master/python/3.x/simple.py

username = 'lum-customer-CUSTOMER-zone-YOURZONE'
password = 'YOURPASS'
port = 22225
session_id = random.random()
super_proxy_url = ('http://%s-session-%s:%s@zproxy.luminati.io:%d' %
(username, session_id, password, port))

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


print(proxy)

driver = webdriver.Firefox(executable_path = "./bin/geckodriver", proxy=proxy)
driver.get('https://www.google.com')

Но похоже, чтопрокси не работает.Я всегда могу подключиться к сайту, даже если я настроил неправильное использование / пароль и URL хоста для прокси.

Я что-то пропустил?

Любая идея приветствуется.Спасибо!

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

Я использую хром и получаю успех.

import random
import time

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

username = 'x'
password = 'x'
port = 22225
session_id = random.random()
super_proxy_url = ('http://%s-session-%s:%s@zproxy.luminati.io:%d' %
                   (username, session_id, password, port))

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

print(proxy)

# driver = webdriver.Chrome(executable_path="./bin/geckodriver", proxy=proxy)

options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=%s' % proxy)

driver = webdriver.Chrome(
    executable_path='/Users/youjunliang/PycharmProjects/chromedriver',
    # options=options
)
# driver.get('https://www.google.com')
driver.get('https://www.amazon.com')
time.sleep(2)
driver.quit()

Можете ли вы проверить?

0 голосов
/ 29 апреля 2019

Наконец-то я нашел решение сам, а затем нажимаю здесь для братьев, которым оно необходимо:

Из 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...