Python中requests库在Mac版上代理突然无法使用怎么办?

# 以前用这个方法可以
proxy = {"http":"socks5://127.0.0.1:1080","https":"socks5://127.0.0.1:1080"}

现在 PC 版用这个可以

proxy = {“http”:“127.0.0.1:1080”,“https”:“127.0.0.1:1080”}

MAC 版两种都不行(以前第一种行)

不知道啥时候发生的这个情况,反正搞了半天没搞成。
两个电脑装的包都一样的。requests[socks] 和 pysocks 都装了且升级了。
代理用的 ss,PC 版 4.1.3.1,MAC 版 2.6.3,浏览器访问都正常通过。

  • PC。浏览器设置 http 或者 socks5 都能通过,python 里只能不加 socks5,加了通不过。
  • MAC。浏览器设置 http 通不过,socks5 可以通过。python 里都不行。

是不是我还漏了啥了?


Python中requests库在Mac版上代理突然无法使用怎么办?

6 回复

看了下,Mac 下用
<br>proxy = {"http":"socks5://127.0.0.1:1080","https":"socks5://127.0.0.1:1080"}<br>
ip.cn 可以看到 ip 已经是海外的了,连 baidu 也连得上( http/https 都可以)。
但是连外网还是都连不上(浏览器内都可以)。


我遇到过类似问题,Mac上requests代理失效通常有几个常见原因:

  1. 环境变量冲突:检查终端里echo $HTTP_PROXYecho $HTTPS_PROXY的输出,有时候系统代理设置会干扰代码中的代理配置。

  2. 代理格式问题:确保代理地址格式正确。http代理和https代理要分开设置:

import requests

proxies = {
    'http': 'http://127.0.0.1:7890',
    'https': 'http://127.0.0.1:7890'  # 注意这里还是http://
}

# 或者简写
proxies = {'http': 'http://127.0.0.1:7890', 'https': 'http://127.0.0.1:7890'}

response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=10)
print(response.json())
  1. 证书验证问题:如果代理使用自签名证书,需要关闭验证(仅限测试环境):
response = requests.get('https://example.com', proxies=proxies, verify=False)
  1. 代理服务状态:先用curl -x http://127.0.0.1:7890 https://httpbin.org/ip测试代理本身是否正常。

  2. Python版本兼容:检查requests库版本,老版本可能有bug:

pip install --upgrade requests
  1. 网络权限:特别是升级macOS后,确保终端有网络访问权限(系统设置-隐私与安全性-防火墙)。

建议先写个最小测试代码确认问题在哪。

测试 windows py3.6 requests socks5 (无认证) 没问题,你那边报什么错

下载一个软件不是很方便吗?非要搞配置文件

我 win 的 http 没问题,socks 不晓得为啥不行,mac 上一团问题,不知道是系统更新还是咋的。现在换了 ss-ng 在试。

具体不理解,以前作 gmail 发邮件的程序时我是这样写的,给你参考,python3

from httplib2 import socks
import socket

socket.socket = socks.socksocket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5,“127.0.0.1”,1080)

回到顶部