让代理与身份相匹配
浏览器设置的是 Europe/Amsterdam,用的却是美国住宅 IP——一行代码就能查出来,而这种不匹配很容易一不小心就出现。给 Clearcote 一个开启了 geoip 的代理,它会查询出口 IP,并在第一个页面加载之前,把时区、语言和 WebRTC 地址设置得与之相符。
代理支持和 geoip 在所有套餐中都可用。
一个选项,全部对齐
import { launch } from "clearcote";
const browser = await launch({
fingerprint: "account-42",
proxy: { server: "http://gateway:8080", username: "u", password: "p" },
geoip: true, // timezone + languages + WebRTC follow the exit IP
});亮点
一个选项搞定 geoip
出口 IP 会在离线的 geoip-all-in-one 数据库中查询,然后为该地区设置时区、首选语言、Accept-Language 和 WebRTC 地址。
处处统一的区域设置
Accept-Language、navigator.language、Intl.DateTimeFormat 和 toLocaleString 在页面和 worker 中都跟随同一种语言。
带凭据的 SOCKS5
原版 Chromium 无法向 SOCKS5 代理认证。从 151 起的所有 Clearcote 构建(包括免费的开源版构建)都在引擎中实现了用户名密码握手(RFC 1929),所以不需要本地中继。凭据可以作为独立字段传入,或在 SDK 0.31.1 及更高版本中直接写在代理地址里。
不泄露地址的 WebRTC
默认情况下,WebRTC 无法绕开代理发送流量,所以你自己的地址不会暴露。开启 geoip(或 webrtcIp)后,它会改为上报代理的地址,就像一个真正位于代理后面的浏览器那样。即便如此,授权版构建也不会让 WebRTC 流量走你自己的网络连接;开源版构建则不然,页面选定的中继仍可能看到你的地址。
地理位置也对得上
--fingerprint-location 会在时区之外再固定一组相应的坐标,让 Geolocation API 与时钟保持一致。
或者干脆不用买代理
托管浏览器自带住宅代理,支持按国家、州和城市定位,以及粘性会话。
为什么位置信息必须对齐
位置信息会出现在好几个互相独立的地方:IP 地址、时区、语言请求头、数字和日期格式、WebRTC,以及(获得授权时的)地理位置。检测方不需要知道你在哪里,只要发现其中两项对不上就够了。
geoip 让出口 IP 成为唯一的事实来源。启动时,SDK 解析代理的出口地址,在离线数据库中查询,并据此设置其余各项,所以第一个页面看到的就已经是一致的区域设置。
在信任一个会话之前,务必先检查出口。一个静默失效、直接放行的代理会用你自己的 IP 发送流量,其他所有防护措施都将失去意义。启动时向一个回显 IP 地址的服务发一次请求就足够了。
典型用途
特定地区的结果
按该国访客看到的样子查看价格、搜索结果和供货情况。
绑定地区的账号
让账号每次会话的 IP、时区和语言都保持不变。
广告与内容核查
查看某个城市的访客看到的广告、页面或优惠。
本地化 QA
按当地访客实际看到的样子,检查日期、货币和翻译。
Clearcote 专为隐私保护、测试、研究和合法自动化而打造。你须对自己的使用方式负责,并遵守所访问网站的条款。
原版 Chromium 与 Clearcote Pro 之间相差 38,921 行。
这就是 Pro 版构建与 Google 发布的 Chromium 之间的距离。网站能读取的每个值都在 Chromium 计算它的地方设定,因此页面、它的 Worker 和 iframe 描述的都是同一台设备。
- Canvas
- WebGL
- WebGPU
- 音频
- 字体
- 屏幕与窗口
- WebRTC
- TLS
- Client Hints
- 输入时序
- 语音与编解码器
Pro 版构建,统计自其 r57 补丁栈(Chromium 156.0.8078.47)。免费的开源版构建是一套更小、公开的补丁。
345 files changed, 35915 insertions(+), 3006 deletions(-)
240 个补丁
按模块划分的改动文件
- 渲染引擎(Blink)118
- 浏览器(chrome/)52
- Content 层42
- 组件39
- 网络栈22
- 界面与窗口14
- TLS(BoringSSL)11
- V8 与 URL17
- 其他30
哪些套餐包含此功能
代理支持、时区与语言自动匹配、上报代理地址的 WebRTC,以及从 151 起带凭据的 SOCKS5,在所有套餐中都可用。在此基础上让 WebRTC 流量不走你自己的网络连接,则需要授权版构建(GitHub 免费版即可使用)。
对比套餐常见问题
geoip 具体做了什么?
它会解析代理的出口 IP,在离线的 geoip-all-in-one 数据库中查询,然后为该地区设置匹配的时区、语言列表(Accept-Language、navigator.languages)、地理位置和 WebRTC IP。如果无法解析出地区,启动会报错终止,而不是用你本机的时钟和语言启动。
Clearcote 支持带认证的 SOCKS5 代理吗?
支持,从 151 起的所有构建都可以,免费的开源版构建也包括在内。把用户名和密码作为独立的代理字段传入,或者在 SDK 0.31.1 及更高版本中直接写在地址里(socks5://user:pass@host:port);旧版 SDK 会在凭据到达浏览器之前,把写在地址里的凭据丢掉。Clearcote 在引擎中实现了 SOCKS5 用户名密码认证(原版 Chromium 没有),所以你不需要本地中继。
WebRTC 会泄露我的真实 IP 吗?
默认不会。SDK 对 WebRTC 做了设置,使其无法在代理之外发送 UDP,从而保护你自己的地址。开启 geoip(或 webrtcIp)后,它会改为上报代理的地址,就像一个位于该 IP 后面的浏览器那样。授权版构建依然不会在你自己的网络连接上发送任何 WebRTC 流量;开源版构建在开启 geoip 后则会发送,因此页面选定的中继可能读到你的真实地址。参见什么是 WebRTC 泄露。
支持哪些代理类型?
HTTP 和 SOCKS5 代理,带不带凭据都可以(SOCKS5 凭据需要 151 或更新的构建)。住宅或移动网络出口与普通用户的浏览器最为匹配;托管浏览器已包含住宅出口。
时区需要我自己设置吗?
用 geoip 就不需要。如果你更想手动设置,传入 timezone 和 acceptLanguage(Python:accept_language)即可,Intl 和 toLocaleString 也会跟随该语言。
在文档中深入了解
相关功能
一次 API 调用即可在云端启动 Clearcote 浏览器,并通过 CDP 连接 Playwright 或 Puppeteer。含住宅 IP,按流量(GB)计费。
每个账号一个种子:每次会话都是同一台设备,下一个账号则是另一台,cookie 和存储在多次运行之间持久保留。
TLS 握手和 HTTP/2 帧来自 Chromium 自己的网络协议栈,与版本相关的字段会跟随身份画像声明的 Chrome 版本。
Canvas、WebGL、WebGPU、音频、字体、屏幕和硬件都由 C++ 引擎从一个种子派生,区域设置和时区也随之匹配,让每个检测面彼此一致。
相关阅读
试用 Clearcote
可直接接入 Playwright 与 Puppeteer,一直到 TLS 握手都保持一致,并提供开源构建作为起点。
一个浏览器免费:GitHub、银行卡验证或公司 Google 账号。绝不扣款。