带有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。
# --- 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 测试开放代理。
问题,已解答
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指南以获取完整清单。
人们通过搜索找到此页面
- 带有SOCKS5代理的curl:完整参考
- 带有SOCKS5代理的curl:完整参考 适合初学者
- 带有SOCKS5代理的curl:完整参考 比较
- 带有SOCKS5代理的curl:完整参考 用于抓取
- 带有SOCKS5代理的curl:完整参考 教程
- 如何设置用于抓取的代理
- 如何在 Python 中旋转代理(requests 和 aiohttp)
- 如何检查 代理认证
- 浏览器指纹识别:Canvas、WebGL 和字体解释
- http 代理提供商
- wireguard
- 如何在抓取时避免IP封禁
此页面回答的真实搜索短语 — 链接的短语打开详细覆盖它们的页面。