【问题标题】:Python selenium - Proxy connection with host, port, username, passwordPython selenium - 与主机、端口、用户名、密码的代理连接
【发布时间】:2020-04-04 20:36:21
【问题描述】:

我想要的: 具有私有导航和自动登录到 HTTPS 代理的无头浏览器

我尝试了什么:
- PhantomJS -> 已弃用
- Google Chrome -> 代理工作,但不适用于 Headless
- Firefox -> Headless OK Private nav OK 但不能在代理连接中使用用户名和密码

我有 4 个变量,pxy["host"] ("xx.xx.xx.xx:xx"), pxy["username"], pxy["password"]
使用 Firefox 我做了一些测试
测试 1 - 带提示的功能

capabilities['proxy'] = {'proxyType': 'MANUAL',
                'httpProxy': pxy["host"],
                'ftpProxy': pxy["host"],
                'sslProxy': pxy["host"],
                'noProxy': ''
                }

在 Firefox 中打开一个提示输入登录名和密码。我尝试使用警报功能以警报形式发送密钥,但它不适用于 firefox。

测试 2 - 具有凭据的功能

capabilities['proxy'] = {'proxyType': 'MANUAL',
                'httpProxy': pxy["host"],
                'ftpProxy': pxy["host"],
                'sslProxy': pxy["host"],
                'socksUsername': pxy['login'],
                'socksPassword': pxy['password']
                }

这是一个错误:

selenium.common.exceptions.InvalidArgumentException: Message: Invalid proxy configuration entry: socksPassword

测试 3 - firefox 首选项

ip = pxy["host"].split(":")[0]
port = pxy["host"].split(":")[1]
firefox_profile.set_preference("network.proxy.type", 1)
firefox_profile.set_preference("network.proxy.http", ip)
firefox_profile.set_preference("network.proxy.http_port", port)
firefox_profile.set_preference("network.proxy.socks_username", pxy["login"])
firefox_profile.set_preference("network.proxy.socks_password", pxy["password"])

这没有任何作用,只需保留我的 ip...

测试 4 - 扩展?
我想我可以使用像 closeproxyauth.xpi (太旧)这样的扩展来设置我的代理,但我不确定我做了什么。 当我使用 firefox_profile.add_extension(extension=extension_path) 时,浏览器中没有出现扩展名,但路径正确。
我尝试使用 driver.install_addon(extension=extension_path,temporary=True) 但他从未找到我的路径

【问题讨论】:

    标签: python python-3.x selenium selenium-webdriver proxy


    【解决方案1】:

    复制者:How to set proxy AUTHENTICATION username:password using Python/Selenium

    硒线:https://github.com/wkeeling/selenium-wire

    安装 selenium-wire

    pip install selenium-wire
    

    导入

    from seleniumwire import webdriver
    

    授权代理

    options = {
    'proxy': {
        'http': 'http://username:password@host:port',
        'https': 'https://username:password@host:port',
        'no_proxy': 'localhost,127.0.0.1,dev_server:8080'
        }
    }
    driver = webdriver.Firefox(seleniumwire_options=options)
    

    警告
    查看 selenium-wire 缓存文件夹。我遇到了问题,因为它占用了我所有的磁盘空间。有时您必须在需要时在脚本中将其删除。

    【讨论】:

      猜你喜欢
      • 2019-07-25
      • 1970-01-01
      • 2023-03-27
      • 2021-10-10
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多