Python Requests:使用 SOCKS5 账号密码代理

更新于 2026-09-21

安装 SOCKS 依赖,设置认证、远端 DNS 和超时,检查出口结果。

适用产品
住宅独享 IP / 动态住宅
软件
Python Requests
设备 / 系统
Windows、macOS、Linux
应用场景
授权数据采集、网站地区测试
适用范围
Python 3 / Requests 2.x;官方接口说明核验,未使用客户代理实测
文档核验
2026-09-21

准备条件

准备 Python 3、独立的虚拟环境,以及会员中心生成的 SOCKS5 接入信息。Requests 默认安装不包含 SOCKS 支持,应在运行脚本的同一个环境中安装扩展。

安装依赖

python -m pip install "requests[socks]"

编写连接脚本

地址使用输入方式,密码通过隐藏输入读取。将实际接入地址与接入端口分别填入提示,不要粘贴整条连接串。

import getpass
from urllib.parse import quote
import requests

host = input("接入地址: ").strip()
port = int(input("接入端口: "))
user = input("登录账号: ").strip()
password = getpass.getpass("登录密码: ")
proxy = f"socks5h://{quote(user, safe='')}:{quote(password, safe='')}@{host}:{port}"
with requests.Session() as session:
    session.trust_env = False
    response = session.get(
        "https://api.ipify.org",
        proxies={"http": proxy, "https": proxy},
        timeout=(10, 30),
    )
    response.raise_for_status()
    print(response.text.strip())

验证成功

返回的地址是本次请求的出口 IP。住宅独享与交付记录核对;动态住宅核对选定地区及会话规则。socks5h 由代理侧解析目标域名;socks5 使用本地 DNS。

常见问题

  • Missing dependencies for SOCKS support:检查 requests[socks] 是否安装到了当前 Python 环境。
  • 认证失败:核对代理登录账号和密码,不要使用网站邮箱密码。
  • 输出原网络地址:检查是否另开了未设置 proxies 的请求。

不要关闭 HTTPS 证书验证来处理代理问题,也不要把带密码的代理 URL 打印到日志。

参考文档

Requests 官方:SOCKS 代理 ↗

这篇文章解决了你的问题吗?