美文网首页
Selenium程序中亿牛云动态转发代理信息配置

Selenium程序中亿牛云动态转发代理信息配置

作者: 亿牛云1 | 来源:发表于2019-03-14 16:43 被阅读0次

     

        from selenium import webdriver

        import string

        import zipfile

        # 代理服务器

        proxyHost = "t.16yun.cn"

        proxyPort = "31111"

        # 代理隧道验证信息

        proxyUser = "username"

        proxyPass = "password"

        def create_proxy_auth_extension(proxy_host, proxy_port,

                                       proxy_username, proxy_password,

                                       scheme='http', plugin_path=None):

            if plugin_path is None:

                plugin_path = r'C:/{}_{}@t.16yun.zip'.format(proxy_username, proxy_password)

            manifest_json = """        {            "version": "1.0.0",            "manifest_version": 2,            "name": "16YUN Proxy",            "permissions": [                "proxy",                "tabs",                "unlimitedStorage",                "storage",                "",                "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: [""]},                ['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

        proxy_auth_plugin_path = create_proxy_auth_extension(

            proxy_host=proxyHost,

            proxy_port=proxyPort,

            proxy_username=proxyUser,

            proxy_password=proxyPass)

        option = webdriver.ChromeOptions()

        option.add_argument("--start-maximized")

        option.add_extension(proxy_auth_plugin_path)

        driver = webdriver.Chrome(chrome_options=option)

        driver.get("http://httpbin.org/ip")

    相关文章

      网友评论

          本文标题:Selenium程序中亿牛云动态转发代理信息配置

          本文链接:https://www.haomeiwen.com/subject/dljcmqtx.html