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

Python发送HTTPS请求遇socket.gaierror[Errno11004],公司防火墙下需代理吗?

解决公司防火墙下requests请求的getaddrinfo失败问题

没错,你猜的完全正确——在公司防火墙环境里,这个报错几乎肯定是因为防火墙拦截了你的外部网络请求,必须配置代理才能让requests库正常访问GitHub这类外部网站。

下面给你两种常用的代理配置方法,按需选择:

1. 单次请求添加代理参数

直接在get请求里传入proxies参数,适合临时或者个别请求使用:

import requests

# 替换成你公司实际的代理地址和端口(比如http://proxy.company.com:8080)
proxies = {
    'http': 'http://your-company-proxy:port',
    'https': 'http://your-company-proxy:port'
}

try:
    response = requests.get('https://github.com', proxies=proxies)
    print(f"请求成功,状态码:{response.status_code}")
except Exception as e:
    print(f"请求失败:{e}")

如果你的公司代理需要用户名和密码验证,把参数改成这样:

proxies = {
    'http': 'http://username:password@your-company-proxy:port',
    'https': 'http://username:password@your-company-proxy:port'
}

2. 全局代理配置(推荐)

如果需要频繁发起外部请求,可以配置全局代理,不用每次都重复写参数:

方法一:使用requests.Session

创建一个会话对象,设置代理后所有通过该会话的请求都会自动使用代理:

import requests

# 创建会话并配置代理
session = requests.Session()
session.proxies = {
    'http': 'http://your-company-proxy:port',
    'https': 'http://your-company-proxy:port'
}

# 后续请求直接用session
response = session.get('https://github.com')
print(response.status_code)

方法二:设置系统环境变量

通过设置环境变量让requests自动读取代理配置,适合不想修改代码的场景:

  • Windows(命令提示符):
set HTTP_PROXY=http://your-company-proxy:port
set HTTPS_PROXY=http://your-company-proxy:port
  • Linux/macOS(终端):
export HTTP_PROXY=http://your-company-proxy:port
export HTTPS_PROXY=http://your-company-proxy:port

额外提示

如果配置后还是报错,先确认这几点:

  • 代理地址、端口是否正确(可以问问公司IT部门,或者查看浏览器的代理设置)
  • 代理是否需要验证,用户名密码是否正确
  • 尝试用浏览器配置相同代理访问GitHub,确认代理本身能正常连接外部网络

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:02:22