curl命令通过代理访问资源

2018年4月6日 0 条评论 115 次阅读 0 人点赞

生产环境中IDC托管的服务器或者云主机通常不具备访问外网权限,部署开源软件一般都是在赋予外网权限的开发机(网关机)下载后再分发到相应集群,操作起来非常不方便。如果开发机启用了http或者socket代理服务,那么我们可以很方便地使用curl命令通过代理服务器访问外网资源下载所需软件或者补丁包。

系统管理员提供的代理详细信息如下:

该代理设置在Google Chrome 和 Firefox 浏览器工作的很好。但是,我要如何将其应用到curl命令上呢?我要如何让curl命令使用我在谷歌浏览器上的代理设置呢?

诸如curl 、wget 、lynx 命令等许多 Linux 和 Unix 命令行工具都会使用名为 http_proxy、https_proxy、ftp_proxy 的环境变量来查找代理详细信息。 它允许用户通过代理服务器(使用或者不使用用户名/密码)连接基于文本的会话和应用。本文将演示代理服务器环境下如何通过curl命令行界面执行 HTTP/HTTPS 请求。

Unix和Linux下curl命令设置代理语法

语法如下:

另一个方式是使用curl命令的-x选项,该选项允许用户使用指定的代理设置:

Linux使用curl 命令实现代理访问演示

首先设置http_proxy:

示例输出:

在接下来这个例子中,我将下载一个pdf文件:

或者使用-x选项:

示例输出:

如何在Unix上通过curl使用指定代理服务器

如何使用socks协议

语法和http/https代理是一样的:

如何配置并设置curl使其代理永久生效

使用 vim 等文本编辑器更新/编辑~/.curlrc 文件:

追加以下内容:

保存并关闭文件。另一种方式是在 ~/.bashrc 文件中创建一个别名:

需要记住的是,代理字符串中可以通过protocol://前缀来指定不同的代理协议。通过socks4://、socks4a://、socks5://或socks5h://指定所使用的 SOCKS 版本。未指定代理协议的情况下,http:// 和其他所有协议都将被默认视为 HTTP 代理。如果代理字符串中未指定端口号,则默认为 1080。-x 选项将会覆盖环境变量中现有的代理设置。如果环境变量中已经设置了代理,用户可以通过将代理设置为""来进行覆盖。更多信息请参阅curl命令手册

参考资料

在构思这篇文章的时候偶然间看到一篇通俗易懂且实操性比较高的英文博文,随决定直接将该文翻译成中文分享给大家。

作者:Vivek Gite

原文地址:https://www.cyberciti.biz/faq/linux-unix-curl-command-with-proxy-username-password-http-options/

勇敢,和生活的艰难无关。

文章评论(0)