Curl'nin proxy'yi yok saymasını nasıl sağlayabilirim?


106

Curl'nin proxy'yi yok saymasını nasıl sağlayabilirim? $ NO_PROXY ayarı benim için işe yaramıyor gibi görünüyor.


1
Daha fazla bilgi verirseniz, insanların size cevap vermesine yardımcı olur. Hangi platformdasın Curl proxy ayarlarını nereden alıyor? Hangi protokol (HTTP, FTP)? Ne tür bir proxy (HTTP, SOCKS)? Şeffaf bir vekil mi? Sorununuzu ortaya çıkaran tam bir komut setini çıktılarıyla birlikte gösterebilir misiniz?
Brian Campbell

Yanıtlar:


55

Curl'nin ortam değişkeninden proxy adresini okuduğunu http_proxyve değişkenin değerini koruması gerektiğini varsayıyorum . Sonra bash gibi bir kabukta, export http_proxy='';bir komuttan önce (veya bir kabuk betiğinde) değerini geçici olarak değiştirir.

(Baktığı tüm değişkenler için ENVIRONMENTbaşlığın altındaki curl kılavuzuna bakın .)


19
Ya da basitçeunset http_proxy
joelittlejohn

Bir not: gibi başka * _proxy env değişkenleri vardır ftp_proxy. Sanırım işte tam bir liste wiki.archlinux.org/index.php/proxy_settings .
Dmitriusan

Http_proxy'yi duruma göre geçersiz kılmak istemiyorsanız, etki alanlarını $ no_proxy ile yok sayacak şekilde yapılandırabilir ve ardından curl'nizi takma ad olarak adlandırabilirsiniz: alias curl = 'curl --noproxy $ no_proxy'
Sir4ur0n

1
@jdebon Aşağıda açıklanan nedenlerden ötürü, bu ortam değişkeninde bir joker karakteriniz varsa bu işe yaramaz ( stackoverflow.com/a/17710829/2189128 ).
Jeff

@Jeff Bu benim durumum değil, ama güzel nokta, diğer kişilere bazı sorunlara neden olabilir. Teşekkürler!
Sir4ur0n

247

Eğer senin curlen azından sürümüdür 7.19.4, sadece kullanabilirsiniz --noproxybayrağı.

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

Gönderen kılavuzu .


5
curl: seçenek --noproxy: bilinmiyor
Roger Ng

2
@RogerNg, soruyu cevapladığımdan beri kılavuz veya kullanım değiştiyse, cevabı güncellemekten veya kendi cevabınızı yazmaktan çekinmeyin. Yine de, bu cevap yazılırken sorulan soru için doğruydu. Kurulumunuz spesifikasyonlara uygun davranmıyorsa, bu tamamen başka bir sorundur.
Scott Offen

3
curl --noproxy stackoverflow.com stackoverflow.com Bu doğru öneridir .
arulraj.net

2
Bu --noproxyseçeneğin daha eski curl sürümleri için mevcut olmadığını varsayıyorum (örneğin, Centos / RHEL
5.x'te

2
Belgelere dayanarak, bunun şimdiye kadar çalışabileceği tek yol --noproxy 127.0.0.1, stackoverflow.com'un localhost'ta çalışıyor olmasıydı.
dannysauer

72

Aynı problemle karşılaştım çünkü http_proxy ve https_proxy ortam değişkenlerini ayarladım. Ancak bazen farklı bir ağa bağlanıyorum ve proxy'yi geçici olarak atlamam gerekiyor. Bunu yapmanın en kolay yolu (ortam değişkenlerini değiştirmeden):

curl --noproxy '*' stackoverflow.com

Kılavuzdan: "Tek joker karakter, tüm ana bilgisayarlarla eşleşen ve proxy'yi etkin bir şekilde devre dışı bırakan tek bir * karakterdir."

* Karakteri, kabuk tarafından yanlışlıkla genişletilmemesi için tırnak içine alınmıştır.


12
furture kullanıcıları için not: Bash, * bu yüzden alıntı yapmazsam yerel dosyaları genişletircurl --noproxy "*" stackoverflow.com
Adam

Çok kullanışlı ve bunun .curlrc dosyamda belirlediğim (SOCKS) proxy'yi de yok saydığını belirtmek gerekir
MatzFan

1
Bu, curl 7.22.0 sürümünü kullanarak benim için çalışan cevaptır
xpereta

23

Bu gayet iyi çalışıyor, proxy dizesini "" olarak ayarlayın

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

12

Proxy tercihlerinizi .curlrc içine ekleyin

proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1

Bu, tüm dev etki alanlarını ve yerel makine isteğini proxy'yi yok sayar.


1
//, Bu, ile başlayan bir DNS değerine sahip bir değere sahip bir örneği gösteren tek örnektir ..
Nathan Basanese

Env değişkeni no_proxy (alt çizgi ile) ile karıştırılmamalıdır
Simon

7

Uzun çekim, ancak proxy'yi "" (boş dize) olarak ayarlamayı deneyin; bu, kılavuz sayfasına göre tüm proxy ayarlarını geçersiz kılmalıdır.


2
Bu "uzun bir atış" değil - bunu yapmanın doğru yolu bu. Curl'imin kılavuz sayfasına göre (7.15.5, '--noproxy' seçeneği göstermez), -x / - proxy <proxyhost [: port]> ... Bu seçenek, proxy'yi ayarlayan mevcut ortam değişkenlerini geçersiz kılar. kullanın. Proxy ayarlayan bir ortam değişkeni varsa, onu geçersiz kılmak için proxy'yi "" olarak ayarlayabilirsiniz.
Rob Cranfill

5
'09'da her şey zorluydu.
Louis

5
+1, -x "" yapar. - joker karakterli noproxy, "*" ifadesinden alıntı yapsam bile bash'imle çalışmıyor
Eugene

@Eugene: bash 4.3.11'de çalışıyor ve alıntı yapılması gerekiyor.
karatedog


6

İlk olarak, mevcut proxy ayarını listeledim

env | sort | less

(gibi bir şey olmalı http_proxy=http://wpad.local.machine.location:port number)

Sonra ayarlamayı denedim

export http_proxy=";" 

Bu hata mesajını veren:

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

Denenmiş

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

ve işe yaradı!

PS! Http-proxy'yi orijinal ayarlarına geri getirmeyi unutmayın.

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

6

Ben var http_proxyve https_proxytanımlandım. Bu ortamları bozmak ve yeniden ayarlamak istemiyorum ama --noproxy '*' benim için mükemmel çalışıyor.

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

Yanlış cevap ama: Bir ~/.curlrcdosyada proxy ayarlanmadığından emin olun (...).


1
Teşekkür ederim. Curl'nin neden yerel ortamlara saygı göstermediğini kafamı karıştırıyordum. Ve sonra .curlrc dosyasına baktım ve bazı ek yapılandırmalar vardı. Orada no_proxy eklendi ve işe yaradı!
n3o

1

Benim durumumda (macos, curl 7.54.0), aşağıdaki proxy setim var~/.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

Bilinmeyen bir nedenden ötürü, bu sürümü curlortam değişkenleriyle NO_PRXYve no_proxydüzgün çalışamaz, sonra proxy ortam değişkenlerini tek tek, her ikisine de HTTPS_PROXYve https_proxy.

unset HTTPS_PROXY
unset https_proxy

çalışmaya başlar ve dahili url'lere bağlanabilir

Bu nedenle, ortamınızda geçici çözüm olarak varsa, tüm proxy değişkenlerini kaldırmanızı tavsiye ederim.

unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY

-1

Curl, "no_proxy" (küçük harf) ortam değişkenini ayarlayana kadar Ubuntu 12.04'teki proxy'yi göz ardı etmiyordu. --Noproxy seçeneği mevcut değildi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.