如何在Selenium python中添加身份验证代理?

时间:2020-01-10 14:56:35

标签: python selenium-chromedriver

我已经有一段时间了,我还没有弄清楚如何解决这个问题。我目前正在使用有人回答说有人说它起作用的方法,但对我来说却什么也不做,并且仍然在没有代理的情况下打开浏览器...这是我添加代理的代码,感谢您提供任何反馈意见...

        def start():
            global proxy_addressed
            ordered_proxies = []
            for numb in range(0, num_tasks):
                if numb % num_proxies == 0:
                    random.shuffle(add_proxy)
                proxy_addressed = add_proxy[numb % num_proxies]

                ordered_proxies.append(proxy_addressed)

                def get_chromedriver(use_proxy=False, user_agent=None):
                    path = os.path.dirname(os.path.abspath(__file__))
                    chrome_options = webdriver.ChromeOptions()
                    pluginfile = 'proxy_auth_plugin.zip'
                    with zipfile.ZipFile(pluginfile, 'w') as zp:
                            zp.writestr("manifest.json", manifest_json)
                            zp.writestr("background.js", background_js)
                            chrome_options.add_extension(pluginfile)
                            chrome_options.add_argument('--user-agent=%s' % user_agent)
                            chrome_options.add_argument(win_size)
                            chrome_options.add_argument('--disable-extensions')
                            chrome_options.add_argument("--auth-server-whitelist")
                            chrome_options.add_argument('--profile-directory=Default')
                            chrome_options.add_argument("--disable-plugins-discovery")
                            chrome_options.add_argument('--allow-running-insecure-content')
                            chrome_options.add_argument("ignore-certificate-errors-spki-list")
                            driver = webdriver.Chrome(os.path.join(path, 'chromedriver'), chrome_options=chrome_options)
                            driver.execute_script("window.open('{}')".format(page_address))

                global pvar
                for lines in ordered_proxies:
                    pvar = lines.split(':')  # rotating proxy or host

                print(pvars)
                PROXY_HOST = pvar[0] + ':'
                PROXY_PORT = pvar[1] + ':'
                PROXY_USER = pvar[2] + ':'
                PROXY_PASS = pvar[3]

                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 = """
                var config = {
                        mode: "fixed_servers",
                        rules: {
                        singleProxy: {
                            scheme: "http",
                            host: "%s",
                            port: parseInt(%s)
                        },
                        bypassList: ["localhost"]
                        }
                    };

                chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

                function callbackFn(details) {
                    return {
                        authCredentials: {
                            username: "%s",
                            password: "%s"
                        }
                    };
                }

                chrome.webRequest.onAuthRequired.addListener(
                            callbackFn,
                            {urls: ["<all_urls>"]},
                            ['blocking']
                );
                """ % (PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASS)
                get_chromedriver()

0 个答案:

没有答案