Как заставить 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
опция недоступна для более старых версий curl (например, тех, которые используются в Centos / RHEL 5.x)
--noproxy 127.0.0.1
- это если stackoverflow.com работал на localhost.
Я столкнулся с той же проблемой, потому что установил переменные среды http_proxy и https_proxy. Но иногда я подключаюсь к другой сети, и мне нужно временно обойти прокси. Самый простой способ сделать это (без изменения переменных среды):
curl --noproxy '*' stackoverflow.com
Из руководства: «Единственный подстановочный знак - это один символ *, который соответствует всем хостам и эффективно отключает прокси».
Символ * заключен в кавычки, чтобы оболочка не расширила его по ошибке.
curl --noproxy "*" stackoverflow.com
Это работает нормально, установите строку прокси на ""
curl -x "" http://www.stackoverflow.com
Добавьте свои настройки прокси в .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Это заставляет все домены разработчиков и запросы локального компьютера игнорировать прокси.
.
.
Длинный выстрел, но попробуйте установить прокси-сервер на "" (пустая строка), который должен переопределить любые настройки прокси в соответствии со страницей руководства.
Вы должны использовать $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"
}
Неудачный ответ, но: не забудьте убедиться, что в ~/.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
Мой curl не игнорировал прокси в Ubuntu 12.04, пока я не установил переменную среды «no_proxy» (нижний регистр). Параметр --noproxy был недоступен.