You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证requests会话是否成功调用代理并通过代理发起请求?

验证Requests代理是否生效的方法 + 你的代码优化建议

嘿,第一次尝试代理相关开发完全不用不好意思!我来帮你梳理怎么确认代理是否真的被使用,顺便也指出你代码里的几个小问题~

一、怎么验证请求是否通过代理发送

这里有几个简单直接的方法,按优先级排序:

1. 调用返回当前IP的API(最直观)

把你请求的URL换成能返回当前访问IP的接口,比如http://httpbin.org/ip或者http://icanhazip.com,打印返回结果就能看到请求用的是哪个IP——如果是代理的IP,说明代理生效了。

示例代码片段:

# 在你的runit函数里,把r = s.get(url)改成:
r = s.get('http://httpbin.org/ip')
print(f"当前请求使用的IP: {r.json()}")

如果返回的IP和你自己的公网IP不一样,而是代理的IP,那肯定是走了代理。

2. 开启Requests的调试日志

让Requests打印出请求的详细过程,包括代理的使用情况。在代码开头加上这段日志配置:

import logging
import http.client

http.client.HTTPConnection.debuglevel = 1

logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True

运行代码后,你会在控制台看到类似这样的日志:

CONNECT proxy.example.com:8080 HTTP/1.1
这就说明请求正在尝试连接代理服务器,证明代理被使用了。

3. 用抓包工具监控流量

比如用Wireshark、Charles或者Fiddler这类抓包工具,查看请求的目标地址——如果请求是发往代理服务器的IP和端口,而不是直接发往目标网站,那就说明代理生效了。

4. 故意使用无效代理测试

找一个肯定不能用的代理(比如127.0.0.1:9999,如果你本地没开这个端口的服务),如果代码抛出ProxyError,就说明程序确实在尝试使用代理;如果没报错直接请求成功,那说明代理没生效。

二、你的代码里需要调整的几个小问题

看了你的代码,有几个细节可能会影响代理的使用或者导致报错:

  • 变量名冲突:setProxy函数里定义了局部变量proxies,和全局的proxies重名了,虽然这里不会直接导致代理失效,但容易混淆,建议把函数里的变量名改成session_proxies之类的。
  • 未定义的变量/函数:
    • url变量在runit函数里没定义,会导致报错;
    • passwd(proxies)这个函数没有实现,调用会报错;
    • 最后一行print("Does it actually use the proxy or not?"少了闭合的括号)。
  • Session的复用:你的代码里每次调用setProxy都会创建新的Session,这没问题,但要确保后续的get和post都用同一个Session对象(你现在是这么做的,这点是对的)。

调整后的setProxy函数示例:

def setProxy(proxy):
    s = requests.Session()
    # 重命名局部变量,避免和全局proxies冲突
    session_proxies = {'http': f'http://{proxy}', 'https': f'http://{proxy}'}
    s.proxies.update(session_proxies)
    return s

总结

先试试用httpbin.org/ip查看IP的方法,这是最快验证代理是否生效的方式。同时把代码里的报错点修复掉,就能更顺畅地测试啦!

内容的提问来源于stack exchange,提问作者CDNthe2nd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:14:16