如何使curl忽略代理?

时间:2009-04-29 03:56:08

标签: curl

如何让curl忽略代理? 设置$ NO_PROXY对我来说似乎不起作用。

13 个答案:

答案 0 :(得分:172)

如果您的curl至少是版本7.19.4,则可以使用--noproxy标记。

curl --noproxy "*" http://www.stackoverflow.com

来自manual

答案 1 :(得分:56)

我遇到了同样的问题,因为我设置了http_proxy和https_proxy环境变量。但偶尔,我连接到不同的网络,需要暂时绕过代理。最简单的方法是(不更改环境变量):

curl --noproxy '*' stackoverflow.com

来自手册:“唯一的通配符是单个*字符,它匹配所有主机,并有效地禁用代理。”

引用*字符,以便shell不会错误地扩展它。

答案 2 :(得分:43)

我假设curl正在从环境变量http_proxy读取代理地址,并且该变量应该保留其值。然后在bash之类的shell中,export http_proxy='';在命令之前(或在shell脚本中)暂时改变它的值。

(请参阅curl的手册,了解它所查看的所有变量,在ENVIRONMENT标题下。)

答案 3 :(得分:6)

远射,但尝试将代理设置为“”(空字符串),应根据手册页覆盖任何代理设置。

答案 4 :(得分:6)

我已定义http_proxyhttps_proxy。我不想取消设置并重新设置这些环境 --noproxy '*'对我来说非常适合。

curl --noproxy '*' -XGET 172.17.0.2:9200
{
  "status" : 200,
  "name" : "Medusa",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "1.5.0",
    "build_hash" : "544816042d40151d3ce4ba4f95399d7860dc2e92",
    "build_timestamp" : "2015-03-23T14:30:58Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.4"
  },
  "tagline" : "You Know, for Search"
}

答案 5 :(得分:5)

首先,我用

列出了当前的代理设置
env | sort | less

(应该类似于http_proxy=http://wpad.local.machine.location:port number

然后我尝试设置

export http_proxy=";" 

给出了此错误消息:

curl: (5) Couldn't resolve proxy ';'

尝试

export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55

它有效!

PS!请记住使用

将http-proxy设置回原始设置
export http_proxy=http://wpad.local.machine.location:port number

答案 6 :(得分:5)

您应该使用$no_proxy env变量(小写)。有关示例,请参阅https://wiki.archlinux.org/index.php/proxy_settings

此外,很久以前在curl中存在一个错误http://sourceforge.net/p/curl/bugs/185/,也许你正在使用一个包含这个bug的古老卷曲版本。

答案 7 :(得分:4)

将您的代理偏好设置添加到.curlrc

proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1

这使得所有开发域和本地机器请求都忽略了代理。

答案 8 :(得分:4)

这很好,将代理字符串设置为“”

awk '                     ##Starting awk command/script here.
/^>/{                     ##Checking condition if a line starts from > then do following.
  sum+=$NF                ##Creating a variable named sum wohse value is adding in its own value of $NF last field of current line.
  count++                 ##Creating a variable named count whose value is incrementing by 1 each time cursor comes here.
}
END{                      ##END block of awk code here.
  print "avg="sum/count   ##Printing string avg= then dividing sum/count it will print the result of it.
}
' Input_file              ##Mentioning Input_file name here.

答案 9 :(得分:1)

如果是 Windows:使用 curl --proxy "" ...

答案 10 :(得分:0)

Lame回答但是:请记住确保~/.curlrc文件中没有设置代理(...)。

答案 11 :(得分:0)

在我的情况下(macos,curl 7.54.0),我在下面的代理服务器中设置了~/.bash_profile

$ env |grep -i proxy |cut -d = -f1|sort
FTP_PROXY
HTTPS_PROXY
HTTP_PROXY
NO_PROXY
PROXY
ftp_proxy
http_proxy
https_proxy
no_proxy

由于未知原因,此版本的curl不能正确使用环境变量NO_PRXYno_proxy,然后我逐个取消设置代理环境变量,直到两个{ {1}}和HTTPS_PROXY

https_proxy

它开始工作并可以连接到内部网址

因此,如果您的环境中有临时解决方案,那么我建议您取消设置所有代理变量。

unset HTTPS_PROXY
unset https_proxy

答案 12 :(得分:-1)

在我设置“no_proxy”(小写)环境变量之前,我的卷曲并没有忽略Ubuntu 12.04上的代理。 --noproxy选项不可用。