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_proxydan 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 ENVIRONMENTjudul.)
unset http_proxy
ftp_proxy. Saya rasa, berikut adalah daftar lengkap wiki.archlinux.org/index.php/proxy_settings .
Jika Anda curlsetidaknya versi 7.19.4, Anda bisa menggunakan --noproxybendera.
curl --noproxy "*" http://www.stackoverflow.com
Dari manual .
--noproxyopsi tersebut tidak tersedia untuk versi curl yang lebih lama (mis. Yang digunakan di Centos / RHEL 5.x)
--noproxy 127.0.0.1adalah 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_proxyvariabel 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_proxydan https_proxydidefinisikan. 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 ~/.curlrcfile (...).
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 curlini tidak dapat bekerja dengan variabel lingkungan NO_PRXYdan no_proxydengan benar, maka saya menghapus variabel lingkungan proxy satu per satu, hingga keduanya HTTPS_PROXYdan 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.