我们有一个密码策略,强制用户在密码中使用特殊字符。因此,某些密码将是 Gt4@gj#k(例如)。
现在要指定系统范围的代理设置(为什么不以更直观的方式完成这项工作,例如像在 synaptic 中完成的方式那样;以及为什么 synaptic 不再默认包含...)您必须在主机字段中使用用户名:密码@host 来验证代理。
我们的问题是,有些密码中带有@符号,因此它破坏了这个简单的系统。
如何使用系统范围的代理来与 apt 和允许使用真实世界密码的系统更新程序协同工作?
答案1
如果程序要求您以 http URL 的形式输入代理配置,则需要遵循构建 URL 的约定。
这意味着您不能@
在用户名或密码部分包含字符除非你对它们进行编码. 字符可以在 URL 中编码为百分号,后跟代码点的十六进制表示形式。
因此对于密码Gt4@gj#k
,您可以将其表示为Gt4%40gj%23k
(井号用于分隔 URL 的片段部分,因此最好也对其进行编码)。