ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

多个浏览器环境之间如何隔离 Cookie 和用户数据?

多个浏览器环境之间如何隔离 Cookie 和用户数据? 同时管着几个账号的人很多都在用同一个办法装两套浏览器Chrome 登 A 店Edge 登 B 店。用了几个月确实没出过事。这个办法管用不是因为装了两个软件而是因为 Chrome 和 Edge 各自把数据存在自己的目录里两边的 Cookie 从一开始就不在一块儿。但也有人试过更省事的版本同一个浏览器开两个窗口一个窗口登 A一个窗口登 B。这个版本通常撑不过一天——要么 A 被挤下线要么两个账号一起被要求重新验证。同样是两个账号为什么一个行、一个不行差别只有一件事数据是不是分开存的。下面依次说清楚浏览器把你的东西存在哪、到底存了些什么、为什么清了 Cookie也不保险、一个账号一份数据是怎么做到的、脚本为什么不会连错环境以及 Seek Browser 到底隔离了哪些东西。一、浏览器把你的东西都装在一个目录里Chrome 和 Edge 用的是同一套底层架构。它们都有一个用户数据目录你在这个浏览器里做过的事——登录、浏览、下载、装扩展——全部写在这个目录里。Windows 上的默认路径是C:\Users\你的用户名\AppData\Local\Google\Chrome\User DatamacOS 上在~/Library/Application Support/Google/Chrome。Edge 把路径里的Google\Chrome换成Microsoft\Edge。打开这个目录里面有一个Default文件夹再进去就是你熟悉又陌生的这些东西名字里面存的是什么Cookies你在这个浏览器里的全部 CookieLocal Storage网站的本地存储很多登录凭证放在这里IndexedDB网站存的离线数据库数据量大时用它Cache网页的缓存文件History浏览历史Login Data保存过的账号密码Extensions装过的扩展一个目录就是一套完整的账号痕迹。你登录过谁、看过什么、网站发过什么凭证给你全在这里。建议你现在就动手看一眼Windows 上按Win R把上面的路径粘进去回车。你会亲眼看到账号数据是一个真实躺在硬盘上的文件夹而不是一个抽象概念。二、为什么开两个窗口不算隔离因为两个窗口用的是同一个目录。窗口只是你在屏幕上看到的那一层。它不决定数据存在哪它只是把同一个目录里的内容用两个框显示出来。具体会发生两件事。Cookie 会被覆盖。同一个网站的登录 Cookie名字往往是固定的。你在窗口 2 里登录 B 账号这个 Cookie 就被写成了 B 的窗口 1 里的 A 立刻就不认了——刷新一下可能已经是 B也可能直接跳回登录页。本地存储也一样。很多网站把登录凭证放在 Local Storage 或 IndexedDB 里同一个网站的两份数据挤在同一个目录里后写的盖掉先写的。所以两个窗口登两个账号实际上从来不是两个账号而是一个账号在两个窗口之间反复覆盖。反过来开篇那个装两套浏览器的办法为什么有效原因也在这里Chrome 和 Edge 默认就是两个不同的目录各自装着自己的一整套数据。这就是最朴素的一个账号一份数据。顺带说一句Chrome 右上角的添加用户其实也是在同一个目录下开一个新的子目录。它确实也能把数据分开只是你得自己记住哪个用户对应哪个账号。三、只清 Cookie 不够同一个目录里还有别的还有一种常见做法不换浏览器用完清一次 Cookie。但它经常不管用。Cookie 清得干干净净网站还是认得你。原因是浏览器能清的数据远不止 Cookie 一样。按它自己的分类下面这些都算网站数据CookieLocal Storage网站的本地存储IndexedDB网站的离线数据库Cache网页缓存Service Worker网页在后台运行的脚本File System网页申请过的本地文件空间Web SQL早期的网页数据库这里面任何一样都可能装着和你是谁有关的东西。而且很多网站早就改用 Local Storage 或 IndexedDB 存登录凭证了——你把 Cookie 删干净凭证还躺在旁边。缓存也一样它记录着你最近打开过哪些页面、打开过几次。所以真正需要分开的不是 Cookie 这一项而是整个目录。四、一个账号一份数据是怎么做到的前三节其实已经把答案推出来了问题出在共用一个目录那解法就是——一个账号一个自己的目录。这件事不需要什么黑科技Chrome 原生就支持。启动时可以指定用哪个数据目录命令行参数是--user-data-dir指定不同的目录启动就是两套完全不相干的数据。麻烦在于手动做很累目录要自己建路径要自己记每个都要单独启动开着的时候分不清哪个窗口是哪个账号哪天忘了加参数数据就串了。账号一多出错只是时间问题。Seek Browser 做的事就是把这套容易出错的手工活全部接管让一份数据跟着一个环境走建环境时存储自动就位——不用建目录不用记路径打开时客户端里点一下就行——不用每次敲启动参数使用时每个环境有名字、有备注开着也不会认错关闭时先把最新数据存好再退出——不用惦记着手动导出换电脑时环境配置和登录数据同步保存过登上来就能找回。之后这个环境里发生的所有事——Cookie、Local Storage、IndexedDB、缓存——都落在这份存储里和别的环境互不可见。有一个区别值得单独说这跟用完清掉是两件事。清掉是一次性动作你得记得做而且只要漏一次就出问题。分开存是一种结构——从环境建起来的那一刻起两个账号的数据就从没在同一个目录里出现过。时刻发生什么打开环境把这个环境自己那份数据准备好使用过程中登录凭证有变化就存回这份数据关闭环境先把最新的一份存好再关闭对应的结果很直接关掉环境再打开还是登录状态在环境 A 里登录任何账号环境 B 都不会受影响。五、脚本和 AI 怎么保证不连错环境前面讲的都是手动操作。但很多人的环境是交给脚本或 AI 跑的。设想一台电脑上同时开着 5 个环境、跑着 3 个脚本。如果连接入口是共用的脚本 A 完全有可能操作到环境 B 的页面。这种错误最难发现——它不报错只会安安静静地把两个账号搅在一起等你察觉时已经晚了。Seek Browser 的做法是每个环境有自己一个只在本机可用的连接地址。脚本不是去连浏览器而是先指定一个环境拿到这个环境的连接地址再连上去。连上之后它能看到和操作的页面被限定在这个环境里——别的环境的页面、以及客户端自己的管理界面脚本都看不到。同一个环境可以同时被多个脚本连接各做各的互不干扰。页面在窗口之间拖动、或暂时不显示它属于哪个环境不会变也不会重新加载——脚本手上的那个页面不会因为你顺手拖了一下就失效。对普通用户来说这意味着你可以一边让脚本在后台跑一边自己打开同一个环境看一眼两边不会打架。而且这套限制来自产品本身不是靠脚本自觉。六、Seek Browser 到底隔离了哪些东西前面五节拆了很多细节这一节把它们收拢成一张全景图也是 Seek Browser 区别于装两套浏览器的地方。第一层数据默认就隔开。Cookie、Local Storage、IndexedDB、缓存每个环境一份自己的存储互不可见。这一层不需要你做任何事建环境就有。第二层网络出口按环境配置。默认情况下所有环境走同一个网络网站看到的是同一个公网地址。给环境配上各自的代理之后这个环境里的所有页面都走自己的出口配不上时环境不会偷偷直连——直连等于暴露本机真实地址那比打不开更麻烦。第三层自动化连接一个环境一个地址。脚本指定环境、拿到连接地址、连上去之后只能看到这个环境的页面连错环境的可能性被产品直接堵死。共享的只剩一样这台电脑本身。操作系统、屏幕、时区、语言是共用的——这正是它比每个账号装一套浏览器省资源的原因也是它的边界所在。一句话总结这张图装两套浏览器只能做到第一层的一半Seek Browser 把三层全部按环境管起来。还要说清楚一句隔离降低的是账号之间串号和被关联的风险不等于匿名也不保证任何网站在任何条件下都不会再要求验证。看到任何绝对安全的说法都可以先打个问号。写在最后回到开篇那个办法Chrome 登 A 店、Edge 登 B 店。你其实早就在用一个账号一份数据的思路了——Seek Browser 做的是把它变成默认再把网络出口、自动化连接也一并按环境管起来。所以下次要接第三个账号的时候不用再装第三个浏览器新建一个环境剩下的交给产品。这些也不用照单全收顺手就能验证开两个环境登同一个网站、关掉再重开、用脚本连一个看另一个——两分钟就能试出来比读十篇文章管用。本文属于《Seek Browser 原理》第 1 篇。下一篇我们聊《隔离了 Cookie 为什么还是被关联代理、时区与指纹的一致性》。#指纹浏览器 #环境隔离 #多账号管理 #Cookie #浏览器自动化 #SeekBrowser
返回列表