握草,用浏览器检测你的NAT类型?!

握草,用浏览器检测你的NAT类型?!

2026-04-04
众所周知,NAT类型的检测并不是什么门槛,但是,如果我说纯浏览器也可以实现检测呢...

视频(非教程)

https://www.bilibili.com/video/BV1H4DuBWEes/

原理

我们都知道,NAT类型测试非常简单就可以实现,我们可以使用类似如下Python库在客户端本地跑一个脚本测试

::github{repo=MikeWang000000/Natter}

但如果我说,我们根本就不需要下载一个程序,只需要打开一个浏览器就可以测试你的NAT类型呢?

稍微深入一点,大部分的客户端测试你的NAT类型一般都是

但是,在浏览器中,我们无法发送原生的UDP(STUN)请求,只能使用一个包装过的UDP接口: WebRTC

该功能设计初衷是让浏览器也可以进行P2P连接

但我们也可以将它拿来测试NAT类型,不过我们的后端需要富裕一点:用两个不同的IP来探测

实际上,它的原理简单来说就是:

详细的技术文档参见: webrtc_check_nat/nat_detector_explanation.md at main · afoim/webrtc_check_nat

实现

最终,我们只需要写好后端,再创建一个HTTP端点,即可实现 完整的、全状态、纯浏览器的 NAT类型检测

::github{repo=afoim/webrtc_check_nat}

::url{href="https://2x.nz/nat-check/"}