node.js - 处理“@”登录代理密码
问题描述
我正在使用代理发出 curl 请求。比方说:
proxyUsername = "username"
proxyPassword = "p@ssw3rd"
proxyHost = "myproxy.node-a.io"
proxyPort = "11115"
您可以像这样构造对 ipinfo.io 的代理请求:
curl --proxy http://username:password@host:port https://ipinfo.io/ip
使用上面的代理值,curl 看起来像:
curl --proxy http://username:p@ssw3rd@myproxy.node-a.io:11115 https://ipinfo.io/ip
问题是密码中的第一个“@”符号被视为密码和主机之间的令牌分隔符......
我已经尝试对密码进行 url 编码,但这也不起作用:
curl --proxy http://username:p%40ssw3rd@myproxy.node-a.io:11115 https://ipinfo.io/ip
有没有办法为密码中包含“@”字符的代理创建一个像上面这样的代理身份验证 URL?
(对于上下文,我正在尝试--proxy-server
为chrome session设置。)
解决方案
取自这里:
URL 使用百分比编码,也就是 URL 编码。
@
符号就是%40
这种编码。
% curl -k -X POST https://user1:mypass8%40@myshop.com/job/build
或者使用
-u
/--user
参数:
% curl -u user1:mypass8@ -k -X POST https://myshop.com/job/build