跳到正文
代理 · geoip · WebRTC · SOCKS5

让代理与身份相匹配

浏览器设置的是 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
  • 输入时序
  • 语音与编解码器
在 GitHub 上阅读开源版构建的补丁

Pro 版构建,统计自其 r57 补丁栈(Chromium 156.0.8078.47)。免费的开源版构建是一套更小、公开的补丁。

Chromium 156.0.8078.47 → Clearcote Pro r57

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 也会跟随该语言。

在文档中深入了解

相关功能

试用 Clearcote

可直接接入 Playwright 与 Puppeteer,一直到 TLS 握手都保持一致,并提供开源构建作为起点。

一个浏览器免费:GitHub、银行卡验证或公司 Google 账号。绝不扣款。