Làm cách nào để làm cho curl bỏ qua proxy? Đặt $ NO_PROXY dường như không hiệu quả với tôi.
Làm cách nào để làm cho curl bỏ qua proxy? Đặt $ NO_PROXY dường như không hiệu quả với tôi.
Câu trả lời:
Tôi giả sử curl đang đọc địa chỉ proxy từ biến môi trường http_proxy
và biến đó sẽ giữ nguyên giá trị của nó. Sau đó, trong một vỏ bọc như bash,export http_proxy='';
trước một lệnh (hoặc trong một shell script) sẽ tạm thời thay đổi giá trị của nó.
(Xem hướng dẫn sử dụng của curl để biết tất cả các biến mà nó xem xét, dưới ENVIRONMENT
tiêu đề.)
unset http_proxy
ftp_proxy
. Tôi nghĩ, đây là danh sách đầy đủ wiki.archlinux.org/index.php/proxy_settings .
Nếu của bạn curl
là phiên bản ít nhất 7.19.4
, bạn chỉ có thể sử dụng --noproxy
cờ.
curl --noproxy "*" http://www.stackoverflow.com
Từ sách hướng dẫn .
--noproxy
tùy chọn đó không khả dụng cho các phiên bản curl cũ hơn (ví dụ: những phiên bản được sử dụng tại Centos / RHEL 5.x)
--noproxy 127.0.0.1
là nếu stackoverflow.com đang chạy trên localhost.
Tôi gặp phải vấn đề tương tự vì tôi đặt các biến môi trường http_proxy và https_proxy. Nhưng đôi khi, tôi kết nối với một mạng khác và tạm thời cần bỏ qua proxy. Cách dễ nhất để làm điều này (mà không cần thay đổi các biến môi trường) là:
curl --noproxy '*' stackoverflow.com
Từ sách hướng dẫn: "Ký tự đại diện duy nhất là một ký tự * duy nhất, khớp với tất cả các máy chủ và vô hiệu hóa proxy một cách hiệu quả."
Ký tự * được trích dẫn để không bị mở rộng sai bởi shell.
curl --noproxy "*" stackoverflow.com
Điều này hoạt động tốt, hãy đặt chuỗi proxy thành ""
curl -x "" http://www.stackoverflow.com
Thêm tùy chọn proxy của bạn vào .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Điều này làm cho tất cả các miền nhà phát triển và yêu cầu máy cục bộ bỏ qua proxy.
.
.
Lâu nhưng hãy thử đặt proxy thành "" (chuỗi trống) sẽ ghi đè mọi cài đặt proxy theo trang người dùng.
Bạn nên sử dụng $no_proxy
biến env (chữ thường). Vui lòng tham khảo https://wiki.archlinux.org/index.php/proxy_settings để biết các ví dụ.
Ngoài ra, có một lỗi ở curl cách đây khá lâu http://sourceforge.net/p/curl/bugs/185/ , có thể bạn đang sử dụng phiên bản curl cổ có lỗi này.
Đầu tiên, tôi đã liệt kê cài đặt proxy hiện tại với
env | sort | less
(phải là một cái gì đó giống như http_proxy=http://wpad.local.machine.location:port number
)
Sau đó, tôi đã thử thiết lập
export http_proxy=";"
đã đưa ra thông báo lỗi này:
curl: (5) Couldn't resolve proxy ';'
Đã thử
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
va no đa hoạt động!
Tái bút! Hãy nhớ đặt http-proxy trở lại cài đặt ban đầu với
export http_proxy=http://wpad.local.machine.location:port number
Tôi có http_proxy
và https_proxy
được xác định. Tôi không muốn hủy đặt và thiết lập lại những môi trường đó nhưng --noproxy '*'
hoạt động hoàn hảo đối với tôi.
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"
}
Câu trả lời khập khiễng nhưng: Hãy nhớ đảm bảo rằng không có proxy nào được đặt trong ~/.curlrc
tệp (...).
Trong trường hợp của tôi (macos, curl 7.54.0
), tôi đặt proxy bên dưới với~/.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
Với lý do không xác định, phiên bản này curl
không thể hoạt động với các biến môi trường NO_PRXY
và no_proxy
đúng cách, sau đó tôi bỏ đặt các biến môi trường proxy lần lượt, cho đến cả hai HTTPS_PROXY
và https_proxy
.
unset HTTPS_PROXY
unset https_proxy
nó bắt đầu hoạt động và có thể kết nối với các url nội bộ
Vì vậy, tôi khuyên bạn nên bỏ đặt tất cả các biến proxy nếu bạn có trong môi trường của mình như một giải pháp tạm thời.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Curl của tôi đã không bỏ qua proxy trên Ubuntu 12.04 cho đến khi tôi đặt biến môi trường "no_proxy" (chữ thường). Tùy chọn --noproxy không khả dụng.