
作为经常写爬虫、做网络测试的人,我每天都会接触免费代理——但免费代理的可用率通常低于5%,手动一个个测试太浪费时间,今天就教大家用Python写一个简单脚本,5分钟搞定代理可用性验证,全程实战、通俗易懂,新手也能直接上手。
核心需求很简单:输入一批免费代理(IP+端口),自动检测每个代理是否能正常使用,输出可用代理清单,不用手动访问测试,效率直接拉满。
只需要2个基础工具,提前准备好,避免编码时卡壳:
pip install requests。补充:免费代理可以从66daili 免费代理等公开网站获取,复制下来保存好,后续直接用到脚本里即可。以下是常见且实用的免费代理网站,可直接访问获取代理:
全程复制粘贴即可,我会逐行注释,让大家明白每一步的作用,不搞复杂逻辑,聚焦“能用、好用”。
新建一个Python文件(比如proxy_check.py),输入以下代码,直接替换代理列表即可使用:
import requests
# 1. 替换成你获取的免费代理列表(格式:http://IP:端口)
proxy_list = [
"http://123.45.67.89:8080",
"http://111.222.33.44:3128",
"http://55.66.77.88:80",
# 可继续添加更多代理,一行一个
]
# 2. 测试代理的核心函数(超时时间设为5秒,避免长时间等待)
def check_proxy(proxy):
# 测试地址用httpbin.org,会原样返回请求信息,适合验证代理是否生效
test_url = "http://httpbin.org/ip"
try:
# 用当前代理发送请求,设置超时时间
response = requests.get(test_url, proxies={"http": proxy, "https": proxy}, timeout=5)
# 状态码200说明代理可用,返回True和响应时间
if response.status_code == 200:
response_time = round(response.elapsed.total_seconds(), 2)
return True, response_time
except Exception:
# 出现任何异常(超时、连接失败等),说明代理不可用
return False, None
# 3. 批量验证所有代理,输出可用结果
if __name__ == "__main__":
print("开始验证代理可用性,共{}个代理...\n".format(len(proxy_list)))
available_proxies = [] # 存储可用代理
for proxy in proxy_list:
is_available, response_time = check_proxy(proxy)
if is_available:
print(f"✅ 代理可用:{proxy},响应时间:{response_time}秒")
available_proxies.append((proxy, response_time))
else:
print(f"❌ 代理不可用:{proxy}")
# 最后输出可用代理汇总
print("\n✅ 验证完成!可用代理共{}个:".format(len(available_proxies)))
for proxy, response_time in available_proxies:
print(f"代理:{proxy},响应时间:{response_time}秒")步骤超简单,全程不用复杂操作:
cd Desktop);python proxy_check.py;实测:10个免费代理,通常只有1-2个可用,脚本会自动筛选,省去手动测试的麻烦。
如果代理数量多,想提高验证速度,可以添加多线程(不用改核心逻辑,直接添加代码),代码如下(插入到原脚本中即可):
from concurrent.futures import ThreadPoolExecutor
# 替换原有的批量验证代码,用多线程加速
if __name__ == "__main__":
print("开始验证代理可用性,共{}个代理...\n".format(len(proxy_list)))
available_proxies = []
# 开启5个线程,可根据电脑配置调整数量
with ThreadPoolExecutor(max_workers=5) as executor:
# 批量执行验证任务
results = executor.map(check_proxy, proxy_list)
for proxy, (is_available, response_time) in zip(proxy_list, results):
if is_available:
print(f"✅ 代理可用:{proxy},响应时间:{response_time}秒")
available_proxies.append((proxy, response_time))
else:
print(f"❌ 代理不可用:{proxy}")
# 汇总输出(和原脚本一致)
print("\n✅ 验证完成!可用代理共{}个:".format(len(available_proxies)))
for proxy, response_time in available_proxies:
print(f"代理:{proxy},响应时间:{response_time}秒")整个流程下来,从准备到运行,全程不超过5分钟,脚本可重复使用,后续获取新的免费代理,直接替换proxy_list里的内容,运行即可筛选可用代理。对于爬虫测试、临时访问等场景,完全够用,新手也能轻松上手~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。