动态代理

# 毋庸明码验证办法chromeOptions = webdriver.ChromeOptions()chromeOptions.add_argument('--proxy-server=http://ip:port')  driver = webdriver.Chrome(chrome_options=chromeOptions)

应用隧道代理

#!/usr/bin/env python# -*- coding: utf-8 -*-from __future__ import print_function from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsimport stringimport zipfile  def create_proxyauth_extension(proxy_host, proxy_port,                               proxy_username, proxy_password,                               scheme='http', plugin_path=None):    """Proxy Auth Extension    args:        proxy_host (str): domain or ip address, ie proxy.domain.com        proxy_port (int): port        proxy_username (str): auth username        proxy_password (str): auth password    kwargs:        scheme (str): proxy scheme, default http        plugin_path (str): absolute path of the extension    return str -> plugin_path    """         if plugin_path is None:        plugin_path = '/tmp/vimm_chrome_proxyauth_plugin.zip'     manifest_json = """    {        "version": "1.0.0",        "manifest_version": 2,        "name": "Chrome Proxy",        "permissions": [            "proxy",            "tabs",            "unlimitedStorage",            "storage",            "<all_urls>",            "webRequest",            "webRequestBlocking"        ],        "background": {            "scripts": ["background.js"]        },        "minimum_chrome_version":"22.0.0"    }    """     background_js = string.Template(    """    var config = {            mode: "fixed_servers",            rules: {              singleProxy: {                scheme: "${scheme}",                host: "${host}",                port: parseInt(${port})              },              bypassList: ["foobar.com"]            }          };    chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});    function callbackFn(details) {        return {            authCredentials: {                username: "${username}",                password: "${password}"            }        };    }    chrome.webRequest.onAuthRequired.addListener(                callbackFn,                {urls: ["<all_urls>"]},                ['blocking']    );    """    ).substitute(        host=proxy_host,        port=proxy_port,        username=proxy_username,        password=proxy_password,        scheme=scheme,    )    with zipfile.ZipFile(plugin_path, 'w') as zp:        zp.writestr("manifest.json", manifest_json)        zp.writestr("background.js", background_js)     return plugin_path# 生成隧道代理 插件proxyauth_plugin_path = create_proxyauth_extension(    proxy_host="transfer.mogumiao.com",                     proxy_port=9001,    proxy_username="username",                              # 输出隧道账号    proxy_password="passwod",                               # 输出明码    plugin_path="D:\chrome_proxyauth_plugin.zip"                               ) # 在options中调用options = Options()options.add_argument("--start-maximized")options.add_extension(proxyauth_plugin_path) # driver = webdriver.Chrome(chrome_options=options)driver.get("https://www.baidu.com/")