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

2024-06-16 11:01:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python上的Selenium为Firefox驱动程序设置代理。在

我按照以下说明设置代理: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')

但代理似乎不起作用。我总是可以连接到网站,即使我设置了一个错误的使用/密码和主机网址的代理。在

我错过什么了吗?在

任何想法都是值得感激的。谢谢!在


Tags: httpsiocomidurl代理portsession
2条回答

我使用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()

你能测试一下吗?在

最后,我自己找到了解决办法,然后我把它推给需要它的兄弟们:

从geckodriver v0.19.1中,他们删除了socketUsername和socketPassword。因此我们不能再使用“http://username-sessionid-:passwords@zproxy.luminati.io:port”。在

解决方案是:将用户名和密码保存到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")

相关问题 更多 >