使用Python测试代理IP池深度
发布时间2025-06-26 05:06:59本工具采用 Python 的 asyncio 异步库结合 aiohttp,实现高并发异步请求代理测试。通过模拟多个请求轮次,可快速检测代理池中实际可用的不同IP数量,评估代理池的健康状况与深度。
假设你的请求 URL 是 https://example.com/api/data
,代理是 http://proxy-ip:port
,请根据实际替换。
1. 先确认是否是代理问题导致的 403
1.1 直接访问(不走代理)
curl -i https://example.com/api/data
如果这里也 403,说明不是代理问题,可能是权限、登录、请求头等原因。
如果返回正常,说明代理可能被目标服务器封禁或拒绝。
1.2 使用代理访问
curl -i -x http://proxy-ip:port https://example.com/api/data
如果代理访问返回 403,说明代理 IP 被拒绝,或者代理请求特征被检测到。
2. 检查请求头问题
2.1 默认 curl 请求头(User-Agent 很简陋)
curl -i https://example.com/api/data
如果返回 403,试试加上常见浏览器 User-Agent:
curl -i -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" https://example.com/api/data
如果加了 User-Agent 后能访问,说明是请求头导致的拒绝。
2.2 添加 Referer 和 Accept
curl -i \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \
-H "Referer: https://example.com" \
-H "Accept: text/html,application/xhtml+xml" \
https://example.com/api/data
有些网站会校验来源 Referer。
3. 测试是否需要登录态(Cookie/Token)
如果你知道接口需要登录,测试时加上 Cookie 或授权头:
curl -i \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \
-H "Cookie: sessionid=xxxxxx" \
https://example.com/api/data
或者带 Token:
curl -i \
-H "Authorization: Bearer your_token_here" \
https://example.com/api/data
如果带了登录态后能访问,说明之前 403 是权限问题。
4. 检查代理特征是否暴露
用代理访问时,抓取返回头看看是否有代理相关字段:
curl -i -x http://proxy-ip:port https://example.com/api/data
查看响应头是否有 Via
、X-Forwarded-For
等代理标记,某些服务器会检测到这些并拒绝。
5. 测试频率限制或 WAF 防护
尝试多次快速请求,看是否触发 403:
for i in {1..10}; do
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/api/data
done
如果开始正常,后来突然变 403,可能触发了防火墙。
6. 详细抓包分析(用 curl + verbose)
使用 curl 详细模式,查看请求完整过程:
curl -v -i https://example.com/api/data
如果用代理:
curl -v -i -x http://proxy-ip:port https://example.com/api/data
观察请求和响应头,服务器返回的 403 中是否有特定错误信息。
7. 用浏览器抓包对比请求差异
- 使用 Chrome/Firefox 打开目标 URL,打开开发者工具 → 网络 → 找到对应请求,右键复制为 curl(带请求头、cookie)
- 将浏览器的 curl 命令直接粘贴终端运行,观察是否仍 403
- 如果浏览器请求成功,命令行请求失败,说明命令行请求缺少某些重要头或登录信息
总结
测试点 | 命令示例 | 可能原因 |
---|---|---|
直连是否 403 | curl -i URL |
服务器权限或登录限制 |
代理访问是否 403 | curl -i -x PROXY URL |
代理被封禁或识别 |
User-Agent 缺失 | curl -i -H "User-Agent:..." URL |
服务器屏蔽默认 curl UA |
Referer 缺失 | 加 -H "Referer:..." |
需要指定来源 |
Cookie/Token 缺失 | 加 -H "Cookie:..." 或 Authorization |
需要登录状态 |
频率限制/WAF | 快速循环请求 | 触发服务器防护 |
代理头暴露 | 检查 Via、X-Forwarded-For | 被识别为代理访问 |
抓包对比 | 浏览器抓包复制 curl | 请求头/登录态缺失 |
你可以按顺序执行以上步骤,定位403出现在哪一步。
如果需要,我可以帮你写一份专门的脚本自动检测这些因素,也可以帮你分析某个具体命令输出。你觉得呢?