所有分类
  • 所有分类
  • 攻略

用 Python 实现谷歌浏览器多开:实现独立指纹与代理的实战方法

如何在一台电脑上同时运行多个浏览器实例,并确保每个实例都拥有独立的浏览器指纹、独立的代理ip和独立的登录环境?

 

在做跨境电商运营、多账号管理、反检测爬虫或自动化测试时,我们常常面临一个共同的问题:如何在一台电脑上同时运行多个浏览器实例,并确保每个实例都拥有独立的浏览器指纹、独立的代理IP和独立的登录环境?不少人第一时间会想到使用“指纹浏览器”类的商业软件,确实方便,但成本较高,而且灵活性有限。

方案原理

其实,使用 Python + Chrome + Selenium,就可以以非常低的成本、极高的可控性,打造一套属于自己的浏览器多开方案,本文将详细介绍实现过程。

这个方案的原理是基于 Chrome 浏览器支持的参数 --user-data-dir,它可以让每个浏览器实例使用独立的配置目录,从而实现 Cookie、本地存储、插件、缓存等环境的完全隔离。每个实例都像一台“虚拟浏览器”,互不干扰。

同时,我们通过 Selenium 来启动这些浏览器实例,控制它们打开网页、执行操作,并通过启动参数设置代理IP和浏览器指纹(如 User-Agent、语言、WebRTC、窗口大小等),再借助 JavaScript 注入技术,在页面打开前覆盖掉一些敏感属性,比如 navigator.webdriverpluginsplatform 等。这些字段是很多平台用于判断自动化操作和多账号行为的关键指标,因此这一步也是实现指纹伪装的核心。

准备高质量代理IP

实现多开最关键的一步,是为每个实例分配一个干净、稳定的代理ip。如果使用公共免费代理,不但速度慢,而且稳定性差、IP质量不可控,非常容易被识别甚至封禁。建议使用商业级代理服务,支持高匿名、自动轮换、地域选择等特性。

目前我自己使用的代理服务是快代理,它支持 HTTP、HTTPS、Socks5 协议,提供静态和动态两种套餐,可以一键获取 API 接口,非常适合开发者自动化调用。如果你打算做中到大型账号管理或脚本项目,这是一个性价比非常高的选择。

用 Python 启动多实例浏览器

可以来看一个具体的实现代码。核心思路就是定义一个函数 launch_browser,它会启动一个 Chrome 实例,设置它的独立配置路径、代理IP、User-Agent 等参数,然后通过 Chrome DevTools Protocol(CDP)注入一段 JS 脚本,在页面加载前伪装指纹字段。这样启动的每个浏览器,都会拥有一个独立的环境。下面是完整代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
import time
def launch_browser(profile_id, proxy=None, user_agent=None):
    profile_path = os.path.abspath(f"./chrome_profiles/profile_{profile_id}")
    os.makedirs(profile_path, exist_ok=True)
    options = Options()
    options.add_argument(f"--user-data-dir={profile_path}")
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option("useAutomationExtension", False)
    if proxy:
        options.add_argument(f'--proxy-server={proxy}')
    if user_agent:
        options.add_argument(f'user-agent={user_agent}')
    # 指纹伪装基础设置
    options.add_argument("--lang=en-US,en;q=0.9")
    options.add_argument("--window-size=1200,800")
    options.add_argument("--disable-webgl")
    options.add_argument("--mute-audio")
    driver = webdriver.Chrome(options=options)
    # 注入 JS,修改 navigator 字段
    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": """
            Object.defineProperty(navigator, 'webdriver', {get: () => undefined});
            Object.defineProperty(navigator, 'languages', {get: () => ['en-US', 'en']});
            Object.defineProperty(navigator, 'platform', {get: () => 'Win32'});
            Object.defineProperty(navigator, 'plugins', {get: () => [1,2,3]});
        """
    })
    driver.get("https://browserleaks.com/javascript")
    return driver
# 批量启动两个实例作为示例
browsers = []
proxies = ["http://127.0.0.1:8001", "http://127.0.0.1:8002"]
user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_4)..."
]
for i in range(2):
    driver = launch_browser(i+1, proxies[i], user_agents[i])
    browsers.append(driver)
time.sleep(300)  # 停留一段时间查看效果
for b in browsers:
    b.quit()

以上这段代码实现了完整的浏览器多开功能。每个实例都可以访问不同的网站,登录不同的账号,甚至模拟不同地区的访问行为。你只需要准备好代理IP列表和 User-Agent 列表,即可实现大规模账号环境的“去重”部署。而且这些浏览器运行时是可控的,也就是说你可以后续通过脚本继续控制它们,比如执行点击、输入、抓取、截图等操作,实现一整套自动化任务。相比之下,手动开几十个窗口,不仅效率低,而且环境很难完全隔离,容易被平台检测为“批量操作”。

当然需要说明的是,通过代码控制虽然能实现常规字段的伪装,比如 navigator.webdriver、User-Agent、语言、屏幕大小等,但对于更底层的指纹识别技术,比如 Canvas、WebGL、AudioContext 这些绘图和音频指纹,想要完美伪装就要引入专门的浏览器插件、扩展程序,甚至使用指纹浏览器(如 AdsPower、GoLogin、Multilogin)才能实现更强的防检测能力。不过如果你的目标是做基础账号隔离、基本防追踪、初级多开,这套方案已经绰绰有余。

总结

这种基于 Python 脚本的 Chrome 多开方案,有几个突出的优点:首先,它非常灵活和可控,你可以通过代码控制每一个参数,实现完全定制化的运行逻辑;其次,它支持批量账号管理,每个实例拥有独立的浏览器配置、代理IP和存储空间,不存在任何账号关联问题;再者,它也支持 Cookie 隔离、本地环境独立、插件个性化配置等高级操作;最后,通过 Selenium、Pyppeteer 等库,还能实现完整的自动化脚本控制,从打开浏览器、输入账号密码到完成指定任务,全流程无人工干预。可以说,这是一种极具性价比的浏览器环境隔离和自动化管理方案。

阅读全文
原文链接:https://sk5ip.com.cn/gonglue/yongpythonshixiangugeliulanqid/,转载请注明出处~~~
0
分享海报

评论0

请先

站点提示

🎉 斑斓星球国庆放假通知

尊敬的客户:

根据国家假期安排,斑斓星球国庆节放假时间为 10月1日(周三)至10月6日(周一),共6天。10月7日(周二) 正式恢复办公。

⚠️ 假期服务提示:

感谢您的理解与支持,提前祝您国庆快乐!🎇

斑斓星球 2025年9月24日

显示验证码

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码