首页 / 用例 / 网页爬虫
免费网页爬虫代理
用单个 IP 抓取网站很快就会被限流或封禁。轮换一个新鲜、经过验证的代理列表能把请求分散到多个 IP 上——下面用一个免费、每小时检测的列表演示怎么做,无需注册。
为什么要轮换代理
大多数站点会对请求过多的 IP 限速或封禁。代理池让每个请求(或每一批)从不同地址发出,任何单个 IP 都不会触发限流。免费代理的难点在于任意一条都可能几分钟内失效——所以可靠的模式是在多个已验证代理之间轮换 + 重试,而不是依赖某一条。
用 Python 轮换验证过的列表
下面的例子加载 JSON 列表(已按速度从快到慢排序),逐一轮换,任一代理失败就重试下一条。
import requests
LIST = "https://raw.githubusercontent.com/xyzs996/free-proxy-health-list/main/proxies/all/data.json"
# 1. 加载验证过的列表(最快、质量最高的在前)
pool = requests.get(LIST, timeout=15).json()
def scheme(p):
proto = p["protocol"]; host = p["proxy"]
return f"socks5h://{host}" if proto.startswith("socks5") else \
f"socks4://{host}" if proto.startswith("socks4") else f"http://{host}"
def fetch(url):
for p in pool: # 2. 在代理池中轮换
px = scheme(p)
try:
r = requests.get(url, proxies={"http": px, "https": px}, timeout=8)
if r.ok:
return r.text
except requests.RequestException:
continue # 3. 失效代理?换下一条
raise RuntimeError("所有代理都失败了 —— 刷新列表")
print(fetch("https://httpbin.org/ip")[:200])
做个有礼貌的爬虫
- 在请求之间加带抖动的延迟(如 1–5 秒),别猛打目标站。
- 设置一个真实的
User-Agent请求头。 - 遵守目标站的
robots.txt和服务条款。 - 遇到
429 Too Many Requests时退避(睡更久)。 - 定期刷新代理列表 —— 它每小时重新验证。
只抓取你有权抓取的数据。不要用代理绕过访问控制、代人登录或违反网站条款。见合规使用说明。
常见问题
免费代理够做网页爬虫吗?
很适合中小规模抓取公开页面、测试和原型。单个代理很快失效,所以要在多个之间轮换重试。大规模或业务关键的抓取,轮换端点更可靠。
怎么避免爬虫被封 IP?
按请求轮换、加延迟与抖动、用真实 User-Agent、遵守 robots.txt、遇 429 退避。轮换新鲜的验证列表能把负载分散到许多 IP。
想要轮换端点而不是文件?
规划中的 Pro API 提供轮换端点及按延迟和质量筛选,免去自己管理代理池。