我想设置apt-get在我的ubuntu盒子上使用代理。我已成功配置synaptic以使用代理,因此我可以安装软件包,但我希望能够使用命令行。
我的工作代理需要用户名和密码,两者都有特殊字符。
在我的.bashrc
我有
export http_proxy="http://user@company:P@[email protected]:80/"
但是,这不起作用。
我也试过逃避特殊字符,但这似乎也不起作用:
export http_proxy="http://user\@company:P\@\$\[email protected]:80/"
似乎是两件事的组合。我需要为特殊字符使用转义码,我需要向/etc/apt/apt.conf
添加条目。 (据说,导出_proxy环境变量应该使apt-get工作,但我没有那么幸运。)
/etc/apt/apt.conf
:
APT::Get::AllowUnauthenticated 1;
Acquire::http::proxy "http://user%40company:P%40%24%[email protected]:80/";
Acquire::ftp::proxy "ftp://user%40company:P%40%24%[email protected]:80/";
Acquire::https::proxy "https://user%40company:P%40%24%[email protected]:80/";
.bashrc
:
export http_proxy="http://user%40company:P%40%24%[email protected]:80/";
export ftp_proxy="ftp://user%40company:P%40%24%[email protected]:80/";
export https_proxy="https://user%40company:P%40%24%[email protected]:80/";
更简单可靠!
一般语法:
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网址。用逗号分隔。
--timeout = 5 - >连接以秒为单位保持活动状态。
-no-check-certificate - >忽略SSL /证书验证。
--spider - >如果要在不下载文件的情况下测试连接。
笔记:
在线转换器:
用等效的十六进制unicode替换特殊字符。有关unicodes的列表,请参阅网站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