您的机器向互联网发出的每个请求都携带您的 IP 地址。代理服务器居中代您发出请求,因此目标看到的是代理的地址而非您的地址。这一层间接访问就是整个思路。其他一切,轮换、匿名性级别、那十几个产品名称,都是对它的变体。

本文介绍通过代理路由流量时实际发生的事情、值得了解的几种类型,以及如何为真实工作负载选择合适的代理。我们将把您在其他地方看到的十六种"类型"按其实际代表的决策来组织,因为其中大多数都用不同的名称描述同样的两三个选择。

什么是代理服务器

代理服务器是代表另一台机器发出网络请求的机器。您的客户端与代理通信,代理与目标通信,响应以同样的方式返回。对目标而言,流量看起来像是来自代理。

这种间接访问同时带给您几样东西:源端看到不同的 IP,您可以将该 IP 放在不同的网络或国家,而中间的跳转可以在流量经过时检查、缓存、过滤或重写。您关心哪些用途决定了您要使用哪种代理。

代理的实际工作原理

当您使用 HTTP 代理时,您的客户端向代理而非目标站点打开连接,并在请求行中写入完整的目标 URL。代理读取这个请求,向源站打开自己的连接,转发您的请求,并将响应流回来。因为它能看到明文请求,它可以在传输过程中添加、删除或重写请求头。这就是代理如何附加干净的 IP、设置地理位置或执行请求头策略的。

HTTPS 不同。您的客户端不能让代理读取加密流,因此它发送一个 CONNECT 请求,要求代理向源站打开一个原始隧道,然后直接通过该隧道执行 TLS 握手。代理在不查看内容的情况下来回传送字节。

http
# Client asks the proxy to tunnel to the origin
CONNECT example.com:443 HTTP/1.1
Host: example.com:443

# Proxy confirms, then relays the encrypted bytes blindly
HTTP/1.1 200 Connection Established
注意

这就是为什么 HTTP 代理可以过滤或修改内容,而 HTTPS 隧道大多只是中继它。"透明"检查 HTTPS 需要在客户端安装证书,以便代理能够自己终止 TLS,这在任何您不控制的网络上都应该引起警觉。

代理分类:四个决策,而非十六种类型

大多数"代理类型"列表将四个不相关的问题混合在一个平铺的菜单中。将它们分开,情况就变得简单了。给定的代理是四个维度上的一个点:其 IP 来自哪里、它面向哪个方向、它使用什么协议,以及它对您揭露多少信息。

按来源:数据中心、住宅、移动

这是对抓取影响最大的维度,也是人们实际为之付费的维度。

数据中心代理是托管在云或托管提供商的 IP。它们快速且廉价,且成大型连续块出现,这也使它们最容易被网站识别和封锁。在目标不审查 IP 声誉的地方使用它们。

住宅代理通过真实的消费者 ISP 连接路由,因此其 IP 看起来像普通家庭用户。它们更慢、更昂贵,但更难封锁。完整的权衡请参阅数据中心与住宅代理,静态住宅中间地带请参阅 ISP 与住宅代理

移动代理通过蜂窝网络(4G 和 5G)路由。由于运营商通过运营商级 NAT 在许多订阅者之间共享少量 IP 池,封锁一个移动 IP 可能意味着封锁数千个真实用户,因此网站对它们最为容忍。它们也是最贵的。

Crawlbase Smart AI Proxy

跳过轮换逻辑。Smart AI Proxy 每次请求选择住宅、数据中心或移动 IP,处理重试,并位于一个端点后面,让您无需自己管理池。

按方向:正向与反向

正向代理位于客户端前面,朝向互联网。这通常就是人们说"代理"时的意思:您将流量通过它发送。反向代理位于服务器前面,朝向服务器,接受来自公共网络的请求并将其分发到后端进行负载均衡、缓存或 TLS 终止。Nginx 在应用前面就是反向代理。机制有重叠,但意图相反。我们在正向与反向代理中详细比较了它们。

正向与反向。中间的同一台机器;改变的是它代表的哪一侧。正向代理位于您的网络内部,朝向外部;反向代理位于源站前面,朝向内部。

按协议:HTTP(S) 与 SOCKS5

HTTP 代理理解 HTTP,这让它能在应用层对请求采取行动(如上述的请求头重写)。SSL/HTTPS 代理只是一个也处理加密流量的 CONNECT 隧道的 HTTP 代理;详见HTTP 与 HTTPS 代理

SOCKS5 代理工作在更低的层次。它在不理解上层协议的情况下转发原始 TCP 和 UDP,因此可以传输任何内容(HTTP、电子邮件、torrents、游戏流量),但由于它从不读取请求头,也就无法重写它们。当您需要与协议无关的转发时使用 SOCKS5;当您想要请求级别的控制时使用 HTTP。详情见什么是 SOCKS5 代理

按匿名性:透明、匿名、精英

代理在披露多少信息方面有所不同。透明代理X-Forwarded-For 等请求头中转发您的真实 IP 并表明自己的存在;它用于缓存和内容过滤,而非匿名性。匿名代理隐藏您的 IP 但仍表明自己是代理。精英或高匿名代理两者都隐藏,表现得像普通客户端。伪装代理走得更远,报告一个假 IP。对于抓取,您通常需要精英级行为,使目标无法判断是否涉及代理。

专用和隐私代理

您将看到的其余名称是更窄的工具,而非独立的类别:

  • Web 代理:您从浏览器页面驱动的代理,无需客户端配置。方便,功能有限,通常有日志记录。
  • CGI 代理:以服务器端脚本形式实现的相同思路,为您获取页面。
  • 后缀代理:将其名称附加到目标 URL;使用简单,容易被封锁,常用于绕过简单过滤器。
  • DNS 代理:转发 DNS 查询而非 HTTP,用于在名称解析层进行过滤和地理路由。
  • Tor(洋葱)和 I2P:匿名网络,而非商业代理。它们通过多个志愿者中继路由,以重大速度代价换取强匿名性。适用于隐私,不适用于高吞吐量抓取。

代理的实际用途

剔除功能列表,代理在四项工作中占有一席之地:

大规模采集数据。主要的真实用途。轮换 IP 让您无需单个地址遭遇速率限制或封锁就能采集公开数据(价格、列表、搜索结果)。这就是为什么抓取基础设施大多是代理基础设施。

控制您的出现位置。位于另一个国家的代理让您看到特定地区的定价、内容和搜索结果,并让您测试自己的网站从其他地方看起来是什么样的。

通过缓存提升性能。缓存响应的正向或反向代理在本地响应重复请求,降低延迟和源站负载。这是企业网络最初运行代理的原因。

安全、过滤和监控。作为流量的咽喉要道,代理可以封锁特定类别的网站、检查违反策略的请求并记录使用情况。这是内容过滤和流量监控,也是代理在托管网络中普遍存在的原因。

风险,诚实地说

代理是您将流量路由通过的机器,这意味着您在信任运营它的人。

谨慎使用免费代理

普通 HTTP 代理可以读取您通过未加密连接发送的所有内容,而恶意运营者可以记录凭据或注入内容。免费公共代理列表是最严重的罪犯:您根本不知道谁在运营它们或他们保留什么。如果代理是免费的、匿名的,且不是您自己搭建的,请假定它在记录日志。

有两个具体风险值得点名。第一,代理跳转上没有加密:使用普通 HTTP 代理时,除非目标本身使用 HTTPS,否则您与代理之间的链接是未加密的。第二,未经授权的数据存储:任何代理都可以记录通过它的请求,因此日志记录策略与 IP 质量同等重要。对于生产工作,使用有明确策略的提供商,而不是抓取来的免费列表。

如何通过代理路由流量

最简单的情况下,代理就是一个主机、一个端口和可选的凭据。大多数工具直接接受它。以下是通过 HTTP 代理用 curl 发出单个请求:

bash
# Send the request through a proxy and check the exit IP
curl -x "http://user:[email protected]:8080" "https://httpbin.org/ip"

# Response shows the proxy's IP, not yours
{ "origin": "203.0.113.42" }

对于整个 shell 会话,您可以设置 HTTP_PROXYHTTPS_PROXY 环境变量,大多数命令行工具都会遵守这些变量。浏览器和操作系统在其网络偏好设置中暴露了相同的主机/端口设置。机制在任何地方都是相同的;只有配置字段会变化。

使用 Crawlbase Smart AI Proxy

自己管理池、轮换和重试是变得昂贵的部分。托管端点隐藏了这些:您将客户端指向一个主机,它选择 IP、在失败时轮换并返回响应。使用托管提供商时,相同的 curl 调用有效,减去了您维护池的部分。这就是 Crawlbase Smart AI Proxy 使用的模型,您可以根据 API 文档进行配置。

如何找到并验证您的代理 IP

要查看代理呈现的 IP,请通过它向 httpbin.org/ipifconfig.me 等回显服务发出请求,然后读取地址,正如上面的 curl 示例所示。如果显示的是代理的 IP 而非您自己的,则路由正常工作。

是的,IP 在某种意义上可以被伪造,即 X-Forwarded-For 等请求头可以轻易伪造,这就是为什么服务器从不为安全决策信任它们。TCP 源地址本身对于正常的双向连接无法伪造,因为握手需要接收返回的数据包。代理与其说是伪造您的 IP,不如说是从自己的 IP 合法地发起连接。

回顾

核心要点

  • 代理是一层间接访问。它代您发出请求,因此源端看到的是代理的 IP,而非您的。
  • HTTP 代理能看到您的请求;HTTPS 隧道看不到。这一个事实解释了各自能做什么和不能做什么。
  • 按四个维度而非十六种类型选择:来源、方向、协议、匿名性。大多数命名的"类型"只是这些选择之一。
  • 对于抓取,来源是您付费的部分。数据中心追求速度,住宅和移动用于规避封锁。
  • 您在信任代理的运营者。免费匿名代理存在日志记录风险;使用有明确策略的提供商。

常见问题

代理服务器与数据包过滤防火墙有何不同?

代理在应用层运行,代表您发出请求,因此它可以理解并重写所传输的流量。数据包过滤防火墙在更低的层次工作,根据地址和端口允许或丢弃数据包,而不充当端点。防火墙决定流量是否可以通过;代理参与其中。

什么是代理服务器地址?

它是您的客户端连接到的主机和端口,例如 proxy.example.com:8080,有时附带用户名和密码。这对信息就是工具通过代理路由流量所需的全部。

如何找到代理服务器地址?

对于您控制或订阅的代理,提供商会给您主机、端口和凭据。在托管网络上,地址可能已在您的操作系统或浏览器网络设置中设置,或由管理员自动推送。要查看代理呈现的 IP,通过它向回显服务发出请求。

代理服务器的常见功能是什么?

最常见的生产用途是通过轮换 IP 来大规模采集公开网络数据,以避免速率限制和封锁。在企业网络上,最常见的功能是在单个受控咽喉要道进行缓存和内容过滤。

开始构建

大规模爬取任何站点,无需与基础设施对抗。

Crawlbase 负责处理代理、指纹和 CAPTCHA,让你的团队专注于交付数据流水线,而非维护爬取管道。1,000 次请求免费,无需信用卡。

自助开通 · 无需销售通话 · 提供企业级爬取量