多账号自动化,一台机器怎么给每个账号绑不同的 IP 和指纹?用代码批量搞定

发布时间:2026/7/19 4:12:54
多账号自动化,一台机器怎么给每个账号绑不同的 IP 和指纹?用代码批量搞定 做多账号自动化的人迟早会撞到同一个问题。你手里几十个账号脚本也写好了结果发现最麻烦的不是业务逻辑是怎么让这几十个账号在同一台机器上各自用各自独立的 IP 和浏览器环境还不被平台关联到一起。手动一个个在客户端里建环境、绑代理几十个还能忍上百个就废了。这篇讲怎么用代码把这一整套批量做掉从创建环境、绑定独立代理到批量拉起、接管、关闭给的都是能直接跑的东西。先说清楚为什么必须一个账号一套独立环境。平台认账号早就不只看 IP 了它看的是一整套环境画像。浏览器指纹这块Canvas、WebGL、字体、时区这些拼成一串几乎唯一的标识才是最难甩掉的那个。你几十个账号如果跑在同一个浏览器里指纹完全一样IP 换得再勤也没用平台一看就是同一个人在操作一堆号。所以正确的做法是每个账号一个独立的浏览器环境指纹隔离再各绑一个独立 IP让每个号在平台看来都是一个独立真人。这块我用 AdsPower它是做多账号环境隔离的指纹浏览器指纹在内核层原生生成而且带 Local API可以用代码批量操作。下面直接上能跑的部分。准备工作。装好并启动 AdsPower 客户端它会在本地起一个服务默认地址 http://local.adspower.net:50325 。端口可能随设置变动以客户端里 Local API 页面显示的为准。如果开了安全验证记得带上 API Key。第一步批量创建环境并给每个环境绑定独立代理。用的是 New Profile V2 接口代理信息放在 user_proxy_config 里。假设你有一批代理每个账号分一个import requestsBASE http://local.adspower.net:50325你的代理池每个账号一个proxies [{host: 1.2.3.4, port: 10001, user: u1, password: p1},{host: 1.2.3.4, port: 10002, user: u2, password: p2},# ...]def create_profile(name, proxy):url f{BASE}/api/v2/browser-profile/createpayload {name: name,group_id: 0,user_proxy_config: {proxy_soft: other,proxy_type: http,proxy_host: proxy[host],proxy_port: proxy[port],proxy_user: proxy[user],proxy_password: proxy[password],},}resp requests.post(url, jsonpayload)data resp.json()if data[code] ! 0:raise RuntimeError(f创建失败: {data[msg]})return data[data][profile_id]profile_ids []for i, proxy in enumerate(proxies):pid create_profile(faccount_{i1}, proxy)profile_ids.append(pid)print(f已创建环境 {pid}绑定代理 {proxy[host]}:{proxy[port]})跑完这一步你就有了一批环境每个环境自带独立指纹且绑定了各自独立的 IP。第二步批量拉起环境并接管。启动接口返回一个 Selenium 或 Puppeteer 能直接接管的调试地址def open_browser(profile_id):url f{BASE}/api/v1/browser/startresp requests.get(url, params{user_id: profile_id})data resp.json()if data[code] ! 0:raise RuntimeError(f启动失败: {data[msg]})ws data[data][ws][selenium]driver_path data[data][webdriver]return ws, driver_path用 Selenium 接管其中一个环境关键是把 debuggerAddress 接上操作的就是那个隔离好的浏览器from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicedef attach(ws, driver_path):options webdriver.ChromeOptions()options.add_experimental_option(debuggerAddress, ws)driver webdriver.Chrome(serviceService(executable_pathdriver_path),optionsoptions,)return driver批量跑每个账号做自己的事for pid in profile_ids:ws, driver_path open_browser(pid)driver attach(ws, driver_path)driver.get(https://whoer.net) # 换成你的业务页面# ... 你的自动化逻辑 ...driver.quit()第三步用完记得关掉环境避免多个环境同时占资源def close_browser(profile_id):requests.get(f{BASE}/api/v1/browser/stop, params{user_id: profile_id})for pid in profile_ids:close_browser(pid)这套跑下来一台机器上几十个账号每个都是独立指纹加独立 IP批量创建、批量拉起、批量关闭全用代码搞定不用手点。如果你连脚本都懒得维护还有个更省事的路子。AdsPower 现在有官方 CLI装好之后一行命令就能建环境、绑代理、开关浏览器。比如建一个带代理的环境、更新代理、批量拿环境列表ads create-browser {group_id:0,user_proxy_config:{proxy_soft:other,proxy_type:http,proxy_host:1.2.3.4,proxy_port:10001}}ads update-proxy {proxy_id:proxy-1,proxy_url:https://refresh.example.com}ads get-browser-list {}CLI 还支持 Docker 部署能在没有图形界面的服务器上跑适合放到定时任务里做长期无人值守的自动化。回到最开始那个问题多账号自动化真正的门槛从来不是业务逻辑写得多复杂是你能不能让每个账号在环境这一层就是彼此独立的。指纹隔离加独立 IP 这一步做对了上面的脚本才有意义。这一层要是漏了你逻辑写得再漂亮账号一批批被关联也是白搭。说实话行为节奏那块我自己也还在踩坑随机延时、操作轨迹这些细节一直在调。但环境隔离是性价比最高、最该先做对的一步先把地基打稳再回头优化上面的逻辑顺序别搞反了。代码里的接口路径和参数我对着官方文档核过但你正式跑之前最好再对一眼当前版本的 Local API 文档端口和个别字段可能随版本微调。