1. <rp id="c4hsd"></rp>
          1. <button id="c4hsd"><acronym id="c4hsd"><input id="c4hsd"></input></acronym></button>
          2. <tbody id="c4hsd"></tbody>

            <dd id="c4hsd"><pre id="c4hsd"></pre></dd>

              1. <th id="c4hsd"></th>
              2. <s id="c4hsd"><object id="c4hsd"></object></s>

                    [ 登錄 ] - [ 注冊 ] | 代碼示例DEMO | IP測試視頻 |

                    Python中設置Selenium + Chrome代理IP(密碼驗證)爬數據

                    作者:數據無憂   時間:2020-09-18 13:24:53

                    原文stackoverflow地址:https://stackoverflow.com/questions/29983106/how-can-i-set-proxy-with-authentication-in-selenium-chrome-web-driver-using-pyth#answer-30953780

                    Selenium+Chrome認證代理不能通過options處理。只能換個方法使用擴展解決,下面是Python代碼

                    # -*- coding: utf-8 -*-
                    # @Time    : 2018/10/05 9:50
                    # @Author  : www.aooseo.com
                    # @Site    :
                    # @File    : pubilc.py
                    # @Software: PyCharm
                     
                    import string
                    import zipfile
                     
                    def create_proxyauth_extension(proxy_host, proxy_port,
                                                   proxy_username, proxy_password,
                                                   scheme='http', plugin_path=None):
                        """代理認證插件
                     
                        args:
                            proxy_host (str): 你的代理地址或者域名(str類型)
                            proxy_port (int): 代理端口號(int類型)
                            proxy_username (str):用戶名(字符串)
                            proxy_password (str): 密碼 (字符串)
                        kwargs:
                            scheme (str): 代理方式 默認http
                            plugin_path (str): 擴展的絕對路徑
                     
                        return str -> plugin_path
                        """
                        
                     
                        if plugin_path is None:
                            plugin_path = '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": {
                                "s": ["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


                    使用方法如下:

                    from selenium import webdriver
                    from common.pubilc import create_proxyauth_extension
                     
                    proxyauth_plugin_path = create_proxyauth_extension(
                        proxy_host="XXXXX.com",
                        proxy_port=9020,
                        proxy_username="XXXXXXX",
                        proxy_password="XXXXXXX"
                    )
                     
                     
                    co = webdriver.ChromeOptions()
                    # co.add_argument("--start-maximized")
                    co.add_extension(proxyauth_plugin_path)
                     
                     
                    driver = webdriver.Chrome(executable_path="C:\chromedriver.exe", chrome_options=co)
                    driver.get("http://ip138.com/")
                    print(driver.page_source)


                    如果代理IP不需要密碼驗證,那直接用下面的代碼就行了:

                    options = webdriver.ChromeOptions()
                    options.add_argument('--proxy-server=http://ip:port')  
                    driver = webdriver.Chrome(executable_path="C:\chromedriver.exe", chrome_options=0ptions)
                    driver.get("http://ip138.com/")
                    print(driver.page_source)


                    無憂代理IP(www.aooseo.com)原創文章,轉載請注明出處。

                    電話:4007-745-096
                    QQ:
                    周一至周日8:30-18:00 技術部電話熱線
                    久久夜色精品国产噜噜亚洲AV_老妇女性较大毛片_888亚洲欧美国产va在线播放_超碰人人透人人爽人人看