代码之家  ›  专栏  ›  技术社区  ›  Arti

将代理与docker selenium python一起使用不起作用

  •  2
  • Arti  · 技术社区  · 8 年前

    我想在Docker Selenium容器中使用带有用户名和密码的代理。

    我尝试了所有我发现的解决方法,但都没有成功。我尝试了http代理:

    capabilities = DesiredCapabilities.FIREFOX
            capabilities['proxy'] = {
                'proxyType': 'MANUAL',
                'httpProxy': f'{proxy.ip_address}:{proxy.port}',
                'sslProxy': 'ip:port',
                'socksUsername': proxy.login,
                'socksPassword': proxy.password
            }
    browser = webdriver.Remote(command_executor='http://hub:4444/wd/hub',
                                   desired_capabilities=capabilities,
                                   browser_profile=profile)
    

    selenium.common.exceptions.invalidargumentexception:消息:无效 代理配置项:sockspassword

    尝试的SOCKS代理:

    proxy = Proxy({
                        'proxyType': ProxyType.MANUAL,
                        'socksProxy': f'{proxy.ip_address}:{proxy.port}',
                        'socksUsername': proxy.login,
                        'socksPassword': proxy.password
                    })
    
    browser = webdriver.Remote(command_executor='http://hub:4444/wd/hub',
                                       desired_capabilities=capabilities,
                                       browser_profile=profile,
                                       proxy=proxy)
    

    消息:无效的代理配置项:sockspassword

    我还试图通过firefox配置文件设置代理,比如 here ,但似乎不起作用,因为没有为代理设置密码的选项。

    代理正在工作,因为当我请求时:

    proxy = 'socks5://username:password@ip:port' resp = requests.get('https://api.ipify.org?format=json',
                                        proxies=dict(http=proxy,
                                                     https=proxy)) print(resp.json())
    

    返回正确的结果

    1 回复  |  直到 8 年前
        1
  •  0
  •   Arti    7 年前

    唯一的解决方案是使用不带密码的代理