selenium+chrome不关闭浏览器的情况下如何换IP?

简介: 主要分享Selenium怎样在不关闭浏览器的情况下重新设置代理IP

Selenium是一种用于自动化浏览器的工具,可以用于模拟用户行为,特别是在访问需要进行登录的网站的时候,直接可以使用Selenium和HTTP代理来模拟真实用户行为,绕过网站反爬虫机制,以及保护我们的隐私。那如何在Selenium中使用代理并访问目标网站,一般Selenium都是使用ChromeDriver来控制浏览器。
这里我们可以找个反爬强网站来测试了,这里我想到的是豆瓣https://www.douban.com/。看过网上很多关于爬虫的文章中添加代理IP都是使用的requests模块,但是爬虫做久了之发现很多人都在使用selenium,所以这里补充一个selenium添加代理。关于代理的使用这里需要注意的是,有些HTTP代理可能已经被封禁或失效,透明的代理又缺少安全性。因此,在使用HTTP代理时,我们最好是选择付费的代理。
`` from selenium import webdriver

import string
import zipfile

# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "3111"

# 代理验证信息
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'/tmp/{}_{}@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",
            "<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: ["localhost"]
            }
          };

        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,
    )
    print(background_js)

    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")

# 如报错 chrome-extensions
# option.add_argument("--disable-extensions")

option.add_extension(proxy_auth_plugin_path)

# 关闭webdriver的一些标志
# option.add_experimental_option('excludeSwitches', ['enable-automation'])

driver = webdriver.Chrome(
    chrome_options=option,
    executable_path="./chromdriver"
)

# 修改webdriver get属性
# script = '''
# Object.defineProperty(navigator, 'webdriver', {
# get: () => undefined
# })
# '''
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})


driver.get("https://httpbin.org/ip")
关于Selenium使用代理还遇到这样的问题,Selenium怎样在不关闭浏览器的情况下重新设置代理IP?
相关文章
|
7天前
|
Web App开发
Chrome——谷歌浏览器chrome如何模拟其他客户端
Chrome——谷歌浏览器chrome如何模拟其他客户端
23 1
Chrome——谷歌浏览器chrome如何模拟其他客户端
|
12天前
|
数据采集 Web App开发 测试技术
使用Selenium调试Edge浏览器的常见问题与解决方案
在互联网数据采集领域,Selenium常用于自动化网页爬取。针对使用Edge浏览器时遇到的启动远程调试失败、访问受限及代理IP设置等问题,本文提供了解决方案。通过特定命令启动Edge的远程调试模式,并利用Python脚本配合Selenium库,可实现代理IP、User-Agent的设定及Cookie管理等高级功能,有效提升爬虫稳定性和隐蔽性。遵循步骤配置后,即可顺畅执行自动化测试任务。
使用Selenium调试Edge浏览器的常见问题与解决方案
|
10天前
|
Web App开发 前端开发 JavaScript
手摸手教你,从0到1开发一个Chrome浏览器插件
开发 Chrome 插件既有趣又具成就感。本教程将引导你从零开始,逐步创建一个简单的 Chrome 插件。首先了解 Chrome 插件是可增强浏览器功能的小程序。以一个基础示例开始,你将学习如何设置开发环境,包括安装 Chrome 和准备文本编辑器,并掌握 HTML、CSS 和 JavaScript 的基础知识。接着,我们将构建插件的基本结构,涉及 `manifest.json` 配置文件、`background.js` 后台脚本、`popup.html` 用户界面以及 `style.css` 样式表。
55 8
|
4天前
|
Web App开发
Chrome浏览器导出HTTPS证书
Chrome浏览器导出HTTPS证书
9 0
Chrome浏览器导出HTTPS证书
|
28天前
|
Web App开发 JavaScript 前端开发
Chrome插件实现问题之最新的 Chrome 浏览器架构有什么新的改变吗
Chrome插件实现问题之最新的 Chrome 浏览器架构有什么新的改变吗
|
28天前
|
JavaScript 前端开发 Web App开发
Chrome插件实现问题之单进程浏览器的不稳定主要体现在什么地方
Chrome插件实现问题之单进程浏览器的不稳定主要体现在什么地方
|
23天前
|
数据采集 数据安全/隐私保护
Kameleo指纹浏览器进阶使用:轻松集成IPXProxy海外代理IP
Kameleo是一款出色的指纹浏览器,它能够帮助用户实现隐身浏览。大家在进行网络抓取的时候总会碰到一些阻碍,而采取指纹浏览器可以提升网络抓取的效率,并且集成代理IP能增加一层防护,让数据采集更加全面,为制定营销策略提供更好的支持。那如何将Kameleo指纹浏览器与IPXProxy海外代理IP集成?
|
24天前
|
安全 搜索推荐 数据安全/隐私保护
战斧指纹浏览器与IPXProxy海外代理IP的协同使用策略
战斧指纹浏览器是一家专注跨境用户的指纹浏览器,支持IP隔离技术,能够解决账号关联的问题。当然,用户在使用战斧浏览器的时候也可以搭配自有设备,其中IPXProxy的海外代理IP是不错的选择。那战斧指纹浏览器与IPXProxy海外代理IP如何搭配使用?
|
25天前
|
数据采集 Web App开发 JavaScript
快速参考:用C# Selenium实现浏览器窗口缩放的步骤
在C#结合Selenium的网络爬虫应用中,掌握浏览器窗口缩放、代理IP、cookie与user-agent设置至关重要。本文详述了如何配置代理(如亿牛云加强版),自定义用户代理,启动ChromeDriver,并访问目标网站如抖音。通过执行JavaScript代码实现页面缩放至75%,并添加cookie增强匿名性。此策略有效规避反爬机制,提升数据抓取的准确度与范围。代码示例展示了整个流程,确保爬虫操作的灵活性与高效性。
|
25天前
|
数据安全/隐私保护
YunLogin指纹浏览器与IPXProxy海外代理IP搭配使用的步骤详解
想要运营海外社交媒体账号,需要指纹浏览器和代理IP这两个实用的工具。YunLogin指纹浏览器是不错的选择,用户可以利用指纹浏览器来管理多个社交媒体账号,例如instagram,然后通过给浏览器环境设置不同的代理IP,降低账号关联的风险,确保每个账号都是独立运行。那如何将YunLogin指纹浏览器与IPXProxy海外代理IP搭配使用?

热门文章

最新文章