提供商承诺“超过1000万个IP”,但实际上您每隔几分钟就会收到相同的地址。这是代理服务营销中数字膨胀的经典情况。有一种简单可靠的方法来检查池的真实大小——进行一系列请求并计算您获得了多少个唯一IP。在本文中,我们将讨论如何正确地做到这一点,避免扭曲结果的错误。
为什么要检查代理池的大小
池的大小直接影响在大量请求中IP地址的重复频率。如果您是套利者并且在操作50个Facebook广告账户,多个个人资料上重复的IP是导致整个账户链被封禁的直接原因。如果您是SMM专家并且通过Dolphin Anty管理30个客户的Instagram账户,每次重复的IP都是将不同客户的账户在平台的反欺诈系统中关联在一起的风险。
对于Wildberries和Ozon上的卖家来说,较小的真实池意味着竞争对手的价格解析器会很快受到速率限制或验证码的影响——网站会看到来自同一地址的数十个请求并将其封锁。对于测试广告地理定位的市场营销人员来说,了解请求是否确实来自不同的子网和城市,而不是来自同一数据中心的三个重复IP是非常重要的。
检查只需10-15分钟,而其结果可以节省数周的工作时间,否则这些时间将用于解封账户和弄清楚为什么“新”IP变成了老朋友。
为什么提供商夸大数字
声明的池大小通常是提供商在其网络存在期间理论上可用的地址总数,包括那些很久没有分配、被目标平台封禁或属于不活跃设备的IP(在住宅和移动代理的情况下)。在您请求时,实际可用的样本可能小得多。
还有第二个原因:许多提供商的IP轮换是基于“会话——新IP”的原则,但轮换池可能仅限于特定的地理位置或ISP的子网。如果您仅请求美国的IP,而提供商的总池是按所有国家计算的,您可用的地址数量可能与宣传的相差十倍。
正因如此,1000个请求的测试并不是偏执,而是在建立基于代理提供商的业务流程之前进行尽职调查的必要步骤,尤其是当您有数十个账户或24/7运行的解析器时。
检查方法:1000个请求和唯一IP计数器
方法的逻辑很简单:您向一个返回您当前外部IP的服务发出N个请求(例如,httpbin.org/ip或api.ipify.org),在每个请求中,代理应根据您的轮换设置更改IP。所有获得的地址都被存入一个集合(set),该集合会自动去除重复项。最后,您将唯一IP的数量除以请求的总数——这就是池的真实唯一性系数。
为了进行正确的测试,三个条件是重要的:
- 请求应以符合实际使用场景的间隔进行——如果在实际工作中您每5分钟更换一次IP,就不需要在3秒内发出1000个请求;
- 每个请求应启动一个新的代理会话(对于住宅和移动代理,这通常意味着新的sticky-session令牌或完全重新建立连接);
- 测试的地理位置和代理类型应与您计划在生产中使用的相同——在公共池上进行的测试不会显示特定国家的真实情况。
数字1000并非偶然——这是一个足够的样本,以确保结果的统计显著性,同时测试在合理的时间内完成,并不会给提供商带来过大的负担。
用于测试的现成Python脚本
以下是一个工作脚本,它通过代理发出1000个请求并计算唯一IP。请将PROXY_HOST、PROXY_PORT、PROXY_USER和PROXY_PASS替换为您代理提供商个人账户中的数据。
import requests
import time
from collections import Counter
PROXY_HOST = "proxy.example.com"
PROXY_PORT = "8000"
PROXY_USER = "login"
PROXY_PASS = "password"
proxy_url = f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
proxies = {"http": proxy_url, "https": proxy_url}
TOTAL_REQUESTS = 1000
DELAY_SECONDS = 0.5 # 请求之间的延迟
ip_counter = Counter()
errors = 0
for i in range(TOTAL_REQUESTS):
try:
response = requests.get(
"https://api.ipify.org?format=json",
proxies=proxies,
timeout=10
)
ip = response.json().get("ip")
ip_counter[ip] += 1
except Exception as e:
errors += 1
time.sleep(DELAY_SECONDS)
unique_ips = len(ip_counter)
success_requests = TOTAL_REQUESTS - errors
uniqueness_ratio = unique_ips / success_requests if success_requests else 0
print(f"成功请求数: {success_requests}")
print(f"错误数: {errors}")
print(f"唯一IP数: {unique_ips}")
print(f"唯一性系数: {uniqueness_ratio:.2%}")
print("出现次数最多的前5个IP:")
for ip, count in ip_counter.most_common(5):
print(f" {ip}: {count} 次")
脚本还会输出重复IP的前几名——这对于了解是否有一两个地址“粘住”并异常频繁地被提供商返回非常有用。如果这些地址的比例超过所有请求的5-7%,这就是提供商在轮换方面出现问题的信号。
通过cURL快速检查,无需代码
如果不想编写脚本,可以通过终端进行简化检查。以下bash命令将发出50个请求并将所有获得的IP保存到文件中,这样可以在不安装Python的情况下快速评估:
for i in {1..50}; do
curl -s -x "http://login:[email protected]:8000" \
https://api.ipify.org >> ip_list.txt
echo "" >> ip_list.txt
sleep 0.5
done
sort ip_list.txt | uniq -c | sort -nr
命令sort | uniq -c将显示唯一IP的列表及每个IP的重复次数——这与Python脚本中的原理相同,但无需编写程序。对于快速检查,50-100个请求足以发现轮换方面的明显问题。
如何解释测试结果
唯一性系数取决于代理的类型。不要指望廉价的数据中心代理能达到100%的唯一性,如果住宅代理显示略低于95%也不要惊慌——一些提供商使用有限地理位置的池,在这些地方物理上不可能有无限数量的家庭IP。
| 代理类型 | 1000个请求的预期唯一性 | 评估 |
|---|---|---|
| 住宅代理 | 90-99% | 正常 |
| 移动代理 | 70-95% | 正常(取决于地理位置的运营商密度) |
| 数据中心代理 | 50-90% | 正常,但取决于特定子网的声明池 |
| 任何类型 | 低于30% | 问题——池在广告中严重膨胀或轮换已损坏 |
除了整体系数外,还要查看分布情况:如果1000个请求中有900个返回不同的IP,而100个请求都来自同一地址——这比均匀分布且平均系数相同要糟糕得多。均匀性比整体唯一性百分比更重要,特别是在多账户任务中,每次IP与个人资料的重复绑定都是至关重要的。
在Dolphin Anty和AdsPower中无代码检查池
如果您不想使用脚本,反检测浏览器提供了内置工具进行类似的检查,尽管规模较小。在Dolphin Anty中,打开“代理”部分→选择所需的代理→连续多次点击IP检查按钮,间隔几分钟手动记录结果。在AdsPower中也是类似的:在代理管理部分有一个“检查”按钮,显示当前IP、国家和网络提供商——重复检查的间隔将显示地址是否发生变化。
这种手动方法适合在购买大量代理之前进行快速抽样检查,但如果您计划将过程扩展到数十个或数百个账户,它不能替代1000个请求的完整测试。对于长期使用的严肃检查,最好运行上述部分的脚本以获得统计上显著的数据。
测试池时常见的错误
第一个错误是请求过快,没有间隔。一些提供商故意在短时间窗口内返回相同的IP(sticky会话),而快速测试没有间隔会显示扭曲的低唯一性,尽管在实际使用间隔中一切正常。
第二个错误是通过IP检查服务进行测试,该服务本身会缓存响应或返回地理位置而不是实际地址。使用经过验证的服务,如ipify.org或httpbin.org/ip,这些服务返回纯净的JSON,没有在其端进行缓存。
第三个错误是没有在整体统计中考虑超时和连接错误。如果1000个请求中有200个以错误结束,而您是从1000而不是800个成功的请求中计算唯一性,那么系数将会在不利的方向上扭曲。
第四个错误是测试的地理位置与实际工作所需的不同。池可能在全球范围内庞大,但对于特定城市或州来说却微不足道——而本地地理位置通常对地理定位广告或本地SMM至关重要。
如果池子太小该怎么办
如果测试显示唯一性系数较低,第一步是向提供商的支持部门发送具体的测试数字并请求解释原因。诚实的提供商通常会透明地解释池的结构,包括地理位置和代理类型,并可能提供更狭窄但确实有效的样本。
第二个选择是根据任务重新考虑代理类型。对于账户的操作和广告平台的工作,通常更有效的不是增加数据中心IP的轮换频率,而是转向住宅或移动代理,这样网络的本质就能确保更自然的地址分布,并减少对反欺诈系统的可见性。
第三个选择是减少对池的负担:增加更换IP之间的间隔,在多个子网或地理位置之间分配任务,如果平台允许不从一个特定国家进行工作。有时,解决方案并不是增加池,而是改变请求模式,使其适应实际可用的唯一地址量。
结论
通过计算唯一IP的1000个请求测试是一种快速而客观的方法,用于检查代理池的真实情况是否符合提供商的声明。现成的Python脚本或通过cURL的简化检查占用的时间最少,而结果有助于避免账户被封、在解析市场时被阻止以及不必要的代理支出,这些代理不适合任务。
如果您计划操作Facebook Ads或TikTok Ads的广告账户,或通过Dolphin Anty或AdsPower管理数十个Instagram个人资料,请关注移动代理——它们通常显示更自然的IP分布,并且更少受到平台反欺诈系统的影响。对于在Wildberries和Ozon上解析价格或需要速度和稳定性的任务,建议在构建常规工作流程之前,使用本文中的方法测试住宅代理。