跳到正文

应用场景

Reddit 代理

用于 Reddit 数据采集的住宅 IPv4。这个平台会公开说明自身的限制,而不是让您去猜。

最后更新:

问题

Reddit 是唯一会明确告诉您规则的平台

在这些平台中,Reddit 与众不同:它提供带有文档化速率限制的 API,并要求使用具有描述性、可唯一识别的 User-Agent。使用通用 User-Agent 的请求会受到更严格的速率限制,这是有文档记载的行为,而非猜测。因此,在这里合规采集是真正可以实现的,而在什么都不公开的平台上则不然。

由于限制是按客户端和按地址执行的,大规模采集的瓶颈在于请求配额,而不是地址信誉。将请求分散到多个住宅出口可以提高上限,但正确的第一步是正确完成认证并设置真实的 User-Agent——这不花任何费用,并能解决大部分限流问题。

Reddit 也对 API 访问重新定价,这把部分工作推向了网页端。同样的原则也适用于网页端:如实标识您的客户端,并控制请求节奏。值得遵循的是 Reddit 自己的指南,而不是任何第三方关于安全速率的说法。

对于很大一部分 Reddit 工作来说,代理根本没有必要,如实说明这一点比推销代理更有用。一个正确完成认证、使用描述性 User-Agent 并在文档规定配额内运行的客户端不会被限流,而且这样的设置不花任何费用。只有当总请求量超出单个客户端的覆盖能力,或在匿名采集中按地址的限制成为真正瓶颈时,代理才有意义。在解决认证问题之前就求助于代理,是常见而代价高昂的错误。

如果您想在做决定前比较各种工作流程,可以浏览所有代理应用场景,看看哪种配置最合适。

TrueProxies 如何解决

先认证,再分散

描述性的 User-Agent

Reddit 的文档说明,通用 User-Agent 会受到更严格的限流。在认定是地址问题之前,先设置一个唯一且具有描述性的 User-Agent。

按客户端规划请求配额

限制按客户端和按地址执行,因此请规划请求配额,而不是试图突破限流器。

仅在需要时分散请求

住宅出口可以提高大规模采集的总体上限。请在认证和请求节奏都正确之后再使用,而不是之前。

读取限制响应头

Reddit 会在 API 响应中返回速率限制响应头。请读取这些响应头,并根据其报告的数值退避,而不是从失败中推断限制。

优先使用 API 而非网页端

经过正确认证的文档化 API 是最不容易出问题的途径。只有当 API 确实无法满足需求时,才转向网页端。

集成

搭建合规的 Reddit 数据采集

  1. 1注册应用,并通过 Reddit 的 OAuth 流程完成认证。
  2. 2按照 Reddit 文档的要求,设置一个唯一且具有描述性、能标识您的客户端和联系方式的 User-Agent。
  3. 3在加入代理分散之前,先测量您的实际速率限制,因为大多数限流问题在这一步就能解决。
  4. 4只有当总请求量确实超出单个客户端的文档配额时,才加入住宅出口。
  5. 5在引入任何代理之前,先通过响应头确认您的实际限制。
  6. 6只为确实超出单个客户端文档配额的那部分工作负载加入分散。
# Authenticate and identify the client before adding any proxy.
# Reddit documents that generic user agents are throttled harder.
UA="my-research-tool/1.0 (contact: you@example.com)"

curl -s -A "$UA" \
  -H "Authorization: bearer $TOKEN" \
  -D - -o /dev/null \
  "https://oauth.reddit.com/r/<subreddit>/new?limit=100" | grep -i x-ratelimit

# Only distribute across residential exits once a single
# authenticated client's documented budget is genuinely exhausted.

常见问题

常见问题解答

Reddit 需要使用代理吗?

通常不需要。Reddit 提供带有文档化速率限制的 API,正确完成认证并使用描述性的 User-Agent 就能解决大多数限流问题。只有当总请求量超出单个客户端的配额时,代理才有意义。

为什么我的 Reddit 客户端被限速了?

最常见的原因是使用了通用的 User-Agent 或缺少 User-Agent。Reddit 的文档说明,共用常见 User-Agent 的请求会受到更严格的限流。在认定是地址问题之前,请先设置一个唯一且具有描述性的 User-Agent。

Reddit 代理应该轮换吗?

对于匿名的公开数据采集,应该轮换:轮换可以把请求配额分散到整个 IP 池,而配额才是真正的瓶颈。对于需要认证的 API 工作,请遵守文档规定的单客户端限制,而不要试图绕过它。

代理能防止我的账户被限制吗?

不能。代理只改变网络来源。平台会将设备和浏览器指纹、账户历史以及行为信号与 IP 一并评估,其中任何一项都可能单独触发审核。请遵守各平台的条款,并使用非关键账户进行测试。

允许抓取 Reddit 吗?

允许做什么由 Reddit 的 API 条款决定,而这些条款已经变过。采集前,请阅读现行条款及其公开内容政策。经过正确认证的文档化 API 是最不容易出问题的途径。

Reddit 公布了哪些速率限制?

Reddit 为经过认证的 API 客户端公布了限制,并在每次调用的响应头中返回剩余配额。请读取这些响应头并根据其报告的数值退避,而不是从失败的请求中推断阈值。

代理能提高我在 Reddit 的速率限制吗?

对于经过认证的客户端不能,因为限制是按客户端执行的。将请求分散到多个出口只能提高匿名采集的总体上限。请先解决认证和 User-Agent 问题,因为这能解决大多数限流。

Reddit 客户端应该发送什么样的 User-Agent?

一个唯一且具有描述性、能标识您的应用和联系方式的 User-Agent。Reddit 的文档指出,共用通用 User-Agent 的客户端会受到更严格的速率限制,因此这是成本最低的解决办法。

免费试用

规划 Reddit 请求配额

先完成认证并控制请求节奏;如果请求量确有需要,再分散到住宅出口。

开始免费试用