快速回答
如何设置 SOCKS5 静态代理?
要设置 SOCKS5 静态代理,请将你的工具指向你静态 IP 的 SOCKS5 主机和端口,并让代理解析主机名。使用 curl --socks5-hostname、Python Requests 中的 socks5h:// URL,或 Firefox 中的“使用 SOCKS v5 时代理 DNS”复选框。SteadyProxy 静态 IP 支持 HTTP、HTTPS(CONNECT)和 SOCKS5;默认 SOCKS5 端口是 7778,每个 IP 显示自己的主机和端口。更新于 2026 年 10 月 19 日。
SOCKS5 的关键事实有哪些?
| 协议 | SOCKS 版本 5(RFC 1928),TCP 连接 |
|---|---|
| 登录方式 | 用户名和密码子协商(RFC 1929),或 IP 允许列表 |
| SteadyProxy 身份验证 | 用户名和密码,或 IP 白名单(最多 10 个 IP) |
| 默认端口 | SOCKS5 7778,HTTP 7777;使用每个 IP 列出的主机和端口 |
| 通过代理的 DNS | curl --socks5-hostname 或 socks5h://;Requests socks5h://;Firefox “使用 SOCKS v5 时代理 DNS” |
| Python 包 | requests[socks],它会安装 PySocks |
| 被阻止的目标 | 银行、政府、支付门户和票务网站,以及 SMTP(发邮件)端口 25、465 和 587 |
何时应使用 SOCKS5 而不是 HTTP 端口?
当应用不支持 HTTP 代理,或只提供 SOCKS 设置时,请使用 SOCKS5。对于 Web 流量,两者都可以:HTTP 端口通过 CONNECT 隧道承载 HTTPS,而 SOCKS5 承载任何 TCP 连接。对于一个静态 IP,两者给出相同的出口 IP,你可以用下面的测试确认。请计划仅使用 TCP:本指南不涵盖 UDP。通过两者都无法发送电子邮件,因为 SMTP 端口已关闭。
如何在 curl 中使用 SOCKS5 静态代理?
curl 有两种方式将主机名发送给代理:--socks5-hostname 选项,或以 socks5h:// 开头的代理 URL。普通的 socks5:// 方案会让 curl 先在你自己的机器上解析主机名,然后只发送 IP。在我们 2026 年 10 月 19 日的测试中,测试代理通过 socks5h:// 收到主机名 api.ipify.org 和 ipinfo.io,通过 socks5:// 收到原始 IPv4 地址。
# SOCKS5, hostname resolved by the proxy (recommended)
curl -s --socks5-hostname gw.steadyproxy.com:7778 --proxy-user USERNAME:PASSWORD https://api.ipify.org
# Same thing as a proxy URL: socks5h:// = the proxy resolves the hostname
curl -s -x "socks5h://USERNAME:[email protected]:7778" https://ipinfo.io/json
# For comparison only: socks5:// resolves the hostname on your own machine first
curl -s -x "socks5://USERNAME:[email protected]:7778" https://api.ipify.org
如何在 Python Requests 中使用 SOCKS5?
使用 python -m pip install "requests[socks]" 安装 SOCKS 附加组件,然后为 http 和 https 键都使用 socks5h:// URL。Requests 文档指出,socks5 在客户端解析 DNS,socks5h 在代理服务器上解析。如果用户名和密码包含 @ 或冒号等字符,请对其进行 URL 编码。下面的脚本于 2026 年 10 月 19 日通过带用户名和密码登录的测试 SOCKS5 服务器运行。
"""Python Requests through a SOCKS5 static proxy.
Install: python -m pip install "requests[socks]"
"""
import os
from urllib.parse import quote
import requests
HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
PORT = os.environ.get("PROXY_SOCKS_PORT", "7778")
USER = quote(os.environ.get("PROXY_USER", "USERNAME"), safe="")
PASSWORD = quote(os.environ.get("PROXY_PASS", "PASSWORD"), safe="")
# socks5h:// sends the hostname to the proxy: DNS is resolved on the exit side
PROXY = "socks5h://" + USER + ":" + PASSWORD + "@" + HOST + ":" + PORT
PROXIES = {"http": PROXY, "https": PROXY}
with requests.Session() as session:
session.trust_env = False
response = session.get("https://ipinfo.io/json", proxies=PROXIES, timeout=(10, 30))
response.raise_for_status()
data = response.json()
print(data.get("ip"), data.get("org"), data.get("country"), data.get("city"))
如何在 Firefox 或系统设置中设置 SOCKS5?
在 Firefox 中,打开“设置”,滚动到“网络设置”并点击“设置”。选择“手动代理配置”,在 SOCKS 主机中填写主机地址,在旁边的端口栏填写端口,并选择 SOCKS v5。勾选“使用 SOCKS v5 时代理 DNS”,然后点击“确定”。Firefox 的 SOCKS 面板没有用户名或密码字段,因此请为该 IP 使用 IP 白名单,或改用 HTTP 端口,Firefox 会在那里要求登录。
在 macOS 上,“系统设置”>“网络”> 你的连接 >“详细信息”>“代理”中有 SOCKS 代理条目。Windows 的代理设置针对 HTTP 代理,因此请改为在每个应用内设置 SOCKS5。Chrome 也支持通过其 --proxy-server 开关使用 SOCKS5 服务器;请参阅浏览器设置指南。
通过代理进行 DNS 解析为什么重要?
使用本地 DNS 时,你自己的解析器会看到你访问的每个主机名,而且它返回的服务器可能是根据你的位置而非代理的位置选择的。内容分发网络按地区应答 DNS,因此在法国的本地查询可能让一个通过英国 IP 发出的请求指向法国的服务器。远程 DNS(socks5h)让代理侧解析域名,这样目标服务器就会像对待该 IP 所在国家的访客那样作出应答。这使本地价格和搜索结果的检查更加准确。
如何检查 SOCKS5 设置是否有效?
通过 SOCKS5 端口打开 ipinfo.io/json,读取 ip、org 和 country 字段。然后通过同一静态 IP 的 HTTP 端口发送同样的请求:出口 IP 应当一致。要确认它在数小时内保持不变,请参阅如何检查代理是否为静态。“general SOCKS server failure”或身份验证错误通常意味着端口错误、密码错误,或源 IP 不在你的白名单中。
关于 SOCKS5 静态代理,人们还常问什么?
socks5:// 和 socks5h:// 有什么区别?
使用 socks5:// 时,你的机器解析主机名,只把 IP 地址发送给代理。使用 socks5h:// 时,主机名发送给代理,由代理解析。curl 和 Python Requests 都遵循这一规则。静态 IP 请使用 socks5h://,这样 DNS 应答与 IP 所在国家一致,且你的本地解析器看不到这些主机名。
SOCKS5 是加密的吗?
不是。SOCKS5 只转发连接;它不增加任何加密。RFC 1929 指出,其用户名和密码登录以明文传输密码。你的 HTTPS 流量通过隧道保持端到端加密,但代理登录不是。在不可信网络上,优先使用 IP 白名单,它完全不发送密码。
SOCKS5 提供的 IP 与 HTTP 端口不同吗?
对同一静态 IP 而言不应不同:两个端口通向同一个出口地址。通过每个端口分别发送 api.ipify.org 检查一次。如果两个结果不同,你可能使用了仪表盘中的两条不同凭据,或你机器上的系统代理接管了其中一个请求。
Chrome 可以使用带密码的 SOCKS5 代理吗?
Chrome 通过 --proxy-server 接受 SOCKS5 服务器,其文档显示那里没有用户名或密码字段。请使用 IP 白名单,这样 Chrome 无需登录,或让 Chrome 指向 HTTP 端口和本地转发器。我们的 Selenium 指南 包含针对该情况的经过测试的转发器脚本。
为什么 curl 说无法解析代理?
该消息说的是代理自身的主机,而不是目标。检查你仪表盘中主机的拼写、你的本地 DNS,以及任何阻止到 SOCKS5 端口出站流量的防火墙。用 curl -v 测试网络路径,它会打印 SOCKS5 握手的每个步骤,包括身份验证。
哪些应用可与 SOCKS5 静态代理配合使用?
大多数 HTTP 客户端、浏览器、抓取框架和命令行工具都接受 SOCKS5 设置,可在配置文件中设置,或通过 ALL_PROXY 设置。邮件发送将无法使用,因为端口 25、465 和 587 已关闭。每种用途都必须遵守我们的可接受使用政策。
在 SteadyProxy,带 SOCKS5 的静态 IP 多少钱?
每个套餐都免费包含 SOCKS5。截至 2026 年 10 月,一个 ISP IP 价格为 US$2.24,一个专用数据中心 IP 价格为 US$1.34,均为 30 天。更大套餐在 100 个 ISP IP 时降至 US$1.34/IP · 30 天。支付使用加密货币,无需 KYC;请参阅价格。
本指南使用了哪些来源? (5)
- RFC 1928:SOCKS 协议版本 5 — IETF (2026-10-19)
- RFC 1929:SOCKS V5 的用户名/密码身份验证 — IETF (2026-10-19)
- Requests 高级用法:SOCKS — Requests (2026-10-19)
- curl 手册页(--socks5-hostname、-x) — curl (2026-10-19)
- 在 Chrome 中配置 SOCKS 代理服务器 — The Chromium Projects (2026-10-19)