5

我想设置 apt-get 在我的 ubuntu 机器上使用代理。我已成功将突触配置为使用代理,因此我可以安装软件包,但我希望能够使用命令行。

我的工作代理需要用户名和密码,两者都包含特殊字符。

在我的.bashrc我有

export http_proxy="http://user@company:P@$$1234@10.20.30.40:80/"

但是,这不起作用。

我也尝试过转义特殊字符,但这似乎也不起作用:

export http_proxy="http://user\@company:P\@\$\$1234@10.20.30.40:80/"
4

2 回答 2

6

似乎是两件事的结合。我需要对特殊字符使用转义码,并且需要将条目添加到/etc/apt/apt.conf. (据说,导出 _proxy 环境变量应该使 apt-get 工作,但我没有那么幸运。)

/etc/apt/apt.conf

APT::Get::AllowUnauthenticated 1;
Acquire::http::proxy "http://user%40company:P%40%24%241234@10.20.30.40:80/";
Acquire::ftp::proxy "ftp://user%40company:P%40%24%241234@10.20.30.40:80/";
Acquire::https::proxy "https://user%40company:P%40%24%241234@10.20.30.40:80/";

.bashrc

export http_proxy="http://user%40company:P%40%24%241234@10.20.30.40:80/";
export ftp_proxy="ftp://user%40company:P%40%24%241234@10.20.30.40:80/";
export https_proxy="https://user%40company:P%40%24%241234@10.20.30.40:80/";
于 2012-02-29T19:26:39.433 回答
1

更加简单可靠!

一般语法:

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:password-123@proxy.example.com:6050/

wget --timeout=5 --no-check-certificate http://google.com

{http,https,ftp}_proxy -> http、https、ftp url。用逗号分隔。

--timeout=5 -> 连接在几秒钟内保持活动状态。

-no-check-certificate -> 忽略 SSL / 证书验证。

--spider -> 如果你想在不下载文件的情况下测试连接性。

笔记:

在线转换器:

用等效的十六进制 unicode 替换特殊字符。有关 unicode 列表,请参阅网站https://unicode-table.com(或)http://unicodelookup.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
于 2018-07-15T13:58:34.437 回答