python发送请求不使用代理
要让Python爬虫不受本地VPN代理的影响,需通过显式覆盖代理设置和清除系统环境变量双重措施实现。以下是具体解决方案及验证方法:
1. 核心解决方案:代码中强制禁用代理
在Python代码中明确设置proxies={}
,强制请求绕过系统代理:
import requests
import os# 清除环境变量中的代理配置(关键步骤)
os.environ.pop('HTTP_PROXY', None)
os.environ.pop('HTTPS_PROXY', None)# 目标URL(使用直连验证网站)
url = "https://httpbin.org/ip" # 返回请求IP的测试接口# 发送请求(强制禁用代理)
response = requests.get(url, proxies={}, timeout=5)# 验证结果:输出实际访问IP
print("实际访问IP:", response.text)
2. 验证代理是否生效
通过访问https://httpbin.org/ip
可直观判断:
- 若返回的是本地公网IP(非VPN代理IP),说明已成功绕过代理。
- 若返回VPN分配的IP,则需检查环境变量清除是否彻底或系统代理配置。
3. 补充说明:系统级代理的彻底清除
若上述方法无效,可能是系统代理设置深入影响:
- Windows系统:检查注册表
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
中的ProxyEnable
值。 - macOS/Linux:使用
env | grep -i proxy
检查环境变量,并通过unset HTTP_PROXY
/unset HTTPS_PROXY
清除。
4. 特殊场景处理
- Selenium等浏览器自动化工具:需在浏览器配置中单独设置代理为空(如Chrome的
--proxy-server=""
参数)。 - 其他网络库(如urllib):需额外设置
proxy_support = urllib.request.ProxyHandler({})
并安装到opener中。
5. 终极方案:容器化隔离
若环境代理干扰复杂,可通过Docker容器运行爬虫,在容器内配置纯净网络环境,彻底避免主机代理影响。
总结:通过代码显式设置proxies={}
+清除环境变量,可确保爬虫直连目标网站。若仍受影响,需排查系统级代理配置或采用容器化方案。