Selenium chrome配置代理Python版

环境: windows 7 + Python 3.5.2 + Selenium 3.4.2 + Chrome Driver 2.29 + Chrome 58.0.3029.110 (64-bit)

Selenium官方给的Firefox代理配置方式并不起效,也没看到合适的配置方式,对于Chrome Selenium官方没有告知如何配置,但以下两种方式是有效的:

1. 连接无用户名密码认证的代理

chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument(‘--proxy-server=http://ip:port‘)
driver = webdriver.Chrome(chrome_options=chromeOptions)

2. 有用户名和密码的连接

from selenium import webdriverdef 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 = ‘d:/webdriver/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 = webdriver.ChromeOptions()
co.add_argument("--start-maximized")
co.add_extension(proxyauth_plugin_path)

driver = webdriver.Chrome(chrome_options=co)
driver.get("http://www.amazon.com/")

以上直接通过python代码生成chrome所需的zip插件文件,IP端口用户名密码写上自己的,原文出处:

https://vimmaniac.com/blog/bangal/selenium-chrome-driver-proxy-with-authentication/

插件源代码 https://github.com/RobinDev/Selenium-Chrome-HTTP-Private-Proxy

时间: 2024-10-02 23:27:05

Selenium chrome配置代理Python版的相关文章

Selenium chrome配置不加载图片Python版

环境: windows 7 + Python 3.5.2 + Selenium 3.4.2 + Chrome Driver 2.29 + Chrome 58.0.3029.110 (64-bit) from selenium import webdriver chrome_options = webdriver.ChromeOptions() prefs = {"profile.managed_default_content_settings.images":2} chrome_opt

Vim配置(python版)

由于马上将用到django框架,需要有一个好的ide来coding,之前做C的开发时候体会到了vim的强大,所以编写python也决定采用vim. PS:除了vim,一般浏览代码多用atom和sublime,具体可以自己google. 之前做C的项目时采用了spf13-vim,git地址:https://github.com/spf13/spf13-vim.喜欢的同学可以去下载. 这里由于环境限制,准备配置一套新的简单一些的vim.好久没有配置了,这里写个文档记录下来,重新温习一遍. 这里推荐一

Selenium chrome配置不加载图片

from selenium import webdriver chrome_options = webdriver.ChromeOptions() prefs = {"profile.managed_default_content_settings.images":2} chrome_options.add_experimental_option("prefs",prefs) driver = webdriver.Chrome(chrome_options=chro

selenium+chrome配置环境

chromedriver.exe下载地址:http://npm.taobao.org/mirrors/chromedriver/ chrome54下载: http://download.csdn.net/download/u012723132/9625821 chrome版本对应关系:v2.24      v52-54v2.23      v51-53v2.22      v49-52v2.21      v46-50v2.20      v43-48v2.19      v43-47v2.18

Python selenium chrome 环境配置

Python selenium chrome 环境配置 一.参考文章: 1. 记录一下python easy_install和pip安装地址和方法 http://heipark.iteye.com/blog/1916758 2. selenium + python自动化测试环境搭建 http://www.cnblogs.com/fnng/archive/2013/05/29/3106515.html 3. Python-selenium-Firefox-chrome-IE问题解决方法 http:

Selenium + Chrome Diver使用带用户名密码认证的HTTP代理的方法

默认情况下,Chrome的--proxy-server="http://ip:port"参数不支持设置用户名和密码认证.这样就使得"Selenium + Chrome Driver"无法使用HTTP Basic Authentication的HTTP代理.一种变通的方式就是采用IP地址认证,但在国内网络环境下,大多数用户都采用ADSL形式网络接入,IP是变化的,也无法采用IP地址绑定认证.因此迫切需要找到一种让Chrome自动实现HTTP代理用户名密码认证的方案.

chrome浏览器爬虫WebDriverException解决采用python + selenium + chrome + headless模式

WebDriverException: Message: unknown error: Chrome failed to start: crashed 1. 背景在使用selenium + chrome浏览器渲染模式爬取数据时,如果并发任务过多,或者爬虫的运行时间很长,那么很容易出现浏览器崩溃的现象,如下: 这一般是资源消耗过大造成的(据说chrome浏览器有内存泄漏的情况).那如何解决这个问题呢? 这种情况下,我们首先就会想到使用无界面的浏览器PhantomJS,但是PhantomJS现在年久

Python安装selenium,配置火狐浏览器环境

想用Python去编写自动化脚本进行网页访问时,遇到了一些问题, File "C:\Python34\lib\site-packages\selenium-3.0.0b2-py3.4.egg\selenium\webdriver\common\service.py", line 64, in start stdout=self.log_file, stderr=self.log_file) File "C:\Python34\lib\subprocess.py",

Python + Selenium + Firefox 使用代理 auth 的用户名密码授权

米扑代理,全球领导的代理品牌,专注代理行业近十年,提供开放.私密.独享代理,并可免费试用 米扑代理官网:https://proxy.mimvp.com 本文示例,是结合米扑代理的私密.独享.开放代理,专门研发的示例, 支持 http.https的无密码.白名单ip.密码授权三种类型 本博客转自米扑博客:Python + Selenium + Firefox 使用代理 auth 的用户名密码授权 示例中,用的插件 xpi 请到米扑代理官网,或米扑官方 github 下载 本文,直接给出完整的代码,