python selenium怎么配置IE和chrome的代理,求代码

 我来答
就烦条0o
2016-10-06 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部

代码

#!/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="proxy.crawlera.com",
   proxy_port=8010,
   proxy_username="fea687a8b2d448d5a5925ef1dca2ebe9",
   proxy_password=""
)


co = Options()
co.add_argument("--start-maximized")
co.add_extension(proxyauth_plugin_path)


driver = webdriver.Chrome(chrome_options=co)
driver.get("http://xxx/")


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式