代理服务器是什么?
代理服务器是夹在你的设备和目标网站之间、替你转发请求的一台服务器,网站看到的是代理的 IP,2022 年 6 月发布的 HTTP 标准 RFC 9110 把它定义为由客户端选定、通常靠本地配置指定的报文转发者。按谁来选它,可以分成正向代理、反向代理和拦截式(透明)代理,协议上常见的是 HTTP 代理和 1996 年 3 月定稿的 SOCKS5(RFC 1928,惯用 TCP 1080 端口)。访问 HTTPS 网站时,只要你的设备没有信任代理方装的证书,代理只能看到域名、端口和流量大小,看不到页面内容。
本文目录10 节
先分清你问的是哪一种“代理”
“代理”这个词在中文里身兼数职,商业、法律、游戏、化学里都有“代理”,和网络无关的占了大半。所以先把几种意思摆开,读者扫一眼就知道这页是不是自己要找的。
法律上的代理写在《民法典》第七章。第一百六十一条说民事主体可以通过代理人实施民事法律行为,第一百六十二条接着规定,代理人在代理权限内以被代理人名义实施的民事法律行为,对被代理人发生效力[1]。委托律师出庭、监护人替孩子签字,用的都是这层意思。商业上的代理商、代理记账,讲的是替厂家卖货、替企业记账,权利义务按合同来。
网络代理和法律代理有一处差别挺有意思。法律代理要求用被代理人的名义办事,后果落在被代理人身上。代理服务器正好反着来,它拿自己的地址去和网站打交道,网站记下的是代理的 IP,你的设备躲在后面。本文只讲这一种。
| 意思 | 谁替谁办事 | 对方面对的是谁 | 常见例子 |
|---|---|---|---|
| 民法上的代理 | 代理人替被代理人实施民事法律行为 | 以被代理人名义,效力归被代理人(民法典第一百六十二条) | 委托律师、法定监护 |
| 商业代理 | 代理商替厂家销售,代理机构替企业办账 | 按合同约定 | 区域代理商、代理记账 |
| 网络代理 | 代理服务器替你的设备转发网络请求 | 目标网站看到的是代理服务器的 IP | 单位上网代理、网站的反向代理、本机代理客户端 |
代理服务器在中间做了哪一步
不用代理的时候,浏览器查到网站的 IP,直接连过去。用了代理,浏览器连的是代理的地址和端口,告诉它自己要去哪个网站,代理替它连过去,再把网站的回复原样交回来。
HTTP 的现行标准 RFC 9110 在 2022 年 6 月发布,它给代理下的定义很朴素,一个由客户端选定、通常靠本地配置规则指定的报文转发者[2]。“由客户端选定”这几个字后面还要用,分辨代理属于哪一类,主要就看它。
访问 http:// 开头的网址时,代理收到的是完整的请求,网址、请求头、表单里填的东西都在里面。访问 https:// 网址,浏览器会先发一条 CONNECT 请求,里面只写目标主机和端口,RFC 9110 规定这种请求必须带上端口号[2]。一条典型的 CONNECT 请求长这样。
代码
CONNECT www.example.com:443 HTTP/1.1
Host: www.example.com:443代理答应以后,这条连接就成了 RFC 9110 所说的隧道,在两段连接之间做盲中继,不改动经过的报文[2]。浏览器和网站之间的 TLS 加密从这时开始,代理只是在两头搬运加密过的字节。
正向、反向、拦截式,看是谁选了它
正向代理是用户这一侧选的。单位的上网代理最典型,管理员在电脑上下发地址或配置脚本,员工的浏览器先去找它。开源软件 Squid 在首页上介绍自己是支持 HTTP、HTTPS、FTP 的 Web 缓存代理,靠缓存常用页面省带宽、缩短响应时间,访问控制也做得很细[7]。它的配置文档里写着 Squid 通常监听 3128 端口[8],所以在单位网络里看到 3128 这个端口号并不奇怪。
反向代理是网站那一侧选的。RFC 9110 管它叫 gateway,括号里注明也就是 reverse proxy,对外表现得像源站,收到请求后再转给后面的一台或几台服务器[2]。nginx 的 ngx_http_proxy_module 干的就是这件事,文档第一句话说这个模块用来把请求转给另一台服务器[6]。访问者什么都不用设置,也感觉不到它。
拦截式代理是第三种,用户和网站都没选它,选它的是网络管理方。RFC 9110 提到 interception proxy,也常被叫作 transparent proxy(透明代理),它和 HTTP 代理的区别就在于不是客户端选的[2]。Squid 的 intercept 模式对应这种做法,靠网络层的 NAT 把流量转到 Squid 监听的端口上[8]。
翻资料时会碰到一处叫法打架。RFC 9110 把反向代理叫 gateway,MDN 的代理科普页却说正向代理也叫 gateway,或者直接叫 proxy[5]。同一个“网关”,两份常被引用的文档指向相反的方向。我们的办法是不跟名字较劲,只问两件事,谁选的它,它替谁遮挡身份。MDN 那页有一句可以当尺子用,正向代理能隐藏客户端的身份,反向代理能隐藏服务器的身份[5]。
| 形态 | 谁选的 | 替谁办事 | 访问者要不要设置 | 例子 |
|---|---|---|---|---|
| 正向代理 | 用户或单位管理员 | 客户端 | 要,填地址和端口,或者填配置脚本地址 | 单位上网代理、Squid 的常规用法 |
| 反向代理 | 网站运营方 | 服务器 | 不用 | nginx 的 proxy_pass |
| 拦截式(透明)代理 | 网络管理方 | 网络管理方 | 不用,也轮不到你选 | Squid 的 intercept 模式 |
| 本机代理客户端 | 你自己 | 本机上的程序 | 要,把系统代理指向 127.0.0.1 | Clash 类客户端、v2rayN |
最后一行严格说属于正向代理,只是代理程序跑在你自己的电脑上。它在后文讲机场节点时还会出现。
透明、匿名、高匿这三档从哪来
国内代理 IP 行业习惯把代理分成透明、匿名、高匿三档。这套叫法不出自哪份标准,分档看的是代理在转发明文 HTTP 请求时往请求头里加了什么。这里的“透明”说的是请求头里带不带你的地址,和上一节 RFC 9110 那个“用户没选它”的透明代理同名,意思不同,看资料时别混在一起。
RFC 9110 对代理有一条硬性要求,转发的每一条报文都必须带上相应的 Via 头[2],规规矩矩的代理会自报家门。另一个常见的头是 X-Forwarded-For,MDN 说它是事实上的标准,用来标出经 HTTP 代理或负载均衡连到服务器的客户端原始 IP[5]。IETF 在 2014 年 6 月发布 RFC 7239,把这类信息收进标准化的 Forwarded 头,其中 for 参数标的是向代理发起请求的那一端,这份文档同时给了代理管理员隐藏请求来源的指引[4]。
照这个思路,三档的差别落在两个问题上。网站能不能看到你的真实 IP,网站能不能看出你在用代理。
| 档位(行业叫法) | 网站能否看到你的真实 IP | 网站能否从请求头看出用了代理 | 相关请求头 |
|---|---|---|---|
| 透明 | 能 | 能 | X-Forwarded-For 或 Forwarded 带着你的地址 |
| 匿名 | 不能 | 能 | 去掉了你的地址,保留 Via 之类的标记 |
| 高匿 | 不能 | 从请求头看不出 | 两类头都不加 |
这张表有个前提。现在多数网站走 HTTPS,真正的请求头在 CONNECT 隧道里加着密,代理根本插不进去,三档的差别主要体现在明文 HTTP 上。按我们的理解,网站想判断访客是不是代理,还可以看这个 IP 属于什么网络、同一个 IP 上同时有多少人在访问,这些和请求头无关。冲着“高匿”去买 IP 做业务的人,这一层最好也算进去。业务用代理 IP 怎么分类,代理 IP 是什么那篇讲得更细。
HTTP 代理和 SOCKS5
HTTP 代理听得懂 HTTP,明文网页直接转发,HTTPS 靠上面那条 CONNECT 打通隧道。SOCKS5 出自 1996 年 3 月的 RFC 1928,当初是为了让程序方便、安全地穿过防火墙,它只管替程序连到指定的地址和端口,TCP、UDP 都能转,惯用端口是 TCP 1080[3]。
两者在浏览器里最容易出差别的地方是域名由谁解析。Chromium 的文档说,Chrome 用 SOCKSv5 代理时总在代理那一侧解析域名,没有开关可改[11]。Firefox 扩展接口里的 proxyDNS 选项,从 Firefox 128 起对 SOCKS5 默认开启,之前默认关闭[12]。同样填一个 SOCKS5 地址,DNS 查询走不走代理,要看浏览器和版本。握手过程、认证方式和一张完整的对照表,放在 SOCKS5 和 HTTP 代理的区别那篇。
VPN、机场节点和代理服务器的关系
先说 VPN 和代理服务器,两者接入系统的方式差得最明显。WireGuard 官网说它靠新增一个叫 wg0 之类的网络接口工作,把 IP 包封装进 UDP 送出去[10],系统按路由表把流量交给这块网卡,程序不用逐个设置。代理服务器得程序自己去连,不读系统代理设置的程序照样直连,“代理开着,某个软件还是连不上”多半出在这里。
机场订阅里的每个节点也是一台代理服务器,只是用的是 VLESS、Trojan、Shadowsocks、AnyTLS 这类协议,系统代理设置里填不进去。所以本机客户端先在 127.0.0.1 上开一个本地端口接住流量,mihomo 文档里这类端口分 HTTP(S) 端口、SOCKS 端口和两种都收的混合端口[13],客户端再按节点协议加密,转给远端节点。
星岛梦(StarDream)就是这样一家机场类服务,也是本站的推广合作方。本站 2026-06-27 做解锁检测时,它的订阅里有 70 个节点,VLESS 60 个、AnyTLS 10 个。它卖的是访问海外网站用的节点,按 IP 提取、批量轮换出口这类业务它接不住,资料和缺点写在星岛梦档案页。代理、VPN、机场、加速器几样东西逐项对照,见代理、梯子、VPN、机场有什么区别;节点名称怎么读、全部超时怎么查,见代理节点那篇。
平常在哪儿会碰到代理服务器
最常见的是单位网络。Windows 的“网络 & Internet > 代理”页面分自动代理设置和手动代理设置两块,自动那一块包括“自动检测设置”开关,以及一个“使用设置脚本”的选项[15]。设置脚本就是 PAC 文件,MDN 的解释是,它是一个 JavaScript 函数,决定浏览器的请求直连目标还是转给代理,函数名叫 FindProxyForURL,返回 DIRECT、PROXY host:port 或 SOCKS host:port[14]。单位电脑上这里已经有值,多半是管理员下发的。
写代码、用命令行的时候也会碰到。curl 认的是 http_proxy 这类环境变量,和系统设置页是两套东西,具体写法和查法放在代理地址和端口填什么那篇。
访问海外网站,是很多人搜“代理”的真实目的。在国内这样做涉及哪些规定,本站把原文集中在上外网犯法吗那一页,这里不下结论。
做数据采集、跨境店铺,要的是大量或固定的出口 IP,这属于业务代理 IP 的范畴,和上面几种用途分开看。
还有一种碰法是报错。浏览器报“代理服务器可能有问题”这类错误,通常是系统代理指向的地方没有程序在应答,排查步骤在这篇报错排查。
把流量交给代理之前
代理的运营者能看到多少,取决于你访问的是什么。明文 HTTP 全部可见,HTTPS 能看到域名、端口、时间和流量大小。想看到 HTTPS 里的内容,代理就得在中间解密。Squid 有这样的功能,它的文档同时写明,默认情况下大多数浏览器会向用户发出可能遭遇中间人攻击的警告[9]。单位电脑上不弹警告,多半是管理员预先装好了证书。
免费代理的运营者是谁、记不记日志,通常查不到。拿它登录账号,等于把这些信息交给一个不认识的人。免费代理 IP 能用吗那篇专门估了这类风险,也列了自查清单。
常见问题
开着代理登录网银,代理那头能看到我的密码吗?
正常情况下看不到。网银走 HTTPS,浏览器先用 CONNECT 请求让代理打通一条隧道,再和银行直接做 TLS 加密,代理只能看到域名、端口、时间和流量大小。例外是你的设备信任了代理方提供的证书,它才能在中间解密,所以别安装来路不明的证书。明文 HTTP 网站的内容,代理全都看得见。
用了代理以后,网站记下的是谁的 IP?
网站记下的是代理服务器的出口 IP。行业里叫“透明”的那一档代理,会在明文 HTTP 请求的 X-Forwarded-For 或 Forwarded 请求头里附上你的真实地址,网站读这个头就能知道你从哪来。HTTPS 请求的头在加密隧道里,代理加不进去。
单位电脑上的代理是谁设的,我能自己关掉吗?
多半是管理员通过“自动检测设置”或设置脚本(PAC 文件)下发的,位置在 Windows 的“网络 & Internet > 代理”。自己关掉可能导致内网系统打不开,也可能违反单位规定,动之前先问 IT。
网站用了反向代理,访问者要做什么设置吗?
什么都不用做。反向代理是网站运营方放在自己服务器前面的,对外表现得和源站一样,访问者照常输入网址就行,也察觉不到它的存在。
代理服务器都要花钱吗?
单位提供的上网代理对员工免费,本机上跑的代理客户端大多是开源软件,也不收钱。要付费的通常是远端的服务,比如业务用的代理 IP 和机场订阅。公开的免费代理查不到运营者是谁,本站不建议拿它登录任何账号。
资料来源与更新记录
- 中华人民共和国民法典(中央网信办网站转载新华社文本,2020-06-01) 中央网络安全和信息化委员会办公室 · 2026-10-20
- RFC 9110 HTTP Semantics(2022-06) IETF · 2026-10-20
- RFC 1928 SOCKS Protocol Version 5(1996-03) IETF · 2026-10-20
- RFC 7239 Forwarded HTTP Extension(2014-06) IETF · 2026-10-20
- Proxy servers and tunneling MDN Web Docs(Mozilla) · 2026-10-20
- Module ngx_http_proxy_module nginx · 2026-10-20
- Squid 项目首页 Squid Project · 2026-10-20
- Squid 配置指令 http_port Squid Project · 2026-10-20
- Feature: Squid-in-the-middle SSL Bump Squid Project · 2026-10-20
- WireGuard 官网首页 WireGuard · 2026-10-20
- Proxy support in Chrome(Chromium 网络文档) The Chromium Projects · 2026-10-20
- proxy.settings(Firefox WebExtensions API) MDN Web Docs(Mozilla) · 2026-10-20
- 代理端口(mihomo 文档) MetaCubeX · 2026-10-20
- Proxy Auto-Configuration (PAC) file MDN Web Docs(Mozilla) · 2026-10-20
- 在 Windows 中使用代理服务器 Microsoft 支持 · 2026-10-20
- DL 首次发布