Linux中Chrome无界模式动态代理IP的配置(Selenium)

简介: Linux中Chrome无界模式动态代理IP的配置(Selenium)

不需要账号密码的代理设置(Windows)

from selenium import webdriver
proxy = '127.0.0.1:9743'
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://' + proxy)
chrome = webdriver.Chrome(chrome_options=chrome_options)
chrome.get('http://httpbin.org/get')

在这里我们通过 ChromeOption 来设置代理,在创建Chrom 对象的时候用 chrome_options 参数传 递即可。


使用阿布云的代理设置(Windows)

如果代理是认证代理,则设置方法相对比较麻烦,设置方法如下所示。这里需要在本地创建一个 manifest.json 置文件和 background.js 脚本来设置认证代理,运行代码 之后本地会生成一个 authProxy@http-dyn.abuyun.9020.zip 文件来保存当前配置

import base64
import string
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import zipfile
proxyHost = "http-dyn.abuyun.com"
proxyPort = "9020"
# 隧道身份信息
proxyUser = "xxxxxxxxxx"
proxyPass = "xxxxxxxxxx"
authStr = proxyUser + ":" + proxyPass
proxyAuth = "Basic " + base64.b64encode(authStr.encode('utf-8')).decode('utf-8')
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'./authProxy@http-dyn.abuyun.9020.zip'
    manifest_json = """
        {
            "version": "1.0.0",
            "manifest_version": 2,
            "name": "Abuyun 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
proxy_auth_plugin_path = create_proxy_auth_extension(
    proxy_host=proxyHost,
    proxy_port=proxyPort,
    proxy_username=proxyUser,
    proxy_password=proxyPass)
chrome_options = Options()
chrome_options.add_argument("--start-maximized")
# 通过 option.add_extension 命令安装至chrome 通过插件实现动态代理
chrome_options.add_extension(proxy_auth_plugin_path)
# 多次打开浏览器,查看代理是否设置成功
for i in range(5):
    browser = webdriver.Chrome(chrome_options=chrome_options)
    browser.get('http://httpbin.org/get')

172e0af5066d42fd~tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

172e0ac4ffc23905~tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

chromedriver 使用认证代理插件在无界面环境下运行

通过以上的代理设置后,会有一个普遍的问题,就是使用chromedriver添加认证代理时不能使用headless的问题。 装插件后无法直接使用无界面模式运行,可以通过虚拟现实技术间接实现pyvirtualdisplay

  1. 安装Xvfb虚拟界面工具yum install Xvfb
  2. 安装对应的python工具包pip install pyvirtualdisplay

以下为测试代码

from selenium import webdriver
from pyvirtualdisplay import Display
# 在chromedriver启动前启动一个显示器
display = Display(visible=0, size=(800, 800))
display.start()
# 使用上个例子中制作好的阿布云代理插件
plugin_path = './authProxy@http-dyn.abuyun.9020.zip'
# 添加插件及必要的配置 
option = webdriver.ChromeOptions()
option.add_argument('--no-sandbox')
option.add_extension(plugin_path)
# 测试查看效果
driver = webdriver.Chrome(chrome_options=option)
driver.get("https://httpbin.org/ip")
print(driver.page_source)
driver.quit()

172e0c905426cb5c~tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png

目录
相关文章
|
4月前
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
2月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
258 11
|
5月前
|
Kubernetes Linux 网络安全
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
初始化成功后,记录下显示的 `kubeadm join`命令。
282 0
|
7月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
477 11
|
6月前
|
Linux 网络安全 开发工具
在Linux下配置gitee与Github的远程仓库
注意,git push后,是输入你的账号与密码。这个步骤可以通过特殊设置省去,但是一开始还是不要太省。
340 0
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
564 5
|
12月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
351 31
Selenium IDE:Web自动化测试的得力助手
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
720 17
Selenium:强大的 Web 自动化测试工具
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。