http_proxy 环境变量中使用特殊字符的正确格式是什么?
或者更具体地说,在命令行上对 http 代理进行身份验证时,如何处理用户名或密码中的特殊字符。
答案1
首先,完整的格式是:
http_proxy='http://user:pass@server:port/'
用户名和密码中的每个特殊字符不得与上述格式中使用的字符冲突,并且必须符合 URL 标准。
以下是一个例子:
Domain: ADMIN DOM
User: [email protected]
PW: a%b(c/x@y z
Server: proxy.server.at
Port: 8080
变成:
'http://ADMIN%20DOM\my%40email.address:a%25b(c%2Fx%40y%[email protected]:8080/'
为了防止 bash 解释任何字符,请始终使用单引号。
您可以在 /etc/environment 中像这样设置此系统范围:
http_proxy='http://ADMIN%20DOM\my%40email.address:a%25b(c%2Fx%40y%[email protected]:8080/'
简单的 URL 编码/解码:
https://duckduckgo.com/?q=url+encode+a%25b%28c%2Fx%40y+z&kl=at-de
或者
https://duckduckgo.com/?q=url+escaping
答案2
更加简单和可靠!
常规语法:
sudo {http,https,ftp}_proxy=http://<username>:<password>@<proxy_url/_proxyip>:<port>/ wget --timeout=5 --no-check-certificate http://<website_url>
例子:
[root@localhost ~]# sudo {http,https,ftp}_proxy=http://username:[email protected]:6050/ wget --timeout=5 --no-check-certificate http://google.com
{http,https,ftp}_proxy -> http、https、ftp URL。以逗号分隔。
--超时=5 -> 连接在几秒钟内保持活动。
无检查证书 -> 忽略 SSL/证书验证。
- 蜘蛛 -> 如果您想在不下载文件的情况下测试连通性。
笔记:
在线转换器:
将特殊字符替换为其等效的十六进制 Unicode。有关 Unicode 列表,请参阅网站https://unicodelookup.com(或者)https://unicode-table.com
使用Python的本地转换器:
参考:将密码“p@s#w:E”转换为unicode如下,
@ = %40
$ = %24
# = %23
: = %3A
p@s#w:E = p%40s%23w%3AE
输入:
[root@localhost ~]# python -c "import sys, urllib as enc; print enc.quote_plus(sys.argv[1])" "p@s#w:E"
输出:
p%40s%23w%3AE
答案3
假设您的用户名是foo
,密码是bar$
。
引用他们的话:
http_proxy='http://foo:bar$@localhost:3128/' wget http://www.google.com/
或者逃避他们:
http_proxy=http://foo:bar\$@localhost:3128/ wget http://www.google.com/
如果您的密码是bar/
?URL 对其进行编码会怎样?
http_proxy="http://foo:bar%2F@localhost:3128/" wget http://www.google.com/