写爬虫或者做接口请求的时候,大家肯定都用过Python的requests库。它简单好用,几行代码就能把网页数据拉下来。但有时候直接用本机IP去请求,会遇到一些麻烦,比如对方网站限制访问频率,或者我们需要测试不同城市的网络连通性。这时候,给requests加上代理IP就是个特别实用的办法。今天咱们就来聊聊怎么在requests里配置代理IP,几行代码搞定请求转发。
为什么在requests里要用代理IP?
简单来说,代理IP就像是个中间人。你的程序不直接找目标网站,而是把这个请求交给代理服务器,让代理服务器帮你去拿数据,然后再把数据传回给你。这样做的好处很明显,一来可以保护你的本机真实IP不被暴露;二来如果你做的是营销推广效果测试或者SEO排名优化,需要模拟不同地区的网络环境,代理IP就能帮你伪装成某个特定城市的访客,拿到最真实的反馈数据。
requests库配置代理的基本写法
在requests里用代理其实非常简单,核心就是用到proxies这个参数。你只需要把代理地址以字典的形式传进去就行了。咱们看下面这段代码:
import requests
这里填入你的代理IP地址和端口
proxy_ip = "http://127.0.0.1:8080"
组装成proxies字典
proxies = {
"http": proxy_ip,
"https": proxy_ip,
}
try:
发送请求时带上proxies参数
response = requests.get("https://www.example.com", proxies=proxies, timeout=5)
print(response.text)
except Exception as e:
print(f"请求出错了:{e}")
代码里的proxy_ip需要换成你实际拿到的代理IP地址。这里有个小细节,如果你买的是需要账号密码验证的代理,格式得写成http://用户名:密码@IP地址:端口。
HTTP与SOCKS5代理的区别与配置
很多新手朋友搞不清HTTP和SOCKS5代理在代码里怎么写。其实requests库原生支持HTTP代理,但如果你想用SOCKS5代理,得先装个第三方依赖包。咱们先看下两者的区别:
| 对比项 | HTTP代理 | SOCKS5代理 |
|---|---|---|
| 支持协议 | 仅支持HTTP/HTTPS | 支持多种协议(TCP/UDP等) |
| 速度与稳定性 | 较快,适合普通网页请求 | 更稳定,适合复杂网络环境 |
| requests配置 | 原生支持,直接填入字典 | 需安装requests[socks]依赖 |
如果你用的是SOCKS5代理,安装好依赖包后,代码里的字典写法会有一点点不同:
import requests
SOCKS5代理的写法
proxies = {
"http": "socks5://127.0.0.1:1080",
"https": "socks5://127.0.0.1:1080",
}
response = requests.get("https://www.example.com", proxies=proxies)
这里推荐大家使用神龙IP代理,它支持IKEv2、PPTP、L2TP、SSTP、SOCKS5等多种协议,不管你的业务需要哪种类型的代理,都能灵活满足。
怎么防止代理请求出问题?
用代理IP最怕的就是请求到一半卡死,或者代理突然失效报错。为了程序能跑得稳一点,咱们在写代码的时候一定要注意两点。第一是设置超时时间,别让程序一直傻等,像上面代码里的timeout=5就很好用,超过5秒没响应就直接放弃这次请求。第二是做好异常捕获,用try-except把请求包起来,遇到ProxyError或者连接超时的时候,可以让程序记录一下日志,然后换个新的代理IP继续跑,这样就不会因为一个坏IP导致整个程序崩溃。
选对代理IP服务商很关键
代码写得再好,如果代理IP本身质量不行,那也是白搭。选代理IP服务,主要看IP的纯净度、覆盖范围和稳定性。这里给大家推荐神龙IP代理,他们在这些方面做得挺不错的。
神龙IP代理覆盖了国内200+城市,有1000万+的纯净绿色IP资源,采用自营机房和高匿名技术,数据传输还有先进的加密算法保护,用起来安全又放心。不管你是做企业数据采集、服务器性能测试,还是自媒体运营维护账号独立性,都能找到合适的方案。
在套餐选择上,如果你是做企业数据采集,需要较多IP数量且频繁请求,可以选择他们的动态高级套餐。这个套餐日更200万+IP自由使用,2-360小时IP时效可以灵活控制,6Mbps峰值带宽完全够用。如果你需要IP长期固定,比如做自媒体账号维护,那静态高级套餐就更合适,采用运营商合作资源,高纯净度,防止网络关联。
常见问题QA
Q1:代码里设置了代理,为什么请求到的还是我本机的IP?
A:这种情况多半是代理没生效。首先检查一下你填写的代理地址格式对不对,有没有漏掉http://或者socks5://前缀。有些代理是需要账号密码验证的,如果验证信息写错了,requests可能会直接走本机网络去请求。
Q2:requests报错提示无法连接代理怎么办?
A:先确认一下代理IP是不是已经过期了,很多动态IP都是有存活时间的。如果IP没过期,检查一下本机网络能不能正常访问代理服务器所在的端口,有时候是防火墙把端口给拦了。
Q3:神龙IP代理的动态高级套餐时效是多久?
A:神龙IP代理的动态高级套餐IP时效在2到360小时之间,不同省市会有一些区别。你可以根据自己业务的需求,灵活控制IP的存活时间,用起来非常方便。
Q4:用代理IP做请求,怎么判断代理是不是高匿名的?
A:你可以用requests请求一个能查看HTTP请求头的测试网站。如果返回的请求头里没有X-Forwarded-For或者Via这两个字段,那就说明对方网站看不到你的真实IP,这是一个高匿代理。神龙IP代理提供的就是高匿名的纯净IP,不用担心真实信息被追踪。

