手账正文
浏览器能上网,curl 却失败?先把代理地址填对
浏览器能打开网站,终端里的 curl 却一直超时,别先认定节点坏了。浏览器和命令行可能没有使用同一套代理设置。
先找客户端的本地端口
打开客户端设置,确认 HTTP、SOCKS 或混合端口,以及内核是否正在运行。这里要填电脑上的代理入口,不是机场远端节点的端口,也不是控制面板的端口。
Windows PowerShell 里建议明确写 curl.exe,避免某些环境把 curl 识别成另一个命令。
明确指定一次代理,看看结果
假设你已经确认本地 HTTP 代理是 127.0.0.1:7890,可以这样访问一个示例网页:
curl.exe -q --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 30 https://example.com/
7890 只是示例,必须换成自己确认过的端口。这条命令的作用是明确这一次请求走哪个入口,不会替你永久修改系统代理。
如果客户端只提供 SOCKS 入口,要使用相应的代理类型;不要仅仅改一个端口号,却保留错误的类型。名称里带 socks5h 的写法会把目标域名交给代理解析,适用时可对照 curl 官方说明。
能连接代理后,再看具体报错
连接本地端口失败,先查软件有没有启动;域名找不到,查解析;证书失败,查时间和证书。不要为了让命令看起来成功就加跳过验证的选项。
如果明确指定代理时正常,平时的命令却失败,再检查终端里的代理环境变量和 NO_PROXY 排除项。环境变量可能只影响当前终端,新旧窗口的状态也可能不同。
评论