http_proxy 环境变量中的特殊字符

http_proxy 环境变量中的特殊字符

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/

相关内容