🖧如何使用密码中的特殊字符设置http / https代理

在本教程中,我将向您展示如何在您的用户名或密码包含特殊字符(例如逗号,@,#等)时设置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 <- поиск не требуется
@ ⇒ 0x40
$ ⇒ 0x24
$ ⇒ 0x24
 ⇒ 0x5C
/ ⇒ 0x2F
 ⇒ 0x5C
/ ⇒ 0x2F
0 ⇒ 0 <- поиск не требуется
, ⇒ 0x2C
# ⇒ 0x23

因此,如果将其组合为““ P @ $$ / / 0,#”,我们得到 “ P0x400x240x5C0x2F0x5C0x2F00x2C0x23”

现在,您可以导出http_proxy了:

# export http_proxy="http://username:[email protected]:port/"

同样用于导出https_proxy

# export https_proxy="https://username:[email protected]:port/"

解决方案2:使用wget提供用户名和密码

除了执行转换,您还可以使用wget命令以纯文本形式提供用户名和密码。 在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,其中用户名或密码包含任何特殊字符。

结论

在本教程中,我分享了在用户名和/或密码部分包含任何特殊字符时设置http_proxy和https_proxy的步骤。

在提供的Unicode页面上,您可以搜索您的字符,然后找到对应字符的Unicode十六进制值。

然后只需将特殊字符替换为Unicode值,就可以在Linux服务器上导出代理。

Sidebar