Bagaimana cara membuat curl mengabaikan proxy? Menyetel $ NO_PROXY sepertinya tidak berhasil untuk saya.
Bagaimana cara membuat curl mengabaikan proxy? Menyetel $ NO_PROXY sepertinya tidak berhasil untuk saya.
Jawaban:
Saya berasumsi curl membaca alamat proxy dari variabel lingkungan http_proxy
dan variabel harus menjaga nilainya. Kemudian di shell seperti bash, export http_proxy='';
sebelum perintah (atau dalam skrip shell) akan mengubah nilainya untuk sementara.
(Lihat manual curl untuk semua variabel yang dilihatnya, di bawah ENVIRONMENT
judul.)
unset http_proxy
ftp_proxy
. Saya rasa, berikut adalah daftar lengkap wiki.archlinux.org/index.php/proxy_settings .
Jika Anda curl
setidaknya versi 7.19.4
, Anda bisa menggunakan --noproxy
bendera.
curl --noproxy "*" http://www.stackoverflow.com
Dari manual .
--noproxy
opsi tersebut tidak tersedia untuk versi curl yang lebih lama (mis. Yang digunakan di Centos / RHEL 5.x)
--noproxy 127.0.0.1
adalah jika stackoverflow.com berjalan di localhost.
Saya mengalami masalah yang sama karena saya menetapkan variabel lingkungan http_proxy dan https_proxy. Tetapi terkadang, saya menyambung ke jaringan lain dan perlu melewati proxy untuk sementara. Cara termudah untuk melakukannya (tanpa mengubah variabel lingkungan) adalah:
curl --noproxy '*' stackoverflow.com
Dari manual: "Satu-satunya karakter pengganti adalah satu karakter *, yang cocok dengan semua host, dan secara efektif menonaktifkan proxy."
Karakter * dikutip agar tidak diperluas secara keliru oleh shell.
curl --noproxy "*" stackoverflow.com
Ini berfungsi dengan baik, setel string proxy ke ""
curl -x "" http://www.stackoverflow.com
Tambahkan preferensi proxy Anda ke .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Ini membuat semua domain dev dan permintaan mesin lokal mengabaikan proxy.
.
.
Tembakan panjang tapi coba setel proxy ke "" (string kosong) yang akan menggantikan pengaturan proxy sesuai dengan halaman manual.
Anda harus menggunakan $no_proxy
variabel env (huruf kecil). Silakan lihat https://wiki.archlinux.org/index.php/proxy_settings untuk mengetahui contohnya.
Juga, ada bug di curl sejak lama http://sourceforge.net/p/curl/bugs/185/ , mungkin Anda menggunakan versi curl kuno yang menyertakan bug ini.
Pertama, saya mencantumkan pengaturan proxy saat ini dengan
env | sort | less
(harus seperti http_proxy=http://wpad.local.machine.location:port number
)
Kemudian saya mencoba pengaturan
export http_proxy=";"
yang memberikan pesan kesalahan ini:
curl: (5) Couldn't resolve proxy ';'
Mencoba
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
dan berhasil!
PS! Ingatlah untuk menyetel http-proxy kembali ke pengaturan aslinya dengan
export http_proxy=http://wpad.local.machine.location:port number
Saya memiliki http_proxy
dan https_proxy
didefinisikan. Saya tidak ingin membatalkan dan menyetel lagi lingkungan tersebut tetapi --noproxy '*'
berfungsi dengan sempurna untuk saya.
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"
}
Jawaban timpang tetapi: Ingatlah untuk memastikan tidak ada proxy yang disetel dalam ~/.curlrc
file (...).
Dalam kasus saya (macos, curl 7.54.0
), saya memiliki set proxy di bawah ini~/.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
Dengan alasan yang tidak diketahui, versi curl
ini tidak dapat bekerja dengan variabel lingkungan NO_PRXY
dan no_proxy
dengan benar, maka saya menghapus variabel lingkungan proxy satu per satu, hingga keduanya HTTPS_PROXY
dan https_proxy
.
unset HTTPS_PROXY
unset https_proxy
itu mulai bekerja dan dapat terhubung ke url internal
Jadi saya akan merekomendasikan untuk menghapus semua variabel proxy jika Anda ada di lingkungan Anda sebagai solusi sementara.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Curl saya tidak mengabaikan proxy di Ubuntu 12.04 sampai saya mengatur variabel lingkungan "no_proxy" (huruf kecil). Opsi --noproxy tidak tersedia.