如何使用密码中的特殊字符设置http/https代理
时间:2020-01-09 10:41:38 来源:igfitidea点击:
在本教程中,当用户名或者密码包含逗号,@等特殊字符时,将介绍设置http_proxy
或者https_proxy
的步骤。
错误:无法使用用户名或者密码中的特殊字符设置http_proxy或者https_proxy
通常,在导出http_proxy
或者https_proxy
时,我们应该提供用户名和密码以及代理IP和端口。
在大多数情况下都可以使用,但是如果用户名或者密码包含一些特殊字符,那么我们可能会得到
Resolving s... failed: Name or service not known. wget: unable to resolve host address “s”
错误输出可能会有所不同,具体取决于用户名或者密码中涉及的字符。
有两种方法可以解决此错误:
解决方案1:将文本转换为十六进制unicode
我们必须在代理用户名和密码中使用各个特殊字符的映射十六进制unicode值。
要获取映射Unicode字符的列表,请遵循https://unicodelookup.com/
例如,可以将密码P @ $$//0转换为
P P <-- No lookup required @ 0x40 $ 0x24 $ 0x24 \ 0x5C / 0x2F \ 0x5C / 0x2F 0 0 <-- No lookup required , 0x2C # 0x23
因此,如果将其组合为P @ $$//0,则得到P0x400x240x5C0x2F0x5C0x2F00x2C0x23
现在我们可以导出http_proxy
了:
# export http_proxy="http://username:P0x400x240x5C0x2F0x5C0x2F00x2C0x23@server:port/"
与导出https_proxy
类似
# export https_proxy="https://username:P0x400x240x5C0x2F0x5C0x2F00x2C0x23@server:port/"
解决方案2:使用wget提供用户名和密码
除了进行转换外,我们还可以使用wget
命令以纯文本格式提供用户名和密码。
# wget -e use_proxy=yes -e https_proxy=10.xx.xx.xx:8080 --proxy-user='user' --proxy-password='P@$$\/\/0,#' https://domain.com/file
在wget的手册页中:
--proxy-user=user --proxy-password=password Specify the username user and password password for authentication on a proxy server. Wget will encode them using the "basic" authentication scheme.
仅当我们计划使用wget
或者要应用系统范围的代理时,此解决方案才有效。
我们可以使用解决方案1,其中用户名或者密码具有任何特殊字符。