用 Python 實(shí)現(xiàn)谷歌瀏覽器多開:實(shí)現(xiàn)獨(dú)立指紋與代理的實(shí)戰(zhàn)方法

在做跨境電商運(yùn)營(yíng)、多賬號(hào)管理、反檢測(cè)爬蟲或自動(dòng)化測(cè)試時(shí),我們常常面臨一個(gè)共同的問題:如何在一臺(tái)電腦上同時(shí)運(yùn)行多個(gè)瀏覽器實(shí)例,并確保每個(gè)實(shí)例都擁有獨(dú)立的瀏覽器指紋、獨(dú)立的代理IP和獨(dú)立的登錄環(huán)境?不少人第一時(shí)間會(huì)想到使用“指紋瀏覽器”類的商業(yè)軟件,確實(shí)方便,但成本較高,而且靈活性有限。
方案原理
其實(shí),使用 Python + Chrome + Selenium,就可以以非常低的成本、極高的可控性,打造一套屬于自己的瀏覽器多開方案,本文將詳細(xì)介紹實(shí)現(xiàn)過程。
這個(gè)方案的原理是基于 Chrome 瀏覽器支持的參數(shù) --user-data-dir,它可以讓每個(gè)瀏覽器實(shí)例使用獨(dú)立的配置目錄,從而實(shí)現(xiàn) Cookie、本地存儲(chǔ)、插件、緩存等環(huán)境的完全隔離。每個(gè)實(shí)例都像一臺(tái)“虛擬瀏覽器”,互不干擾。
同時(shí),我們通過 Selenium 來啟動(dòng)這些瀏覽器實(shí)例,控制它們打開網(wǎng)頁(yè)、執(zhí)行操作,并通過啟動(dòng)參數(shù)設(shè)置代理IP和瀏覽器指紋(如 User-Agent、語言、WebRTC、窗口大小等),再借助 JavaScript 注入技術(shù),在頁(yè)面打開前覆蓋掉一些敏感屬性,比如 navigator.webdriver、plugins、platform 等。這些字段是很多平臺(tái)用于判斷自動(dòng)化操作和多賬號(hào)行為的關(guān)鍵指標(biāo),因此這一步也是實(shí)現(xiàn)指紋偽裝的核心。
準(zhǔn)備高質(zhì)量代理IP
實(shí)現(xiàn)多開最關(guān)鍵的一步,是為每個(gè)實(shí)例分配一個(gè)干凈、穩(wěn)定的代理IP。如果使用公共免費(fèi)代理,不但速度慢,而且穩(wěn)定性差、IP質(zhì)量不可控,非常容易被識(shí)別甚至封禁。建議使用商業(yè)級(jí)代理服務(wù),支持高匿名、自動(dòng)輪換、地域選擇等特性。
目前我自己使用的代理服務(wù)是快代理,它支持 HTTP、HTTPS、Socks5 協(xié)議,提供靜態(tài)和動(dòng)態(tài)兩種套餐,可以一鍵獲取 API 接口,非常適合開發(fā)者自動(dòng)化調(diào)用。如果你打算做中到大型賬號(hào)管理或腳本項(xiàng)目,這是一個(gè)性價(jià)比非常高的選擇。
用 Python 啟動(dòng)多實(shí)例瀏覽器
可以來看一個(gè)具體的實(shí)現(xiàn)代碼。核心思路就是定義一個(gè)函數(shù) launch_browser,它會(huì)啟動(dòng)一個(gè) Chrome 實(shí)例,設(shè)置它的獨(dú)立配置路徑、代理IP、User-Agent 等參數(shù),然后通過 Chrome DevTools Protocol(CDP)注入一段 JS 腳本,在頁(yè)面加載前偽裝指紋字段。這樣啟動(dòng)的每個(gè)瀏覽器,都會(huì)擁有一個(gè)獨(dú)立的環(huán)境。下面是完整代碼:
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}')
# 指紋偽裝基礎(chǔ)設(shè)置
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
# 批量啟動(dòng)兩個(gè)實(shí)例作為示例
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) # 停留一段時(shí)間查看效果
for b in browsers:
b.quit()以上這段代碼實(shí)現(xiàn)了完整的瀏覽器多開功能。每個(gè)實(shí)例都可以訪問不同的網(wǎng)站,登錄不同的賬號(hào),甚至模擬不同地區(qū)的訪問行為。你只需要準(zhǔn)備好代理IP列表和 User-Agent 列表,即可實(shí)現(xiàn)大規(guī)模賬號(hào)環(huán)境的“去重”部署。而且這些瀏覽器運(yùn)行時(shí)是可控的,也就是說你可以后續(xù)通過腳本繼續(xù)控制它們,比如執(zhí)行點(diǎn)擊、輸入、抓取、截圖等操作,實(shí)現(xiàn)一整套自動(dòng)化任務(wù)。相比之下,手動(dòng)開幾十個(gè)窗口,不僅效率低,而且環(huán)境很難完全隔離,容易被平臺(tái)檢測(cè)為“批量操作”。
當(dāng)然需要說明的是,通過代碼控制雖然能實(shí)現(xiàn)常規(guī)字段的偽裝,比如 navigator.webdriver、User-Agent、語言、屏幕大小等,但對(duì)于更底層的指紋識(shí)別技術(shù),比如 Canvas、WebGL、AudioContext 這些繪圖和音頻指紋,想要完美偽裝就要引入專門的瀏覽器插件、擴(kuò)展程序,甚至使用指紋瀏覽器(如 AdsPower、GoLogin、Multilogin)才能實(shí)現(xiàn)更強(qiáng)的防檢測(cè)能力。不過如果你的目標(biāo)是做基礎(chǔ)賬號(hào)隔離、基本防追蹤、初級(jí)多開,這套方案已經(jīng)綽綽有余。
總結(jié)
這種基于 Python 腳本的 Chrome 多開方案,有幾個(gè)突出的優(yōu)點(diǎn):首先,它非常靈活和可控,你可以通過代碼控制每一個(gè)參數(shù),實(shí)現(xiàn)完全定制化的運(yùn)行邏輯;其次,它支持批量賬號(hào)管理,每個(gè)實(shí)例擁有獨(dú)立的瀏覽器配置、代理IP和存儲(chǔ)空間,不存在任何賬號(hào)關(guān)聯(lián)問題;再者,它也支持 Cookie 隔離、本地環(huán)境獨(dú)立、插件個(gè)性化配置等高級(jí)操作;最后,通過 Selenium、Pyppeteer 等庫(kù),還能實(shí)現(xiàn)完整的自動(dòng)化腳本控制,從打開瀏覽器、輸入賬號(hào)密碼到完成指定任務(wù),全流程無人工干預(yù)。可以說,這是一種極具性價(jià)比的瀏覽器環(huán)境隔離和自動(dòng)化管理方案。
























