【问题标题】:Python Selenium | Update Proxy Without Restarting BrowserPython 硒 |在不重启浏览器的情况下更新代理
【发布时间】:2017-10-09 14:13:27
【问题描述】:

我正在创建一个机器人,它可以访问网站,更改代理,然后重新加载网站。我想在循环中更新 chrome webdriver 的代理,但我只有在使用新代理创建新的 webdriver 时才找到一种方法。我只想更新当前 chromedriver 的代理,而不是使用新代理创建新代理。

x = 1
while x < 5:

    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--proxy-server=%s' % random.choice(PROXY))

    chrome = webdriver.Chrome(chrome_options=chrome_options)
    chrome.get("http://whatismyipaddress.com")
    x = x + 1

此代码在每次循环循环时都会创建一个新的 webdriver。我怎样才能让它只更新当前网络驱动程序的新代理?

我想在不重新启动浏览器的情况下更改代理的原因是,如果我重新启动我需要输入验证码,而当我不需要时,我可以简单地更改代理并点击发送而不输入验证码。

【问题讨论】:

    标签: python selenium proxy


    【解决方案1】:

    我找到了这个解决方案,它只适用于 PhantomJS

        browser.command_executor._commands['executePhantomScript'] = ('POST', '/session/$sessionId/phantom/execute')
        browser.execute('executePhantomScript', {'script': 'phantom.setProxy('PROXY_IP', 'PROXY_PORT');', 'args' : [] })
    

    通过参数传递代理不允许在运行时更改代理。您必须创建另一个 webdriver 实例。

    【讨论】:

      【解决方案2】:

      如果你使用 Firefox geckodriver 你可以使用这个代码

      driver = = webdriver.Firefox(firefox_profile=proxy_settings, executable_path='geckodriver')
      
      driver.refresh()
      

      刷新允许新代理生效/不适用于 chrome

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-21
        相关资源
        最近更新 更多