Python Requests:使用 SOCKS5 账号密码代理
更新于 2026-09-21
安装 SOCKS 依赖,设置认证、远端 DNS 和超时,检查出口结果。
准备条件
准备 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 打印到日志。
