zoukankan      html  css  js  c++  java
  • selenium 添加动态隧道代理

    # 无须密码验证方法

    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 webdriver
    from selenium.webdriver.chrome.options import Options
    
    
    
    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
        """
        import string
        import zipfile
    
        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"                               # 输入密码
    )
    
    
    co = Options()
    co.add_argument("--start-maximized")
    co.add_extension(proxyauth_plugin_path)
    
    
    driver = webdriver.Chrome(chrome_options=co)
    driver.get("https://www.baidu.com/")
    

      

  • 相关阅读:
    Mysql查询正在运行的事务
    linux SVN添加新用户
    linux下安装php扩展amqp
    解决apache启动错误:Could not reliably determine the server's fully qualified domain name
    linux系统安装redis服务器与php redis扩展
    navicat导出数据库字典
    centos安装GD库失败
    Mysql实现主从同步
    计算机的本质
    windows下nginx访问web目录提示403 Forbidden
  • 原文地址:https://www.cnblogs.com/yijian001/p/10054156.html
Copyright © 2011-2022 走看看