简体   繁体   English

无法在Python 3中的Selenium上设置Luminati代理

[英]Can not set Luminati proxy on Selenium in Python 3

I am setting up proxy for Firefox driver with Selenium on Python. 我正在Python上使用Selenium设置Firefox驱动程序的代理。

I followed this instruction to setup the proxy: https://github.com/luminati-io/api/blob/master/python/3.x/simple.py 我按照以下说明设置了代理: 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')

But it 's seem that the proxy is not work. 但是似乎代理不起作用。 I am always can connect to the site even if I setup a wrong use/password and host url for the proxy. 即使我为代理设置了错误的使用/密码和主机网址,我也始终可以连接到该站点。

Did I missed something? 我错过了什么吗?

Any idea is appreciate. 任何想法都值得赞赏。 Thanks! 谢谢!

I use chrome and get success. 我使用chrome并获得成功。

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()

Can you test? 你可以测试吗?

Finally, I found the solution by myself, then I push it here for brothers who need it: 最后,我自己找到了解决方案,然后将其推送给需要它的兄弟:

From geckodriver v0.19.1, they remove socketUsername and socketPassword. 他们从geckodriver v0.19.1中删除了socketUsername和socketPassword。 Therefore we can not use " http://username-sessionid-:passwords@zproxy.luminati.io:port " anymore. 因此,我们不能再使用“ http:// username-sessionid-:passwords@zproxy.luminati.io:port ”。

Solution are: save username and password to firefox profile and retrieve it. 解决方法是:将用户名和密码保存到firefox配置文件中并进行检索。 Or we can enter password and username when firefox ask it as bellow: 或者,当firefox要求以下信息时,我们可以输入密码和用户名:

class SeleniumWebDriver: 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")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM