VPN 服务器能看到你什么?拿自己服务器的日志实测
不翻车编辑部 · 更新于

先说结论:VPN 服务器能看到你什么时间、从哪个 IP 地址连进来、去了哪些网站和端口、用了多少流量;HTTPS 网页里你看了什么、填了什么,它看不到;可要是网站用的是 HTTP 明文,连你提交的账号密码都一字不差。2026 年 10 月 18 日,我们在一台测试服务器上另起了一个 Xray(26.3.27),打开访问日志和调试日志,同时抓包,测试端用 sing-box 1.14 连过去,依次访问了维基百科、一个 HTTP 明文测试页、一个提交假账号的测试网站、YouTube 首页,再换三种方式查 DNS。下面的日志和抓包都是这次的原文,来源 IP 用色块盖住了,服务器 IP 只留前两段。
这篇有视频版:YouTube 上看《翻墙上过的网站,VPN服务器全记着?拿自己服务器的日志给你看》。
能看到,不等于一定会记。日志是服务端的一个开关,文末讲普通用户怎么判断。
为什么服务器一定看得到你去了哪
你的设备到 VPN 服务器之间是加密隧道,路上的运营商、公司网管看不到里面(网管能看到什么,见公司 WiFi 网管能看到你开 VPN 吗)。可到了服务器这头,隧道就解开了:它要替你去连网站,必须知道目标是谁。好比包裹外面套了密封袋,转运站得拆开袋子看收件地址才能转寄。袋子里的东西如果还锁在盒子里(HTTPS),转运站打不开;如果是一张明信片(HTTP),拆袋就全看见了。
所以不管哪家、什么协议,Shadowsocks、VLESS 还是别的,“去哪个网站”这一层,服务器都看得到。
实验怎么做的
- 服务端:Xray 26.3.27,测试服务器上用 systemd 临时起的独立进程,协议 Shadowsocks(aes-256-gcm),开了嗅探(
sniffing)。 - 日志:访问日志 + 调试日志(
loglevel: debug),统计接口按用户记流量(和 3x-ui 的做法一样)。 - 抓包:服务器上 tcpdump,只抓实验进程自己发出的连接(用独立的防火墙表按进程用户打标记),不碰机器上的其他服务。
- 测试端:sing-box 1.14 命令行,本地开代理端口,curl 和无头浏览器走这个端口,不改系统代理。
- 做完以后进程、防火墙表、配置和日志文件全部删除。
访问日志:一次连接一行

拿第一行说:
| 字段 | 例子 | 说明 |
|---|---|---|
| 时间 | 07:30:17.369669 |
精确到微秒(服务器时间,UTC) |
| 来源 | from ███:60434 |
你的 IP 地址和端口,图里已打码 |
| 目标 | tcp:en.wikipedia.org:443 |
你要去的网站和端口 |
| 用户 | email: user-62 |
你在服务器上的用户名,每一行都能对到账号 |
打开 YouTube 首页这一下,4 秒钟里日志多了 22 行:www.youtube.com、图片服务器 i.ytimg.com、视频服务器 googlevideo.com、广告服务器 doubleclick.net,还有浏览器自己的后台连接 update.googleapis.com。视频还没点开,服务器已经知道你打开了 YouTube。

(实验服务器是数据中心 IP,YouTube 弹了“确认不是机器人”,视频没有播放,所以这里不谈播放时的流量。)
客户端只发 IP,能藏住域名吗
不能。我们让 curl 在本地解析域名、只把 IP 地址交给代理(socks5:// 而不是 socks5h://),访问日志里目标成了 172.182.252.133:443,可调试日志紧跟着一行 sniffed domain: github.com:

原因是 HTTPS 连接的第一个包(Client Hello,客户端问候)里有个 SNI 字段,用明文写着网站名。抓包里能看到 httpbin.org 这几个字母就夹在十六进制中间:

服务端开了嗅探就能读出来。Xray、sing-box 都有这个功能,本来是给分流规则用的。
HTTPS:只知道网站,不知道内容
我们往测试网站 httpbin.org 提交了一个假账号:user=xiaoming&pass=123456,先走 HTTPS。
服务器访问日志里就一行 tcp:httpbin.org:443。抓包里提交的内容是一串加密后的字节,在整个 443 端口的抓包里搜 xiaoming,0 次:

维基百科那一页也一样:日志里有 en.wikipedia.org,没有我们看的词条 /wiki/Domain_Name_System。HTTPS 下,服务器知道你上了哪个网站,不知道你在网站里看了什么、填了什么。
HTTP 明文:账号密码一字不差
同样的假账号换成 HTTP 再提交一次,抓包里请求原样摆着:提交到哪个网址、用的什么软件,最后一行就是用户名和密码。

HTTP 明文测试页 neverssl.com 也一样,访问路径 GET /online/、网页标题、返回的网页正文,服务器全都看得到。

现在大多数网站都是 HTTPS,浏览器遇到 HTTP 网站会在地址栏标“不安全”。看到这三个字,就别在上面输账号密码。
DNS:三种查法,服务器各看到什么
三种方式查的都是同一个域名:
| 查法 | 服务器访问日志 | 抓包 |
|---|---|---|
| 明文 DNS,走代理(发给 8.8.8.8) | udp:8.8.8.8:53 |
查的域名是明文:A? www.reddit.com. |
| 加密 DNS,走代理(Google 的 DNS JSON 接口) | tcp:dns.google:443 |
只有加密字节,看不到查了什么 |
| DNS 不走代理,直接发给 8.8.8.8 | 没有 | 没有 |

不过前两种查完了,你还是要去连那个网站,域名照样出现在访问日志里。第三种服务器是不知道了,可查询直接走了你本地的网络,运营商看得到,这就是 DNS 泄漏,测法和改法见 Clash DNS 泄漏十几组设置实测。对 VPN 服务器来说,DNS 怎么配差别不大;DNS 配置影响的是国内那一头。
流量:统计接口精确到字节
Xray 自带统计接口,按用户记上传和下载。这一轮实验不到两分钟,接口记下上传 133,468 字节(约 130 KB)、下载 7,075,427 字节(约 6.7 MB):

自建节点常用的 3x-ui 面板,默认就打开了这个统计。v3.10.2 的默认 Xray 配置模板 internal/web/service/config.json 里写着 statsUserDownlink、statsUserUplink 为 true:

所以面板上每个用户用了多少流量一目了然(截图来自我们的 3x-ui 给家人共用 那篇):

3x-ui 中文文档还写着:能查看某个客户端最近使用的 IP,并按客户端跟踪在线状态和最后在线时间。

有意思的是,同一份模板里访问日志默认是关着的:"access": "none"。

“无日志”只能靠条款和审计
Xray 文档写得很直接:访问日志填 none 就是关闭。我们这次打开了,所以记下了上面这么多;关掉,访问日志一行都不留。

问题是,你没法从外面看到别人服务器的配置。不管哪家说自己“无日志”,普通用户能核实的是这三样:
- 隐私政策里,连接时间、来源 IP、访问记录、流量这几项,有没有一条一条写清楚不记。
- 有没有独立的审计报告:谁审的、审了哪些服务器、审的是哪段时间。
- 承诺是哪家公司作出的。
具体怎么读,见 VPN 宣称“无日志”或“通过审计”,普通用户能核实什么。服务器之外,App 本身也可能带着统计和广告组件,可以看 写着“不会收集任何数据”的 VPN 安装包里装着什么。
普通用户能做什么
- 认准 HTTPS。 地址栏标着“不安全”的网站,不输账号密码。
- 国内网站本来就不经过节点。 规则模式下,国内网站和 App 直连,节点能看到的主要是你访问的海外网站。想确认分流对不对,用本站的分流检测。
- 敏感的事,别指望任何一台服务器什么都不记。
- 自建节点,日志开关在你自己手里。 3x-ui 默认不开访问日志;面板的流量和 IP 记录还在,按需要清理。
常见问题
VPN 服务器能看到我的微信聊天吗?
看不到内容,微信有自己的加密。规则模式下微信一般还是直连,根本不经过节点。
能看到我在 YouTube 看了哪个视频吗?
看不到具体是哪个视频。能看到你连了 YouTube 和它的视频服务器、用了多少流量。
开浏览器的无痕模式有用吗?
对服务器没用。无痕是不在你自己电脑上留浏览记录,服务器那头照样一行一行记。
换个协议,比如 VLESS、Trojan,服务器就看不到了吗?
不会。协议管的是你到服务器这一段怎么加密、怎么伪装;到了服务器都要解开,再替你去连网站。
HTTPS 网站的网址后半截,服务器能看到吗?
看不到。我们访问的维基百科页面,日志和抓包里都只有 en.wikipedia.org,没有后面的 /wiki/... 路径。
原始记录
测试日期 2026-10-18(时间为服务器时间,UTC),服务端 Xray 26.3.27,测试端 sing-box 1.14。
| 时间 | 测试 | 访问日志里的目标 | 抓包能看到 |
|---|---|---|---|
| 07:30:17 | HTTPS 维基百科词条 | en.wikipedia.org:443 |
SNI,内容加密 |
| 07:30:20 | HTTP 明文测试页 | neverssl.com:80 |
路径、标题、正文 |
| 07:30:30 | HTTP 提交假账号 | httpbin.org:80 |
用户名和密码明文 |
| 07:30:34 | HTTPS 提交假账号 | httpbin.org:443 |
SNI,内容加密,搜不到用户名 |
| 07:30:37 | YouTube 首页(curl) | www.youtube.com:443 |
SNI |
| 07:30:40 | 明文 DNS 走代理 | udp:8.8.8.8:53 |
查询的域名 |
| 07:30:43 | 加密 DNS 走代理 | dns.google:443 |
看不到查询内容 |
| 07:30:46 | 本地解析,只发 IP | 172.182.252.133:443,调试日志嗅探出 github.com |
SNI |
| 07:30:46 | DNS 不走代理 | 无 | 无 |
| 07:31:06 | 无头浏览器打开 YouTube 视频页 | 4 秒 22 行 | — |
| 07:31:46 | 读统计接口 | 上传 133,468 字节,下载 7,075,427 字节 | — |
资料:
