代理指纹反检测自查

代理 IP 自查清单:从出口 IP 到时区语言,4 层检查你的网络环境有没有漏

只看 IP 归属地就以为代理配置成功了?网站的反欺诈系统看的远不止这些。DNS 出口、WebRTC、时区语言,任何一层和 IP 对不上都会暴露。附每层的检测代码和排查顺序。

很多人验证代理的方式是打开 IP 查询网站,看到地区变成了目标国家就认为配置完成。但现代网站的风控系统看的远不止出口 IP 的地理位置——DNS 解析出口、WebRTC 地址、系统时区、浏览器语言,任何一层和 IP 对不上,都会被标记为高风险环境。这篇文章把完整的自查逻辑拆成 4 层,每层给出可以直接运行的检测代码,最后附上排查顺序。

第一层:出口 IP——先看类型,再看地区

IP 数据库给每个地址打的标签里,最要命的不是城市,而是 ASN 类型:这个 IP 是住宅宽带(ISP)、机房(hosting)还是移动网络。

curl -s ipinfo.io

重点看 org 字段:如果显示 AS14061 DigitalOcean 或 AS16509 Amazon 这类机房 ASN,那不管地理位置显示在哪,风控系统都会把它当成机房 IP——正常用户不会从数据中心刷网页。很多标着"住宅"的代理其实是机房 IP 转售,花几分钟验证 IP 的真实归属非常值得。机房 IP 和住宅 IP 在风控评分上的具体差异,之前写过一篇专门的对比。

第二层:DNS 出口——最容易被忽略的泄漏

HTTP 流量走了代理,但域名解析请求默认仍由操作系统发给本地 DNS。也就是说:网站从服务端看到的可能是"HTTP 请求来自法兰克福,但解析这个域名的 resolver 在上海"——CDN 和反欺诈服务(Cloudflare 本身就是全球最大的 DNS 权威之一)完全有能力观察到这种不一致。

# 查看当前使用的 DNS 服务器(macOS)
scutil --dns | grep nameserver | head -5
# Linux: resolvectl status | grep "DNS Servers"

挂着代理时,如果上面显示的是路由器地址(192.168.x.x)或运营商 resolver,而代理又没有做远端解析(HTTP 代理不会做,SOCKS5 需要显式开启远端解析,即 SOCKS5h),那 DNS 层就在漏。判断标准一句话:DNS 出口的地区应该和 HTTP 出口 IP 一致。怀疑泄漏的可以用 DNS 诊断工具直接对比两条出口路径。

第三层:WebRTC——浏览器自己把你卖了

WebRTC 为 P2P 音视频而生,需要绕过 HTTP 代理直接和 STUN 服务器对话来发现真实网络地址。网站页面里跑几行 JS 就能拿到:

const pc = new RTCPeerConnection({
  iceServers: [{ urls: 'stun:stun.l.google.com:19302' }]
});
pc.createDataChannel('probe');
pc.onicecandidate = (e) => {
  if (e.candidate) console.log(e.candidate.candidate);
};
pc.createOffer().then(o => pc.setLocalDescription(o));

srflx(server-reflexive)候选里的 IP,就是不走代理时的真实公网地址。新版 Chrome 已经用 mDNS 混淆了本地地址,但公网地址仍会暴露。挂代理时最稳妥的做法是用扩展直接禁用 WebRTC,或者使用确实隔离了 WebRTC 的指纹浏览器。

第四层:时区与语言——设备指纹和 IP 的交叉验证

这一层没有网络泄漏,纯粹是"设备配置和 IP 对不上":

// 三个值都应与 IP 归属地匹配
Intl.DateTimeFormat().resolvedOptions().timeZone  // 系统时区
navigator.languages                                // 浏览器语言
// Accept-Language: DevTools → Network → 任意请求头

假设 IP 显示在纽约,但时区是 Asia/Shanghai、Accept-Language 是 zh-CN,对网站来说这就是一个"人在美国、设备完全是中国配置"的请求——典型的代理特征。系统时区跟随操作系统,挂代理不会变,这是最难伪装的一层,也是专业风控最爱用的交叉信号。这层的原理展开讲过一篇时区与语言不一致性检测。

一键自查与排查顺序

手动逐层查很繁琐,WebRTC 和 DNS 两层自己搭检测环境也不现实。本站首页的伪装度评分把时区、语言、WebRTC、DNS 出口一致性一起算了,给出 0–100 的分数,低于 80 基本说明有层在漏,扣分项一目了然。

排查顺序建议按风险从大到小:

  1. ASN 类型——IP 本身质量不过关,后面不用调了(选购代理时参考协议选型)
  2. DNS 一致性——代理配置问题,换远端解析或换代理
  3. WebRTC——浏览器配置问题,装扩展或换浏览器
  4. 时区/语言——设备层问题,配合指纹浏览器解决

多账号场景额外提醒:不同账号不只是换 IP,时区、语言等设备层特征也要配套,否则 IP 不同但指纹相同,关联风险依然很高。想理解网站到底从哪些维度看穿你,可以从代理检测的工作原理读起。

把 4 层跑顺之后,把环境自查做成上线前的固定动作而不是一次性配置——代理池的 IP 是流动的,今天合格的 IP 下周可能已经被用脏。

检测你的网络环境:回到首页做一次完整检测,或试试 指纹检测。