昨天写的爬虫脚本又被封 IP 了 —— 连续爬取某电商平台商品数据不到 10 分钟,就收到了 403 Forbidden 响应,本地 IP 直接被目标网站拉黑。做爬虫开发的应该都懂这种痛:没有代理 IP,爬虫就是 “一次性用品”,爬取稍多数据就会被风控系统识别并封禁。
其实解决这个问题的核心就是给爬虫加一层 “伪装”,用代理 IP 代替本地 IP 发起请求。今天我就结合自己的实战经验,分享一套用 Python 的 requests 库对接免费代理 IP 的方法,从代理验证到异常处理,可以直接落地使用。

一、先搞懂:代理 IP 的基本使用逻辑
在写代码前,先理清核心逻辑:正常情况下,requests 直接用本地 IP 发请求;加代理后,请求会先发送到代理服务器,再由代理服务器转发给目标网站,目标网站只能看到代理 IP,无法识别你的真实 IP。
免费代理 IP 的格式通常是http://IP地址:端口号(如http://112.114.34.23:8080),requests 库代理 IP的核心,就是通过proxies参数传入配置。
二、实操第一步:验证单个免费代理 IP 是否可用
免费代理 IP最大的问题就是存活率极低,随便复制过来的十有八九不能用。所以我们第一步必须写一个Python 代理 IP 验证函数,先过滤掉无效代理。
1. 完整验证代码
python
import requests
from requests.exceptions import ConnectTimeout, ConnectionError, ProxyError
def check_proxy(proxy):
"""
验证单个免费代理IP是否可用
:param proxy: 代理IP,格式如 "http://112.114.34.23:8080"
:return: 可用返回True,不可用返回False
"""
test_url = "https://www.baidu.com"
timeout = 3
proxies = {
"http": proxy,
"https": proxy
}
try:
response = requests.get(
test_url,
proxies=proxies,
timeout=timeout,
allow_redirects=False
)
if response.status_code == 200:
print(f"代理可用:{proxy}")
return True
else:
print(f"代理无效:{proxy}")
return False
except (ConnectTimeout, ConnectionError, ProxyError):
print(f"代理连接失败:{proxy}")
return False
except Exception as e:
print(f"代理验证出错:{proxy}")
return False
if __name__ == "__main__":
test_proxy = "http://112.114.34.23:8080"
check_proxy(test_proxy)2. 关键点说明
proxies要同时写http和https,否则协议不匹配会直接走本地 IP。
免费代理普遍慢、不稳定,超时建议设 3 秒以上。
异常捕获是爬虫代理异常处理的关键,能防止程序直接崩掉。
三、实操第二步:批量筛选可用代理 IP
实际爬数据时,我们不可能只用一个代理。下面是一套可直接用的批量验证 + 代理池筛选逻辑。
python
import requests
from requests.exceptions import ConnectTimeout, ConnectionError, ProxyError
def check_proxy(proxy):
test_url = "https://www.baidu.com"
timeout = 3
proxies = {"http": proxy, "https": proxy}
try:
response = requests.get(test_url, proxies=proxies, timeout=timeout, allow_redirects=False)
return response.status_code == 200
except:
return False
def get_usable_proxies(proxy_list):
usable_proxies = []
for proxy in proxy_list:
if check_proxy(proxy):
usable_proxies.append(proxy)
return usable_proxies
def crawl_with_proxy(target_url, usable_proxies):
if not usable_proxies:
print("无可用代理,终止爬取")
return
for proxy in usable_proxies:
proxies = {"http": proxy, "https": proxy}
try:
response = requests.get(
target_url,
proxies=proxies,
timeout=5,
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
)
print(f"使用代理 {proxy} 爬取成功")
return response.text
except Exception as e:
print(f"代理 {proxy} 爬取失败:{str(e)}")
continue
print("所有代理均失效,爬取失败")
return None
if __name__ == "__main__":
proxy_list = [
"http://112.114.34.23:8080",
"http://192.168.1.1:80",
"http://220.181.57.195:8080"
]
usable_proxies = get_usable_proxies(proxy_list)
print("可用代理:", usable_proxies)
target_url = "https://www.example.com"
crawl_with_proxy(target_url, usable_proxies)四、实操避坑:免费代理 IP 的核心注意事项
1.避免高频请求
即使加了代理,短时间内高频访问依然会被封,建议加time.sleep(1)控制频率。
2.代理协议要匹配
目标是https就必须用支持 https 的代理,否则会报错。
3.动态更新代理池
免费代理存活时间很短,爬取过程中要定时重新验证、替换失效 IP。
4.合法合规爬取
仅用于公开数据学习,不用于非法采集。
五、进阶优化:自动获取免费代理 IP
手动找代理太麻烦,这里给你一套直接从66 免费代理 IP接口获取的代码,拿来就能跑。
python
import requests
import re
def get_free_proxies():
"""66免费代理API获取"""
proxy_url = "https://www.66daili.com/get-ip/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Referer": "https://www.66daili.com/"
}
try:
response = requests.get(proxy_url, headers=headers, timeout=10)
response.encoding = "utf-8"
proxy_pattern = re.compile(r'\d+\.\d+\.\d+\.\d+:\d+')
proxy_matches = proxy_pattern.findall(response.text)
proxies = [f"http://{p}" for p in proxy_matches]
return proxies
except Exception as e:
print("获取免费代理失败:", str(e))
return []
if __name__ == "__main__":
free_proxies = get_free_proxies()
print("获取到免费代理:", free_proxies[:5])总结
这篇免费代理 IP 使用教程,从Python 爬虫免费代理 IP基础用法,到requests 库代理 IP配置、Python 代理 IP 验证、爬虫代理异常处理,再到自动获取66 免费代理 IP,全是实战可直接运行的代码。
免费代理适合学习、小批量测试;如果是正式项目、高并发稳定爬取,还是建议使用付费代理池,效率和稳定性会提升一个档次。
行业新闻查看更多
- 1
免费代理 IP 会泄露个人信息吗?安全使用技巧一文看懂
- 2
免费代理 IP 源正在枯竭?从 Github 项目活跃度看开源代理资源的现状与未来
- 3
学术数据采集必备:代理 IP 如何助力合法合规收集公开网络数据?
- 4
数据中心 IP 彻底沦陷?业内专家告诉你数据中心代理在 2026 年的制胜秘诀
- 5
浏览器插件代理 vs 系统级代理:哪个更适合你?
- 6
2026年代理IP服务趋势:动态IP为何比静态更吃香?
- 7
科普:免费代理IP为什么会失效?免费IP有效期一般是多久?
- 8
代理IP行业用户画像:谁在使用代理IP?
- 9
免费代理IP不能用怎么办?4个常见问题+解决方案,新手急救必看!
- 10
2026最新:数据采集为什么必须用国内代理IP?附免费资源推荐
爬虫探索查看更多
- 1
金融数据抓取案例:代理IP稳定性的重要性
- 2
企业代理池架构的成本权衡:自建代理池、付费服务与免费资源的混合架构设计
- 3
代理 IP 速度慢?10 个代理 IP 提速技巧立即见效
- 4
爬虫错误日志分析实战:如何通过日志优化代理 IP 策略,解决爬虫 403 报错
- 5
动态代理 API 接入教程:让爬虫 IP 秒级切换
- 6
爬虫日志分析:你的代理IP为什么总失效?这份诊断清单请收好
- 7
火车头爬虫怎么配置免费代理IP?详细设置步骤
- 8
爬虫刚启动代理 IP 就被封?揭秘小红书反爬机制与防封指南
- 9
数据采集别再等IP被封了!爬虫健康状态应该监控这几点
- 10
提升模拟可信度:爬虫请求头与浏览器指纹的协同优化策略
