Selenium使用亿牛云爬虫代理的方案

from selenium import webdriver
import string
import zipfile

# 代理服务器
proxyHost = "t.16yun.cn"
proxyPort = "31111"

# 代理隧道验证信息
proxyUser = "username"
proxyPass = "password"

def create_proxy_auth_extension(proxy_host, proxy_port,
                               proxy_username, proxy_password,
                               scheme=‘http‘, plugin_path=None):
    if plugin_path is None:
        plugin_path = r‘C:/{}_{}@t.16yun.zip‘.format(proxy_username, proxy_password)

    manifest_json = """
    {
        "version": "1.0.0",
        "manifest_version": 2,
        "name": "16YUN Proxy",
        "permissions": [
            "proxy",
            "tabs",
            "unlimitedStorage",
            "storage",
            "",
            "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: [""]},
            [‘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

proxy_auth_plugin_path = create_proxy_auth_extension(
    proxy_host=proxyHost,
    proxy_port=proxyPort,
    proxy_username=proxyUser,
    proxy_password=proxyPass)

option = webdriver.ChromeOptions()

option.add_argument("--start-maximized")
option.add_extension(proxy_auth_plugin_path)

driver = webdriver.Chrome(chrome_options=option)

driver.get("http://httpbin.org/ip")

原文地址:https://blog.51cto.com/14201222/2360231

时间: 2024-08-01 11:25:36

Selenium使用亿牛云爬虫代理的方案的相关文章

PHP爬虫语言配置亿牛云爬虫代理的方案

// 要访问的目标页面$url = "http://httpbin.org/ip";$urls = "https://httpbin.org/ip"; // 代理服务器 define("PROXY_SERVER", "tcp://t.16yun.cn:31111"); // 隧道身份信息 define("PROXY_USER", "16YUN123"); define("PRO

亿牛云爬虫代理设置自主切换IP的方案

1.自主切换IP?该模式适合一些需要登陆.Cookie缓存处理等爬虫需要精确控制IP切换时机的业务. 爬虫程序可以通过设置HTTP头Proxy-Tunnel: 随机数, 当随机数相同时,访问目标网站的代理IP相同. 例如 需要登录,获取数据两个请求在一个IP下,只需对这组请求设置相同Proxy-Tunnel,例如:Proxy-Tunnel: 12345, 该组请求在代理有效期内使用相同的代理IP. 注意 同一时间不同请求组可以设置不同Proxy-Tunnel: 随机数,并发完成数据爬取. 使用相

使用亿牛云爬虫代理常见问题的解决方案

(1) 代理使用失败让对方截图看看代理代码,代理信息是否提取配置正确.重点注意必须使用代理域名,不能是代理服务器IP.要求对方复制demo,然后加上ua随机优化,按照所开代理的请求数,按照300毫秒为单位进行管理,运行程序后统计错误信息和http的状态码.代理链接失败原因:对方是否有防火墙,导致无法链接我们服务器:对方开的代理是否过期.http状态码407原因:代理认证信息失败,让对方严格按照demo配置代理信息 http状态码429原因:请求超过代理限制,严格按照所开代理的请求数,按照300毫

亿牛云爬虫代理的用户认证模式

用户密码认证?通过用户名和密码的形式进行身份认证,该认证信息最终会转换为Proxy-Authorization 协议头跟随请求一起发出,同时支持通过Authorization协议头进行隧道身份验证. 如用户认证错误,系统会返回401 Unauthorized 或 407 Proxy Authentication Required. 例如 在代码中使用HTTP隧道时,如果代码的 HTTP 请求方法不支持以用户名/密码的形式设置身份认证信息, 则需要手动为每个 HTTP 请求增加Proxy-Auth

JAVA配置亿牛云爬虫代理i的方案

import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.Authenticator;import java.net.HttpURLConnection;import java.net.InetSocketAddress;import java.net.PasswordAuthentication;import java.net.Proxy;import java.net.URL;import

亿牛云爬虫代理如何保证24小时稳定运行

如何保证7×24小时稳定运行由于代理IP分布于全国,线路多.集群结构复杂,加上部分线路不定期升级,可能会偶尔会出现代理链接不上的情况,平台提供双机热备代理服务器(1分钟左右切换时间)确保代理服务实时在线,同时需要爬虫程序进行相应的优化,有两种方案:(1)代理提取链接自动更新(优先推荐,实时更新)爬虫程序需要开启专用线程,每1分钟访问"代理提取链接",如果发现代理IP和PORT有变化,爬虫程序需要自动更新代理信息.(因为爬虫服务器外网IP变化或其他网络原因,可能会偶尔造成代理信息获取失败

使用亿牛云爬虫代理失败的原因

http状态码407原因:代理认证信息失败,让对方严格按照demo配置代理信息http状态码429原因:请求超过代理限制,严格按照所开代理的请求数,按照300毫秒为单位进行管理.如果限制之后,既然大量429,需要优化爬虫策略,应该是目标网站返回的错误提示.http状态码302原因:访问的是https网站,会自动跳转一次,正常现象:访问的http网站,网站拒绝服务,大量302需要优化爬虫策略http状态码403或504原因:少量不影响,大量403或504需要优化爬虫策略http请求超时原因:htt

亿牛云爬虫代理IP有效时间如何选择

IP有效时间20秒和180秒该如何选择20秒有效时间更短,但是可以提供的IP数量更多,180秒有效时间更长,但是可以提供的IP数量更少,除非业务采集必须,应该选择20秒代理有效时间,提供更多的IP,避免网站反爬策略.如果请求过多会返回什么如果开通的HTTP\HTTPS代理,系统返回429 Too Many Requests:如果开通的Socket5代理,系统会主动对TCP延迟降速,或者直接拒绝超出部分的TCP请求.这两种处理方式都不会对爬虫的运行产生影响,爬虫会根据返回结果自动重新发起请求,这是

亿牛云爬虫隧道动态转发,爬虫代理首选!

亿牛云爬虫代理IP隧道动态加强版 1 产品特点 自营线路稳定可靠带宽高,海量IP资源池 基于Linux自建平台,系统稳定可靠,自动处理代理线路故障 智能代理实时检测器,区别于传统扫描式检测,能做到毫秒级检测,确保用户获取的代理100%网络可用. 代理IP隧道技术,通过固定云代理服务地址,自动实现IP毫秒级切换 两种IP切换模式可选: (1)每个HTTP请求自动切换(适合每个session单独IP访问) (2)用户自主切换(通过设置HTTP头控制IP切换,适合多个session相同IP连续性访问)