cURL 参考 · 1 分钟阅读

带有SOCKS5代理的curl:完整参考

权威的 curl 和代理参考:SOCKS5 与 SOCKS5h,-x 和 --socks5-hostname 标志,环境变量,持久的 .curlrc,以及经过身份验证的 s4m 端点。准备好复制粘贴。

SOCKS5 与 SOCKS5h,以及它的重要性

curl 同时支持 HTTP 和 SOCKS 代理,您选择的确切方案决定了 DNS 的解析位置。使用 socks5://,curl 在您自己的机器上解析目标主机名,然后通过代理连接,这可能会泄露您访问的域名。使用 socks5h://(h 是指主机名),代理会远程解析 DNS,因此查找不会离开您的机器。为了隐私,建议使用 socks5h — 同样的规则适用于 --socks5-hostname 标志,这是其长格式等价物。

s4m 在一个账户上为您提供两种协议:SOCKS5 在 1080 端口,HTTP 在 3128 端口,均使用 USER:PASS 进行身份验证,针对 proxy.s4m.online。通用的 -x / --proxy 标志接受包括方案在内的完整 URL,因此一个标志涵盖所有情况。有关通过代理路由 curl 的基础知识,请参见 curl 代理指南;此页面是 SOCKS5、环境变量和持久配置的更深入参考。有关协议的背景信息,请参见 什么是 SOCKS5。

每个代理调用,一个地方

SOCKS5、SOCKS5h、HTTP、身份验证、环境变量和 .curlrc 文件。用您的凭据替换 USER:PASS。

bash
# --- SOCKS5 with REMOTE DNS (recommended) ---
curl -x socks5h://USER:PASS@proxy.s4m.online:1080 https://api.ipify.org
# equivalent long form:
curl --socks5-hostname proxy.s4m.online:1080 -U USER:PASS https://api.ipify.org

# --- SOCKS5 with LOCAL DNS (leaks hostnames) ---
curl -x socks5://USER:PASS@proxy.s4m.online:1080 https://api.ipify.org

# --- HTTP / HTTPS proxy (port 3128) ---
curl -x http://USER:PASS@proxy.s4m.online:3128 https://api.ipify.org

# --- Whole-session env vars (any http_proxy-aware tool honors these) ---
export ALL_PROXY="socks5h://USER:PASS@proxy.s4m.online:1080"
export HTTPS_PROXY="http://USER:PASS@proxy.s4m.online:3128"
export NO_PROXY="localhost,127.0.0.1,.internal"
curl https://api.ipify.org        # now proxied with no -x flag

# --- Persistent config: ~/.curlrc (applied to every curl run) ---
cat > ~/.curlrc <<'RC'
proxy = socks5h://proxy.s4m.online:1080
proxy-user = USER:PASS
connect-timeout = 10
RC
curl https://api.ipify.org        # reads ~/.curlrc automatically

# --- Ignore ~/.curlrc for one call ---
curl -q --noproxy '*' https://api.ipify.org

为curl设置一个持久代理

因此每个curl命令都通过代理,而无需重复标志。

选择一个方案

选择 socks5h:// 端口 1080 进行远程 DNS 和任何协议,或 http:// 端口 3128 进行普通网页流量。socks5h 是隐私安全的默认选项。

创建 ~/.curlrc

将proxy = socks5h://proxy.s4m.online:1080和proxy-user = USER:PASS添加到~/.curlrc。curl在每次运行时读取此文件,除非你传递-q。

为其他工具设置环境变量

导出ALL_PROXY,以便任何http_proxy-aware CLI(wget、git、包管理器)共享相同的出口,并为必须绕过代理的主机设置NO_PROXY。

验证并添加例外

运行 curl https://api.ipify.org 确认出口 IP,然后使用 --noproxy 或 NO_PROXY 排除您永远不想代理的内部主机。

认证选项、优先级和 NTLM

您可以通过两种方式提供凭据:在 URL 中内联(socks5h://USER:PASS@host)或通过 -U / --proxy-user 单独提供。如果您的密码包含像 @ 或 : 这样的字符,建议使用 -U 或对其进行 URL 编码,以便 curl 正确解析 URL。命令行标志始终优先于环境变量,而环境变量又优先于 ~/.curlrc — 因此一次性的 -x 会覆盖您的持久配置。

对于使用 Windows NTLM 认证的企业代理,curl 支持 --proxy-ntlm 以及 -U;s4m 本身使用标准的 USER:PASS(基本)认证,因此您在我们的端点上不需要 NTLM。如果请求返回 407 代理身份验证要求,则您的凭据缺失或错误 — 请参阅 407 修复指南。相同的环境变量支持 wget 和其他工具,您可以使用 tools 验证任何端点,或从 free list 测试开放代理。

FAQ

问题,已解答

curl 中 socks5 和 socks5h 之间有什么区别?

socks5:// 在连接之前在本地机器上解析 DNS;socks5h:// 请求代理远程解析。使用 socks5h 以避免泄露您请求的主机名。--socks5-hostname 标志与 socks5h 相同。

如何让 curl 对每个命令使用代理?

在 ~/.curlrc 中设置 proxy = socks5h://proxy.s4m.online:1080 和 proxy-user = USER:PASS,或者导出 ALL_PROXY。curl 然后会自动代理每个请求;使用 -q 或 --noproxy 跳过一次调用。

s4m 需要 NTLM 代理身份验证吗?

不。s4m在1080和3128端口上使用标准的USER:PASS(基本)身份验证。curl的--proxy-ntlm仅适用于需要Windows NTLM的企业代理。

为什么我会收到407代理身份验证要求?

您的凭据缺失、格式错误或不正确。请使用 -U USER:PASS 提供它们,或在代理URL中内联,URL编码密码中的任何特殊字符。请参阅我们的407指南以获取完整清单。

一个端点,所有 curl 技巧

在proxy.s4m.online上提供经过身份验证的SOCKS5(1080)和HTTP(3128)代理,准备好用于-x、--socks5-hostname和~/.curlrc。按需计费,专用IP可选。

人们通过搜索找到此页面

此页面回答的真实搜索短语 — 链接的短语打开详细覆盖它们的页面。