如果你是因为在网上做某件事被拦截了才来到这里,或者是因为某篇教程告诉你需要住宅代理却没有解释原因,那么这里就是起点。不假设任何先验知识,也不使用未经解释就出现的行话。
代理实际上做了什么
正常情况下,你的电脑直接连接到某个网站,网站看到的是你的IP地址,也就是你的网络服务商分配给你连接的号码。代理居中而处:你把请求发送给代理,代理把请求转发给网站,网站看到的是代理的地址而不是你的地址。
这就是全部机制。其余的一切都是关于你借用的是谁的地址。
为什么地址的类型很重要
网站会根据地址的来源以不同方式对待它们,这一点常常让新手感到意外。
**数据中心(datacenter)**地址属于托管公司,也就是服务器所在的那种地方。这些地址便宜且速度快,但也明显不像真人。这些地址段是公开登记的,因此网站可以立即判断出某个请求来自服务器,许多网站会以此为由进行拦截、发出验证挑战,或提供不同的内容。
**住宅(residential)**地址属于真实的家庭网络连接,由消费级服务商分配给某个家庭。在网站看来,这就像是一个普通人在家中浏览,这正是它在数据中心地址行不通的网站上却能奏效的原因。这些地址来自同意分享自己连接的人,这也是它们价格更高的原因:其供应量的有限程度是数据中心地址所不具备的。
还有其他类型,完整的术语表见术语表,但这一区分已经涵盖了初学者所需了解的大部分内容。
什么时候你真正需要住宅代理
当你的工作依赖于以下两件事之一时,住宅代理才值得其成本。
查看其他地方的人所看到的内容。 价格、搜索结果、商品可用性和广告会因国家而异,通常也因城市而异。如果你需要知道德国的某位顾客看到了什么,你就必须从德国去查询,而德国的住宅地址正是实现这一点的方式。这涵盖了价格监控、检查你的网站或广告在其他市场中的呈现方式,以及收集因地区而异的调研数据。
以单一连接无法应对的规模收集公开数据。 任何网站都会注意到来自单一地址的成千上万次请求,并开始拒绝这些请求。将请求量分散到多个地址上,正是大规模采集任务得以持续运行的方式。
如果以上两者都不适用,你可能根本不需要住宅代理。对于没有防护的目标以及你自己的基础设施,使用更便宜的数据中心地址就足够了,在不需要的地方使用住宅代理只是徒增成本。诚实的对比见住宅代理与数据中心代理。
两种运作方式
这是最让人困惑的概念,但一旦说明就很简单。
**轮换(Rotating)**意味着每个请求都通过不同的地址发出。这是默认方式,也是采集数据时的正确选择,因为将请求分散到多个地址正是防止任何单一地址引起注意的方法。
**保持(Sticky)**意味着你在一段时间内保持同一个地址。当某个网站在多次请求之间记住你时,你就需要这样做:登录、逐页进行的多页搜索,或者任何在中途更换地址就会显得像是换了个人的场景。你可以通过在用户名中添加会话标识符来获得这一功能,它会在轮换之前持续一段设定的时间。
大多数项目会同时使用两者:批量采集用轮换,涉及一连串操作的部分用保持。更多内容见保持与轮换的对比。
你如何为它们付费
住宅代理是按你传输的数据量计费的,以千兆字节(GB)为单位,而不是按你使用了多少个地址计费。这一点常常让人措手不及,因为这意味着IP的数量不是你购买的对象,你需要估算的是带宽。
由此带来的实际后果是:你抓取的内容比你发出多少请求更重要。抓取一个页面的底层数据可能只有几千字节;而在浏览器中完整加载该页面,包含所有图片、字体和脚本,则可能达到几兆字节。同样的任务用第二种方式来做,成本可能高出一百倍。这一取舍在估算带宽和削减带宽成本中有详细介绍。
你的第一个请求
四样东西:主机、端口、用户名和密码。主机和端口永远不变。你的目标定位信息放在用户名里。
# 最简单的情况:轮换,无地区偏好
curl -x customer-USERNAME:PASSWORD@p.shifter.io:443 https://ipinfo.io/json
# 同样的请求,但从德国出口
curl -x customer-USERNAME-country-de:PASSWORD@p.shifter.io:443 https://ipinfo.io/json
运行第一条命令两次,你应该会看到两个不同的地址,这就确认了轮换功能正常工作。完整的格式,包括保持会话和城市定位,见如何连接住宅代理。
初学者常犯的四个错误
指望代理能单独解决拦截问题。 地址只是众多信号中的一个。如果你的请求在其他方面看起来不像浏览器发出的,你仍然可能被拦截,接下来通常要修复的是请求头。
速度太快。 新用户往往会以代码允许的最快速度发送请求,而这正是最快导致被拦截的方式。要刻意放慢速度;适度的节奏不仅是礼貌,更能保持你的成功率处于高位,详见速率限制与请求节流。
盲目相信200响应。 一个页面可能返回“成功”,但其中包含的是一个验证挑战、一个空结果,或者是你想要内容的通用版本。在把内容当作数据之前,先检查它是否符合预期,如检测被拦截或虚假内容所述。
在数据可以直接获取时却加载完整页面。 许多网站的内容是从某个底层接口获取的,你的浏览器可以在网络面板中揭示这一点。直接调用该接口更快、更易于解析,成本也大幅降低,这正是何时需要无头浏览器一文讨论的决策点。
保持在合规的一边
代理改变的是你的请求看起来来自哪里,它们并不改变你被允许做什么。收集公开数据,遵守各网站的服务条款和robots指令,保持请求速率的礼貌,并谨慎对待个人数据。访问那些因地区而合法存在差异的内容属于正常的商业工作;而用代理来绕过本应适用于你的限制则不然,工具本身并不能改变这一点。合法的框架见合法绕过地理限制。
接下来该看什么
一旦你的第一个请求成功运行:如需确定规模,参见选择合适的方案;如果有人问你需要多少个代理IP,参见你实际需要多少个代理IP;如果你仍在评估阶段,参见购买前应测试什么。当出现故障时,IP不轮换和修复407错误涵盖了最常见的两个初始问题。
总结
代理转发你的请求,从而让网站看到的是它的地址而不是你的;而住宅代理借用的是一个真实的家庭连接,这正是它被当作普通访客对待的原因。当你的工作依赖于查看特定地区的人所看到的内容,或依赖于以单一连接无法承受的量收集公开数据时,你就需要用到它。默认使用轮换,当某个网站在追踪一连串操作时使用保持会话,并记住你付费的是所传输的数据量,因此减少抓取量是控制成本的主要手段。从单一的简单请求开始,确认它能轮换,然后逐个添加定位参数。
准备就绪后,住宅代理通过单一连接为你提供本文所述的国家和城市定位、轮换与保持会话功能,并采用按GB计费的方式,让一个小型的初始项目只需花费少量费用。