curl이 프록시를 무시하도록하려면 어떻게해야합니까?


106

curl이 프록시를 무시하도록하려면 어떻게해야합니까? $ NO_PROXY 설정이 작동하지 않는 것 같습니다.


1
더 많은 정보를 제공하면 사람들이 대답하는 데 도움이 될 것입니다. 어떤 플랫폼에 있습니까? curl은 어디에서 프록시 설정을 가져 옵니까? 어떤 프로토콜 (HTTP, FTP)? 어떤 종류의 프록시 (HTTP, SOCKS)? 투명한 프록시입니까? 출력과 함께 문제를 나타내는 정확한 명령 집합을 표시 할 수 있습니까?
Brian Campbell

답변:


54

curl이 환경 변수에서 프록시 주소를 읽고 http_proxy변수가 값을 유지해야 한다고 가정 합니다. 그런 다음 bash와 같은 셸 export http_proxy='';에서 명령 (또는 셸 스크립트)이 일시적으로 값을 변경하기 전에.

( ENVIRONMENT표제 아래에있는 모든 변수에 대해서는 curl의 설명서를 참조하십시오 .)


19
또는 간단히unset http_proxy
joelittlejohn 2013-09-12

참고 : .NET과 같은 다른 * _proxy 환경 변수가 ftp_proxy있습니다. 여기에 wiki.archlinux.org/index.php/proxy_settings 전체 목록이 있다고 생각합니다 .
Dmitriusan 2014 년

당신이 경우에 따라에 HTTP_PROXY을 무시하지 않으려면, 당신은 $ NO_PROXY으로 무시하도록 도메인을 구성 할 수 있습니다, 다음 컬 별명 : 별명 컬 = '컬 --noproxy $ NO_PROXY'
Sir4ur0n

1
@jdebon 아래에 설명 된 이유 때문에 해당 환경 변수에 와일드 카드가 있으면 작동하지 않습니다 ( stackoverflow.com/a/17710829/2189128 ).
Jeff

@Jeff 내 경우는 아니지만 좋은 자리, 다른 사람에게 문제를 일으킬 수 있습니다. 감사!
Sir4ur0n 2017-06-12

243

당신의 curl버전이 적어도 버전 이라면 플래그를 7.19.4사용할 수 있습니다 --noproxy.

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

로부터 수동 .


5
curl : 옵션 --noproxy : 알 수 없음
Roger Ng

2
@RogerNg, 질문에 답변 한 이후 매뉴얼이나 사용법이 변경된 경우, 답변을 업데이트하거나 직접 작성해주세요. 그럼에도 불구하고 글을 쓰는 시점에서이 답변은 질문에 대해 정확했습니다. 설치가 사양에 따라 작동하지 않는 경우 이는 완전히 또 다른 문제입니다.
Scott Offen 2013

3
curl --noproxy stackoverflow.com stackoverflow.com 이것은 올바른 칭찬입니다.
arulraj.net

2
--noproxy이전 curl 버전 (예 : Centos / RHEL 5.x에서 사용되는 버전)에는 옵션을 사용할 수 없다고 가정합니다.
Dmitriusan 2014 년

2
문서에 따르면이 작업을 수행 할 수있는 유일한 방법 --noproxy 127.0.0.1은 stackoverflow.com이 localhost에서 실행중인 경우였습니다.
dannysauer

70

http_proxy 및 https_proxy 환경 변수를 설정했기 때문에 동일한 문제가 발생했습니다. 하지만 가끔 다른 네트워크에 연결하여 일시적으로 프록시를 우회해야합니다. 이를 수행하는 가장 쉬운 방법 (환경 변수를 변경하지 않고)은 다음과 같습니다.

curl --noproxy '*' stackoverflow.com

매뉴얼에서 : "유일한 와일드 카드는 모든 호스트와 일치하고 프록시를 효과적으로 비활성화하는 단일 * 문자입니다."

* 문자는 쉘에 의해 잘못 확장되지 않도록 인용됩니다.


12
추가 사용자를위한 참고 사항 : Bash는 *를 인용하지 않으면 로컬 파일을 확장합니다.curl --noproxy "*" stackoverflow.com
Adam

매우 유용 및이 또한 내 .curlrc 파일에 설정 한 (SOCKS) 프록시 무시 나타납니다 주목할 가치
MatzFan

1
이것은 curl 버전 7.22.0을 사용하여 나를 위해 일한 대답입니다
xpereta

23

잘 작동합니다. 프록시 문자열을 ""로 설정합니다.

curl -x "" http://www.stackoverflow.com

11

.curlrc에 프록시 기본 설정 추가

proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1

이렇게하면 모든 개발 도메인과 로컬 시스템 요청이 프록시를 무시합니다.


1
//,.로 시작하는 DNS 값이있는 값의 예를 보여주는 유일한 것입니다 ..
Nathan Basanese

env 변수 no_proxy (밑줄 포함)와 혼동하지 마십시오.
Simon Perepelitsa

7

긴 샷이지만 man 페이지에 따라 프록시 설정을 무시해야하는 ""(빈 문자열)로 프록시를 설정해보십시오.


2
이것은 "긴 샷"이 아니라 적절한 방법입니다. 내 curl의 man 페이지 (7.15.5, '--noproxy'옵션이 표시되지 않음)에 따르면 -x /-proxy <proxyhost [: port]> ...이 옵션은 프록시를 다음으로 설정하는 기존 환경 변수를 재정의합니다. 사용하다. 프록시를 설정하는 환경 변수가있는 경우 프록시를 ""로 설정하여 재정의 할 수 있습니다.
Rob Cranfill

5
'09 년에는 모든 것이 멀었다.
Louis

5
+1, -x ""가 수행합니다. 와일드 카드 --noproxy 내가는 "*"내 bash는하지 작업 인용 않는 경우에도
유진

@Eugene : bash 4.3.11에서 작동하며 인용되어야합니다.
karatedog


6

먼저 현재 프록시 설정을

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

그리고 작동했습니다!

추신! http-proxy를 원래 설정으로 되 돌리는 것을 잊지 마십시오.

export http_proxy=http://wpad.local.machine.location:port number

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"
}

1

절름발이 대답하지만 : ~/.curlrc파일 에 프록시가 설정되어 있지 않은지 확인하십시오 (...).


1
감사합니다. 나는 왜 curl이 지역 환경 변수를 존중하지 않는지 머리를 긁적이었습니다. 그런 다음 .curlrc를 검색했고 몇 가지 추가 구성이있었습니다. 거기에 no_proxy를 추가했고 작동했습니다!
n3o

1

제 경우 (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제대로 작동 할 수 없으며 프록시 환경 변수를 HTTPS_PROXYhttps_proxy.

unset HTTPS_PROXY
unset https_proxy

작동하기 시작하고 내부 URL에 연결할 수 있습니다.

따라서 임시 솔루션으로 환경에있는 경우 모든 프록시 변수를 설정 해제하는 것이 좋습니다.

unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY

-1

내 컬은 "no_proxy"(소문자) 환경 변수를 설정할 때까지 Ubuntu 12.04에서 프록시를 무시하지 않았습니다. --noproxy 옵션을 사용할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.