昨天写的爬虫脚本又被封 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
2026年国内代理IP市场现状与趋势分析
- 2
独家盘点:2026年国内主流代理IP服务商的商业模式与核心客群对比
- 3
免费代理IP不能用怎么办?4个常见问题+解决方案,新手急救必看!
- 4
2026最新:数据采集为什么必须用国内代理IP?附免费资源推荐
- 5
个人使用代理IP抓取公开数据违法吗?深度解读《网络数据安全管理条例》
- 6
IPv6 全面普及倒计时:代理 IP 是迎来灭顶之灾,还是第二春?
- 7
现在企业买代理IP,是更爱隧道代理还是传统IP池?市场趋势小调研
- 8
免费代理 IP 源正在枯竭?从 Github 项目活跃度看开源代理资源的现状与未来
- 9
代理IP是什么?怎么工作的?小白必看!一张图看懂代理IP数据转发流程
- 10
免费代理 IP 会泄露个人信息吗?安全使用技巧一文看懂
爬虫探索查看更多
- 1
爬虫代理IP端口怎么选择?常见端口适配教程(新手必看)
- 2
爬虫秘籍:不要再手动换IP了!用这个脚本自动检测并切换无效代理IP!
- 3
代理IP端口不会配?爬虫新手速看:常见端口适配指南
- 4
爬虫遇到“请求过快”封IP?别光盯着换IP,模拟人类请求间隔才是关键
- 5
为什么你的爬虫身份总掉线?Cookie与Session维持策略详解
- 6
遇到图形验证码别慌:这套“组合拳”打法,能让你90%的初级验证码自动过
- 7
反爬的 “黑暗森林法则”:为什么你的爬虫总活不过三天?
- 8
Python 爬虫免费代理 IP 怎么用?requests 库实操教程,代码直接跑
- 9
火车头爬虫怎么配置免费代理IP?详细设置步骤
- 10
HTTP代理与SOCKS代理:如何根据需求选择?
