JA3 与 TLS 指纹是什么:浏览器能开、脚本被拦,和换节点不是同一层
有的网站在浏览器里能打开,同一条线路下用 curl、旧版脚本或某个下载器去访问,却得到拒绝或验证页。你换成另一个节点,浏览器仍然正常,脚本仍然失败。这时别人会提到 JA3:它是从 TLS 握手一开始的 ClientHello 里算出来的一串指纹,用来描述这个客户端怎么说话。
指纹描述的是客户端,不是你选的节点。换节点换的是出口地址,不改这只程序的握手。下面只说明怎么把「地址问题」和「客户端问题」分开,不提供伪造指纹去绕过网站防护的做法。站点把哪些指纹当成异常,以该站自己的规则为准。
指纹、地址和证书是三层
所以「换了节点还是被拦」不能推出指纹一定有问题,也不能推出一定是地址问题。要做的是用同一个出口,分别用浏览器和脚本访问,看是不是只有脚本失败。只有脚本失败,就先改用官方客户端或更新过的浏览器,而不是继续换节点。
| 对比项 | JA3 一类指纹 | 出口 IP | 证书与域名 |
|---|---|---|---|
| 看的是什么 | 客户端握手怎么排列 | 请求从哪段地址出去 | 证书是否可信、域名是否对 |
| 换节点 | 通常不变 | 会变 | 不变 |
| 换浏览器 | 会变 | 不变 | 仍由该站证书决定 |
| 命令行工具 | 和浏览器常常不同 | 可以和浏览器相同 | 验证失败是另一类报错 |
| 数据中心地址 | 指纹可以很普通 | 仍可能被单独拒绝 | 与指纹无关 |
| 失败页面 | 验证页或直接拒绝 | 同样可能是验证页 | 浏览器会写证书错误 |
把两层拆开看:分步操作
- 第一步:先把线路准备好,连上刺猬VPN,并固定一个节点。自定义用户名和密码即可匿名注册,不需要邮箱、也不需要手机号;免费节点永久免费、不限流量、不限速,注册即用。全程 HTTPS+AES 加密传输。这一步是为了让后面的对照使用同一个出口;
- 第二步:用日常浏览器打开目标站,确认能看到正常内容而不是验证页。记下当前节点名称;
- 第三步:不要换节点。在同一台电脑上用那个失败的脚本或 curl 再访问一次。若浏览器成功、脚本失败,差异在客户端,不在节点;
- 第四步:把脚本换成这台电脑上的同一款浏览器再试。浏览器也失败,才回到地址、账号或验证页,按那个页面的原文处理;
- 第五步:证书错误按证书处理,不要叫成指纹。地址栏写连接不是私密连接时,先对时间、证书和域名;
- 第六步:若浏览器在这个节点失败、换一个节点就成功,那是出口地址或线路问题,不是 JA3。指纹没有因为换节点而改变;
- 第七步:数据中心地址被拒、家宽浏览器却正常,这是地址类型。和指纹并列存在。地址类型的差别见相关文章,不要用改脚本的办法去冒充浏览器;
- 第八步:更新浏览器和系统。过旧的握手更容易和当前网站的预期不一致。更新后用第二步和第三步再对照一次;
- 第九步:把结论写成一句:同一出口下只有某程序失败,就换用正常浏览器;只有某个节点失败,就换节点。不要两件事一起改。
按现象排查:谁失败、谁没失败
对照时只改一个条件。同时换节点又换程序,就看不出是哪一层。
- 浏览器可开、curl 被拒:同一出口,客户端不同。用浏览器完成操作,不要继续换 IP;
- 浏览器也被验证页拦住:先按验证页和节点处理。这时还不能认定是指纹;
- 换节点后浏览器恢复、脚本仍失败:地址问题已排除,剩下的是这个程序;
- 所有程序在所有节点都失败:更像站点故障、账号或地区规则,把指纹从清单里拿掉;
- 只有证书报错:对系统时间和证书链。指纹页面不会写成证书错误;
- 旧脚本在新系统上失败、浏览器正常:脚本自带的 TLS 栈过旧。更新或改用系统浏览器,而不是伪造握手;
- 手机浏览器可开、电脑脚本不行:仍然是客户端差异。让需要操作的那一步在能打开的浏览器里完成;
- 公司代理和线路叠在一起:出口可能不是你想的那个节点。先只留一条线路再做对照。
换节点和换客户端各解决什么
免费节点适合把浏览器和脚本放在同一个出口上做一次对照。日常浏览用时长套餐按周期计费,期间不限流量、不限速。刺猬VPN 不改写各个程序自己的 TLS 握手。实际可用性取决于当前网络环境。
| 对比项 | 只换节点 | 只换浏览器或更新程序 | 免费节点做对照 |
|---|---|---|---|
| 出口地址 | 改变 | 不改变 | 取决于所选节点 |
| JA3 一类指纹 | 通常不改变 | 会改变 | 不因免费或会员而不同 |
| 证书错误 | 一般无效 | 更新系统可能有效 | 无效 |
| 数据中心被拒 | 换到另一类地址才有关 | 不解决地址类型 | 看该节点属于哪一类 |
| 对照是否干净 | 必须固定程序 | 必须固定节点 | 适合先做一次 |
| 长时间使用 | 时长套餐期间不限流量、不限速 | 与套餐无关 | 永久免费、不限流量、不限速 |
浏览器、脚本和手机要分开记
同一款浏览器的普通窗口和无痕窗口,指纹通常仍属同一家族。无痕解决的是缓存和登录态,不是把 curl 变成浏览器。脚本失败时打开无痕,如果无痕能开,只能说明浏览器可以,不能说明脚本被修好了。
自动更新关掉的旧浏览器会一直用旧握手。站点突然对这台电脑弹出验证、别的电脑正常,先看这台的浏览器版本。版本过旧就更新,不要先换一串节点。
命令行里指定了代理,而浏览器走的是系统线路,两边的出口可能不同。对照前让两边都走你固定的那一个节点,否则你把出口差异误记成指纹。
把测试写成三行就够:节点名称、浏览器结果、脚本结果。三行齐了再决定下一步。缺一行就不要下结论。
系统代理、浏览器插件和线路客户端同时开着时,浏览器可能走插件,命令行走系统代理,两边出口不同。对照前关掉插件,只留你正在测的那一个客户端,再记三行结果。
网站的验证页如果要求登录后才出现,未登录的脚本和已登录的浏览器本来就会不同。先在浏览器里退出登录再访问一次。退出后浏览器也失败,才和脚本放在一起比较。不要把登录态差异写成指纹差异。
同一脚本在两台电脑上一个成一个败,先比浏览器版本和脚本版本,再比节点。版本相同、节点相同仍不同,才把两台的安全软件和系统代理列出来。不要开始就换一串出口。
把浏览器更新到当前版本之后,再做一次同一节点的对照。更新前的失败不能当成更新后的结论。更新只影响这台电脑上的这一款浏览器,脚本如果仍是旧的,结果会继续不同,这是预期,不是节点又坏了。
验证页能在浏览器里手动通过,就用浏览器完成登录或付款。不要为了让脚本也能过,去改握手。脚本只适合在确认页面不拦截该客户端之后,再做重复的读取。读取仍被拒,就停在浏览器里操作。
对照用的页面选一个不需要登录的公开页,这样两边都没有登录态。公开页上浏览器能开、脚本不能,结论就比较干净。公开页两边都能开,再去看需要登录的那一页,那一页的差异先从登录态查起。登录态对齐之后如果仍只有脚本失败,再回到客户端差异,不要插入新的节点。
和 SNI、地址类型怎么分工
域名在握手里怎么被看到,见 SNI 与 ECH。出口是数据中心还是住宅网络,见 住宅 IP 与数据中心 IP。那两层都不是 JA3。
三个检查的顺序是:证书是否报错,同一节点下浏览器和脚本是否一个成一个败,换节点后浏览器是否恢复。不要用伪造客户端指纹的工具去闯验证页。验证页按站点自己的规则来,用正常浏览器完成即可。
线路负责出口和加密传输,不负责把某个脚本伪装成另一款浏览器。需要登录和付款的步骤,放在已经能打开的浏览器里做。
常见报错速查表
| 现象 | 原因 | 解决办法 |
|---|---|---|
| 仅脚本失败 | 客户端指纹或 TLS 栈不同 | 改用同一节点上的浏览器 |
| 换节点脚本仍失败 | 指纹不随节点变化 | 停止换节点,更新程序 |
| 仅某节点浏览器失败 | 出口或线路 | 换节点,程序先不要改 |
| 全部失败 | 站点、账号或地区 | 先不要归到指纹 |
| 证书报错 | 时间或证书链 | 按证书处理 |
| 无痕能开脚本不能 | 无痕仍是浏览器 | 在浏览器里完成操作 |
| 两边出口不一致 | 代理叠在一起 | 只留一条线路再测 |
高频问答
- 问:换节点能改 JA3 吗?答:一般不能。换节点改的是出口地址;
- 问:浏览器行、脚本不行,是 IP 坏了吗?答:同一出口下不是。先换用浏览器;
- 问:这和数据中心地址有什么关系?答:地址类型是另一层。指纹正常仍可能因为地址类型被拒;
- 问:要不要装改指纹的插件?答:不要靠伪造握手去过验证。用更新过的正常浏览器;
- 问:免费节点能做对照吗?答:可以。免费节点永久免费、不限流量、不限速。固定一个节点再比较浏览器和脚本;
- 问:线路会改我的浏览器指纹吗?答:不会。客户端怎么握手仍由那个程序自己决定。实际可用性取决于当前网络环境。
同一出口只改一个条件
JA3 和 TLS 指纹解释的是客户端握手,不是节点名单。浏览器能开、脚本被拦,先保持节点不变,把操作放回浏览器。只有浏览器也随节点成败而变化,才去换节点。证书错误、SNI 和地址类型按各自的现象处理,不要收成一句「被指纹拦住了」。
刺猬VPN 采用 HTTPS+AES 加密传输,支持断线保护。自定义用户名和密码即可匿名注册,不需要邮箱和手机号。免费节点永久免费、不限流量、不限速,适合固定一个出口做对照;时长套餐按周期计费,期间不限流量、不限速。一个账号支持多设备同时在线。站点自己的验证规则以其页面为准。实际可用性取决于当前网络环境。
开始使用刺猬VPN:免费节点即刻体验,全球会员线路
刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。