数据采集(俗称爬虫)是代理IP使用量最大的场景之一。但这行的水很深——同样的目标站,好的方案几百个IP就能稳定跑完,烂的方案几万个IP都在被ban。差别在于IP调度策略和对目标站风控的理解。
一、IP池不是越大越好
新手常见误区:买一个200万IP的池子,觉得”池子越大越稳”。实际问题是:IP池再大,如果你的请求模式不变(频率、UA、行为特征),目标站的风控系统会把整个IP段都拉黑。与其追求池子大小,不如做好:IP轮换策略(每次请求换IP还是每N次换)、请求间隔(随机延迟)、IP质量筛选(只用住宅IP,淘汰被标记的)。
二、核心策略:IP轮换+请求控制
- IP轮换频率:高频数据采集建议每次请求换IP(动态IP池模式),中等频率可以每10-50次换一个;
- 随机延迟:requests之间间隔0.5-3秒随机数,不要固定。模拟人类浏览行为;
- 失败自动切换:请求返回403/429时立即切换到下一个IP,失败IP在一段时间内不再使用;
- 并发控制:同一目标站不要同时发起超过5-10个并发请求。
三、推荐IP类型
数据采集优先选住宅IP。机房IP速度更快但被识别率高。如果你的采集目标站风控不严(政府网站、公开数据平台),机房IP就够用。如果目标站有Cloudflare/Imperva这类CDN防护,住宅IP几乎是必须的。
天行IP的N节点住宅IP月6元(link/5629,blsj四折)对中等规模采集够用了。需要高纯净度上J节点月10元。
四、代码示例:带失败重试的请求
import time, random, requests
def fetch_with_proxy(url, proxy_pool):
for proxy in proxy_pool:
try:
resp = requests.get(url,
proxies={'http': proxy, 'https': proxy},
timeout=10,
headers={'User-Agent': get_random_ua()})
if resp.status_code == 200:
return resp
if resp.status_code in [403, 429]:
continue # 换下一个IP
except:
continue
time.sleep(random.uniform(0.5, 2)) # 随机延迟
return None更多工具看极跃IP资源导航。






