Як змусити curl ігнорувати проксі? Налаштування $ NO_PROXY, здається, не працює для мене.
Як змусити curl ігнорувати проксі? Налаштування $ NO_PROXY, здається, не працює для мене.
Відповіді:
Я припускаю, що curl читає адресу проксі з змінної оточення, http_proxy
і що змінна повинна зберігати своє значення. Тоді в оболонці, як bash, export http_proxy='';
перед командою (або в скрипті оболонки) тимчасово змінити своє значення.
(Дивіться посібник з curl для всіх змінних, на які він дивиться, під ENVIRONMENT
заголовком.)
unset http_proxy
ftp_proxy
. Я думаю, ось повний список wiki.archlinux.org/index.php/proxy_settings .
Якщо ваша curl
принаймні версія 7.19.4
, ви можете просто використовувати --noproxy
прапор.
curl --noproxy "*" http://www.stackoverflow.com
З посібника .
--noproxy
варіант не доступний для старих версій завитків (наприклад, тих, які використовуються у Centos / RHEL 5.x)
--noproxy 127.0.0.1
було, якби stackoverflow.com працював на localhost.
Я зіткнувся з тією ж проблемою, тому що я встановив змінні середовища http_proxy та https_proxy. Але час від часу я підключаюся до іншої мережі і мені потрібно тимчасово обійти проксі. Найпростіший спосіб зробити це (не змінюючи змінні середовища):
curl --noproxy '*' stackoverflow.com
З посібника: "Єдиний підмітний знак - це символ *, який відповідає всім хостам і ефективно відключає проксі."
Символ * цитується так, щоб він помилково не розширювався оболонкою.
curl --noproxy "*" stackoverflow.com
Додайте налаштування проксі-сервера в .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Це змушує всі домени розробки та запит локальної машини ігнорувати проксі.
.
.
Довго знімайте, але спробуйте встановити проксі на "" (порожній рядок), який повинен змінювати будь-які параметри проксі відповідно до сторінки "man".
Ви повинні використовувати $no_proxy
змінну env (малі регістри). Для отримання прикладів зверніться до https://wiki.archlinux.org/index.php/proxy_settings .
Крім того, давно з'явилася помилка у curl http://sourceforge.net/p/curl/bugs/185/ , можливо, ви використовуєте давню версію curl, яка включає цю помилку.
По-перше, я перерахував поточний параметр проксі
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
і це спрацювало!
PS! Не забудьте повернути http-проксі до його початкових налаштувань за допомогою
export http_proxy=http://wpad.local.machine.location:port number
У мене є http_proxy
і https_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"
}
Відповідь Lame, але: не забудьте переконатися, що у ~/.curlrc
файлі не встановлено проксі (...).
У моєму випадку (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_PRXY
і no_proxy
належним чином, тоді я скидаю змінні середовища проксі по черзі, до обох HTTPS_PROXY
і https_proxy
.
unset HTTPS_PROXY
unset https_proxy
він починає працювати і може підключатися до внутрішніх URL-адрес
Тож я б рекомендував зняти всі проксі-змінні, якщо у вашому середовищі є тимчасове рішення.
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
Мій згорт не ігнорував проксі на Ubuntu 12.04, поки я не встановив змінну середовища "no_proxy" (нижній регістр). Опція --noproxy недоступна.