如何在Linux/Unix上使用curl命令和代理用户名/密码

时间:2020-01-09 10:42:11  来源:igfitidea点击:

我的系统管理员为我提供了以下代理详细信息:
IP: 202.54.1.1 Port: 3128 Username: foo Password: bar

设置与Google Chrome和Firefox浏览器完美配合。
如何与curl命令一起使用?
如何告诉curl命令使用Google Chrome浏览器中的代理设置?
许多Linux和Unix命令行工具,例如curl命令,wget命令,lynx命令等。
使用名为http_proxy,https_proxy,ftp_proxy的环境变量来查找代理详细信息。
它允许您通过带有或者不带有用户名/密码的代理服务器连接基于文本的会话和应用程序。
他的页面显示了如何使用PROXY服务器使用cURL cli执行HTTP/HTTPS请求。

带有代理语法的Unix和Linux curl命令

语法为:

## Set the proxy address of your uni/company/vpn network ## 
export http_proxy=http://your-ip-address:port/
 
## http_proxy with username and password 
export http_proxy=http://user:password@your-proxy-ip-address:port/
 
## HTTPS version ##
export https_proxy=https://your-ip-address:port/
export https_proxy=https://user:password@your-proxy-ip-address:port/

另一个选项是将-x选项传递给curl命令。
要使用指定的代理:

curl -x <[protocol://][user:password@]proxyhost[:port]> url
--proxy <[protocol://][user:password@]proxyhost[:port]> url
--proxy http://user:password@Your-Ip-Here:Port url
-x http://user:password@Your-Ip-Here:Port url

Linux将curl命令与代理一起使用

首先设置http_proxy:

## proxy server, 192.54.1.1, port: 3128, user: foo, password: bar ##
export http_proxy=http://foo:[email protected]:3128/
export https_proxy=$http_proxy
## Use the curl command ##
curl -I https://www.theitroad.local
curl -v -I https://www.theitroad.local

输出示例:

* Rebuilt URL to: www.theitroad.local/
*   Trying 192.54.1.1...
* Connected to 1192.54.1.1 (192.54.1.1) port 3128 (#0)
* Proxy auth using Basic with user 'foo'
> HEAD HTTP://www.theitroad.local/ HTTP/1.1
> Host: www.theitroad.local
> Proxy-Authorization: Basic x9VuUml2xm0vdg93MtIz
> User-Agent: curl/7.43.0
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Server: nginx
Server: nginx
< Date: Sun, 17 Jan 2015 11:49:21 GMT
Date: Sun, 17 Jan 2015 11:49:21 GMT
< Content-Type: text/html; charset=UTF-8
Content-Type: text/html; charset=UTF-8
< Vary: Accept-Encoding
Vary: Accept-Encoding
< X-Whom: Dyno-l1-com-cyber
X-Whom: Dyno-l1-com-cyber
< Vary: Cookie
Vary: Cookie
< Link: <http://www.theitroad.local/wp-json/>; rel="https://api.w.org/"
Link: <http://www.theitroad.local/wp-json/>; rel="https://api.w.org/"
< X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< X-Cache: MISS from server1
X-Cache: MISS from server1
< X-Cache-Lookup: MISS from server1:3128
X-Cache-Lookup: MISS from server1:3128
< Connection: keep-alive
Connection: keep-alive
 
< 
* Connection #0 to host 10.12.249.194 left intact

在此示例中,我正在下载pdf文件:

$ export http_proxy="Hyman:[email protected]:3128/"
$ curl -v -O http://dl.theitroad.local/pdfdownloads/b8bf71be9da19d3feeee27a0a6960cb3/569b7f08/cms/631.pdf

或者使用-x选项:

curl -x 'http://Hyman:[email protected]:3128' -v -O https://dl.theitroad.local/pdfdownloads/b8bf71be9da19d3feeee27a0a6960cb3/569b7f08/cms/631.pdf

输出示例:
实际卷曲

如何在Unix上的curl中使用指定的代理服务器

$ curl -x http://prox_server_vpn:3128/ -I https://www.theitroad.local/faq/howto-nginx-customizing-404-403-error-page/

如何使用socks协议?

语法相同:

curl -x socks5://[user:password@]proxyhost[:port]/ url
curl --socks5 192.168.1.254:3099 https://www.theitroad.local/

如何配置和设置curl以永久使用代理连接?

使用文本编辑器(例如vim)更新/编辑~/.curlrc文件:

$ vi ~/.curlrc

追加以下内容:

proxy = server1.theitroad.local:3128
proxy-user = "foo:bar"

保存并关闭文件。
另一个选择是在~/.bashrc文件中创建bash shell别名:

## alias for curl command 
## set proxy-server and port, the syntax is
## alias curl="curl -x {your_proxy_host}:{proxy_port}"
alias curl="curl -x server1.theitroad.local:3128"

请记住,可以使用protocol://前缀指定代理字符串,以指定其他代理协议。
使用socks4://,socks4a://,socks5://或者socks5h://来请求要使用的特定SOCKS版本。
未指定协议,http://和所有其他协议都将被视为HTTP代理。
如果未在代理字符串中指定端口号,则假定该端口号为1080。
-x选项将覆盖将代理设置为使用的现有环境变量。
如果有环境变量设置代理,则可以将代理设置为来覆盖它。