代理和 VPN 的区别:各自做什么,你该用哪个
代理和 VPN 的区别:代理只转发某个应用的请求,VPN 加密整台设备的流量。附对比表,以及抓取和公共 Wi-Fi 分别该用哪个。
代理和 VPN 的区别在于:代理把某一个应用或脚本的请求换到另一个 IP 地址上发出去;VPN 则把整台设备的全部流量加密,经由一台服务器送出。做爬虫和自动化,用代理。在公共 Wi-Fi 上保护你的笔记本,用 VPN。两者重叠的地方,比广告里说的少。
我们卖代理,不卖 VPN,读的时候请记住这一点。本文的目的是帮你选对工具,哪怕那个工具不是我们的。
代理和 VPN 对比一览
| 代理 | VPN | |
|---|---|---|
| 覆盖范围 | 你指向它的应用、脚本或请求 | 设备发出的一切 |
| 在哪里设置 | 代码里的一个 URL,或应用设置里的一个字段 | 一个应用或系统配置,会新增一个网络接口 |
| 额外加密 | 到代理这一段不加密;https 页面依然端到端加密 |
设备到 VPN 服务器之间的所有流量都加密 |
| 出口 IP | 每条请求一个,或同时用很多个 | 通常整台设备同一时间只用一个 |
| IP 在哪里 | 视产品而定:数据中心、ISP 或家庭网络 | 大多在 VPN 公司自己的服务器上 |
| 为什么而生 | 抓取、自动化、从其他地区测试 | 在不可信的网络上保护隐私、接入内网 |
代理在网络层面做什么
代理是一台替你发请求的服务器。你让程序把流量发到 HOST:PORT,代理再转发给网站。网站看到的是代理的出口 IP。
ProxyPanda 提供 HTTP 代理,也提供 SOCKS5。用 HTTP 代理时,根据网站不同,会发生两种情况:
- 访问
http://网站时,客户端把整条请求以明文发给代理,由代理去取页面。代理能读到、也能改动其中的任何内容。 - 访问
https://网站时,客户端发一个写明主机的CONNECT请求,代理建立到该主机的连接,然后客户端通过这条 CONNECT 隧道直接和网站进行 TLS 通信。代理能看到主机名和字节数,读不到页面。
代理是按应用生效的。在一个 Python 脚本里设了代理,你的浏览器、邮件客户端和系统更新都不受影响:
curl -s https://api.ipify.org; echo
curl -s -x http://USERNAME:PASSWORD@HOST:PORT https://api.ipify.org; echo
第一行打印你自己的地址,第二行打印代理的出口 IP。两者在同一台机器上、同一时刻运行。HOST、PORT、USERNAME 和 PASSWORD 是占位符,真实值在控制台的服务页面上。ProxyPanda 也提供 SOCKS5,它能承载任意 TCP 连接;什么时候用它,见 HTTP 代理和 SOCKS5 的区别。
VPN 在网络层面做什么
VPN 客户端会在设备上建一个虚拟网络接口,并让操作系统把流量路由过去。设备发出的一切,不管来自哪个应用,都被包进一条通往 VPN 服务器的加密隧道。服务器拆开包裹,再用它自己的 IP 发往互联网。
由此有两个结果。你和 VPN 服务器之间的任何人,比如咖啡馆 Wi-Fi 的管理者,只能看到发往一台服务器的加密流量。而过了 VPN 服务器之后,你的流量和不用 VPN 时一样暴露:http:// 页面在剩下的路上依然是明文。VPN 保护的是第一段路,而在公共 Wi-Fi 上,你担心的恰恰就是这一段。
代理和 VPN 是一回事吗?代理会加密吗?
不是一回事,很多人在这里栽跟头。
HTTP 代理本身不加密。你的 https:// 流量仍然是加密的,因为 TLS 是从你的客户端穿过隧道一直到网站。但从你到代理这一段,有些东西是明文传输的:
- 你连接的每个网站的主机名,写在
CONNECT那一行里; - 你的代理用户名和密码,放在
Proxy-Authorization头里,只是 base64 编码,并不是加密; - 任何
http://请求和响应的全部内容。
在你自己家里或公司的网络上,这通常没问题。在不可信的网络上,任何在旁观察的人都能读到这些主机名和你的代理凭据。如果你要在咖啡馆用笔记本跑代理任务,请套一层 VPN,或者放到服务器上跑。
还有一个坑:关掉证书校验的脚本,比如 Python requests 里写 verify=False,等于放弃了让 https 在任何代理下都安全的那层保护。请保持校验开启。
做爬虫用代理还是 VPN?
用代理,理由有三。
并发。 爬虫要同时发很多请求,而且往往要从不同 IP 发。代理按请求提供 IP,VPN 同一时间只给整台机器一个出口。
轮换与选择。 用代理,你可以在住宅 IP 池里每条请求轮换一次,为登录保持一个粘性会话,或者在指定国家租静态 IP。IP 池是怎么回事见什么是住宅代理,静态 IP 见 ISP 还是数据中心代理。
隔离。 代理只影响那个脚本。爬虫的 IP 被限速时,你的浏览器、聊天软件和系统更新照常走你自己的网络,这正是你想要的。
面向个人用户的 VPN,出口 IP 放在数据中心里,同时被很多用户共用,所以会筛查自动化流量的网站往往一视同仁地对待它们。看几个页面,VPN 够用;每小时跑一次的任务,它就不对路了。人们怎么搭这类任务,见网页抓取使用场景。
公共 Wi-Fi 上用代理还是 VPN?
用 VPN。公共 Wi-Fi 的风险在本地网络:网络上的某个人偷看或篡改你的流量。VPN 加密设备发出的一切,包括你忘了还在联网的应用。只在一个程序里配置的代理,保护不了其他东西,而且如上所说,它连到代理这一段都不加密。
做地区检查用代理还是 VPN?
两者都能让你看到网站在另一个国家显示成什么样,区别在于可控程度。
如果你在测试自己的网站、检查广告在某个市场是否正常展示,或者对比公开页面上的本地化价格,代理可以让你写成脚本:一条请求从德国发,一条从日本发,并排对比。在 ProxyPanda,ISP 或数据中心 IP 下单时可以选国家、地区和城市。我们的住宅线路不能选国家,所以不适合依赖位置的检查。配置方法见地区检查使用场景和地区页面。
我们不卖 VPN,代理也不是用来看流媒体其他地区片库的工具,这不在我们支持的范围内。
代理和 VPN 能一起用吗?
能。笔记本上开着 VPN 时,走代理的脚本流量会先经 VPN 隧道到达代理,再从代理到网站。网站看到的是代理的出口 IP,咖啡馆的网络只看到 VPN 流量。代价是延迟,因为每条请求都要绕两道。放在数据中心的服务器上跑,通常用不着加 VPN 这一层。
快速问答
ProxyPanda 卖 VPN 吗? 不卖。我们卖住宅、ISP 和数据中心代理。
代理比 VPN 安全吗? 它们保护的东西不一样。VPN 在本地网络上保护你设备的流量;代理改变的是网站看到的 IP,只对你经它发出的请求有效。
VPN 能用来做网页抓取吗? 抓几个页面,通常可以。定期、大量的任务,VPN 那一个共用的出口会被限速,而且没法按请求轮换。
住宅代理是 VPN 吗? 不是。它只经由家庭网络转发你指定的请求,不加密设备流量,也不管其他应用。
免费代理能当便宜的 VPN 用吗? 不能。它既有到代理这一段不加密的风险,运营者又是谁都不知道。免费代理安全吗讲了可能出什么问题。
下一步
如果你要做的是抓取、自动化或从其他地区查看页面,工具就是代理。先挑在目标网站上能用的最便宜的线路,用一小笔充值测一测,价格见价格页。关于配置的问题,买之前买之后都欢迎到 Discord 来问。