ISP 代理通常是按 IP、按月购买的,这让一次错误的采购代价颇高。买错地点、买错 IP 数量,或者买到的地址根本不是真正的住宅地址,你都要在每个计费周期为这个错误买单,直到你发现问题为止。
这些错误大多可以通过购买前的一些准备工作和头几天的几项检查来避免。本指南将介绍应该先决定什么、应该验证什么,以及需要留意的定价陷阱。我们自己也销售 ISP 代理,所以会说明我们自己的产品在哪些方面符合要求,但下面的每一项检查都适用于任何供应商。
首先,确认 ISP 代理确实是你需要的
ISP 代理为你提供一个在住宅互联网服务商网络上的稳定地址,位置由你选择,可持续使用数周或数月。对于以下这类特定场景,这正是合适的工具:
- 持续登录你管理的账号,日复一日。
- 持续数小时而非几分钟的会话。
- 检查某个网站在特定城市和服务商环境下的显示效果。
如果要在众多网站上采集大量页面,轮换住宅代理池通常更便宜、更有效;而对某些目标来说,根本不需要代理。我们关于 ISP 代理与住宅代理 的对比文章介绍了两者的区别,什么情况下不需要住宅代理 一文则说明了两者都不需要的情形。
购买前先确定三件事
1. 需要多少个 IP。 统计的是身份数量,而非请求数量。如果每个账号、店铺或工作进程都应该看起来像是独立的一户人家,那么每个身份就需要一个 IP。多买“备用一些”往往是小计划变成大账单的原因;需要新增账号时再增加 IP。
2. 需要哪些地点,精确到什么程度。 写清楚每个身份应该显示在哪里。有些任务只需要国家层级即可。账号相关的工作通常需要该账号平常登录所在的城市。广告和本地化检查可能还需要该城市内特定的互联网服务商(ASN)。如果你需要精确到城市和 ISP,而供应商只按国家出售,那就不是合适的选择。
3. 需要使用多长时间。 如果任务只持续一周,按月计费的单 IP 套餐可能得不偿失。如果任务会长期运行,稳定性和支持的重要性要高于入门价格。
在试用或退款期内应检查什么
定价页面上的宣传说辞很容易写。以下检查只需一个小时,就能告诉你实际买到了什么。
它是否真的是住宅代理? “ISP 代理”应该从消费级互联网服务商出口,而不是从托管公司出口。查询每个出口 IP 所属的网络:如果结果显示是数据中心所有者,说明你是在以住宅价格购买服务器地址。
它是否位于你被承诺的位置? 核对每个出口的国家和城市是否与你订购的一致。
地址分布有多分散? 如果你的大多数 IP 都集中在同一个很小的地址段内,任何检测的网站都会认为它们相互关联,一次针对该地址段的封锁决定可能会波及所有这些 IP。
下面的脚本使用 ip-info.com(我们免费的 IP 地理定位 API)自动对一批试用代理执行上述三项检查,该 API 会报告网络信息以及该 IP 是住宅还是托管类型:
from collections import Counter
import requests
def inspect(proxy_url, get=requests.get):
"""Where does this proxy really exit, and on what kind of network?"""
info = get("http://ip-info.com/json", proxies={"http": proxy_url, "https": proxy_url}, timeout=20).json()
return {k: info.get(k) for k in ("ip", "city", "country", "asn", "as_name", "user_type", "connection_type")}
def audit(proxies, expected_country, get=requests.get):
"""Check a batch of trial proxies before you commit to a provider."""
exits = [inspect(p, get) for p in proxies]
subnets = Counter(".".join(e["ip"].split(".")[:3]) for e in exits)
return {
"proxies": len(exits),
"not_residential": [e["ip"] for e in exits if e["user_type"] != "residential"],
"wrong_country": [e["ip"] for e in exits if e["country"] != expected_country],
"distinct_asns": len({e["asn"] for e in exits}),
"largest_subnet_share": round(max(subnets.values()) / len(exits), 2),
}
对三个代理运行该脚本,其中两个是住宅代理,另一个(作为示例)实际上是位于错误国家的数据中心地址,结果报告如下:
from verify_isp import audit
trial = [
"http://USER1:PASS@isp.example.com:443",
"http://USER2:PASS@isp.example.com:443",
"http://USER3:PASS@isp.example.com:443",
]
print(audit(trial, expected_country="US"))
{'proxies': 3, 'not_residential': ['198.51.100.5'], 'wrong_country': ['198.51.100.5'], 'distinct_asns': 2, 'largest_subnet_share': 0.67}
它能否经受住几天的实际使用? 以实际的节奏,用少量 IP 跑一遍你真实的工作负载。留意连接错误、响应变慢,以及网站对登录发起的质询。只测试一个下午可能会掩盖第三天才出现的问题。
能否获得帮助? 在试用期间向支持团队提出一个具体的技术问题。他们回答的速度和质量,就是你未来遇到故障时能得到何种支持的预演。
定价陷阱
| 陷阱 | 表现形式 | 应该问什么 |
|---|---|---|
| “无限量”套餐中的带宽上限 | 按 IP 计价,外加小字标注的流量额度 | 这个套餐是否对带宽进行计量? |
| 地点附加费 | 宣传价格只适用于少数几个国家 | 我需要的每个地点各自收费多少? |
| 最低使用期限 | 低月费要求长期承诺 | 我能否按月取消或缩减规模? |
| 更换次数限制 | 对更换失效 IP 的次数设有上限 | 当某个 IP 失效时,我该如何更换? |
| 为闲置 IP 付费 | 为从未启用的账号购买的 IP | 我能否之后再加购 IP,而不是提前囤积? |
还要问清楚地址随时间会如何变化。有些供应商承诺地址永不改变;而包括我们在内的另一些供应商,会保持城市和服务商固定不变,但背后的具体地址可能会偶尔刷新,就像家庭宽带连接那样。两种方式都没有对错之分,但你的使用方式应该与所购买的产品相匹配。我们关于长会话和持久登录的 ISP 代理配置的指南介绍了具体的搭建方法。
关于来源的问题
ISP 和住宅地址都有其来源,供应商获取这些地址的方式会同时影响可靠性和你自身的风险。要问清楚地址来自哪里、网络所有者或使用者是否已同意这种安排,以及供应商如何处理滥用行为。我们关于供应商如何合乎伦理地获取住宅 IP的说明文章列出了值得提出的问题,以及应有的答案。
Shifter 的定位
作为参考,以下是我们自己的 ISP 代理对上述问题的回答:
- 按 IP 计费,带宽不限量。
- 每个 IP 的城市和 ISP(ASN)均可自选,覆盖 120 个国家。
- 套餐从 4 个 IP 起步,最高可达 200 个,方便你按所需身份数量购买。
- 同一主机和端口支持 HTTP(S) 和 SOCKS5。
- 首次购买提供 3 天无理由退款保证,这正是进行本指南中各项检查的时间窗口。
最新价格详见 ISP 代理定价页面。
常见问题
我需要多少个 ISP 代理?
每个应该看起来像独立一户人家的身份都需要一个:每个账号、店铺或长期运行的工作进程各需一个。按你目前拥有的身份数量购买,随业务增长再增加。
如何判断 ISP 代理是否真的是住宅代理?
查询每个出口 IP 背后的网络。真正的 ISP 代理从消费级互联网服务商出口;如果是托管或数据中心网络,无论产品名称叫什么,它都不是住宅代理。
ISP 代理对网页抓取来说值得吗?
对于长会话、登录以及特定地点的检查来说,是值得的。如果要在众多网站上采集大量页面,轮换住宅代理通常更具成本效益。
在选定供应商前应该测试什么?
每个出口是否为住宅代理、是否位于你订购的地点、地址分布有多分散、在你真实的工作负载下运行几天的表现如何,以及支持团队回答技术问题的水平如何。
结论
在查看价格之前,先确定你需要多少个身份、每个身份应该位于哪里、需要使用多长时间。利用试用期或退款期检查每个 IP 是否为住宅地址、是否位于正确的地点、是否过于集中,并让它运行你真实的工作负载几天。仔细阅读定价条款中关于带宽上限、附加费和最低使用期限的内容。在开始时花一个小时做检查,远比为错误的 IP 付费一整年要划算得多。