Как сделать так, чтобы curl игнорировал прокси?
https://stackoverflow.com/questions/800805
Full question
Решение
Я предполагаю, что curl читает адрес прокси-сервера из переменной среды http_proxy
и что переменная должна сохранять свое значение. Затем в такой оболочке, как bash, export http_proxy = '';
перед командой (или в сценарии оболочки) временно изменит ее значение.
(См. руководство curl для всех переменных, на которые он смотрит, под заголовком ENVIRONMENT
.)
ДРУГИЕ СОВЕТЫ
Если ваш curl
по крайней мере версии 7.19.4
, вы можете просто использовать флаг - noproxy
.
curl --noproxy "*" http://www.stackoverflow.com
Из руководства .
Я столкнулся с той же проблемой, потому что я установил переменные среды http_proxy и https_proxy. Но иногда я подключаюсь к другой сети и мне нужно временно обойти прокси. Самый простой способ сделать это (без изменения переменных среды):
curl --noproxy '*' stackoverflow.com
Из руководства: " Единственный подстановочный знак - это один символ *, который соответствует всем хостам и эффективно отключает прокси. "
Символ * заключен в кавычки, чтобы он не был ошибочно раскрыт оболочкой.
Длинный выстрел, но попробуйте установить прокси на " " (пустая строка), которая должна переопределять любые настройки прокси-сервера в соответствии со страницей руководства.
Сначала я перечислил текущие настройки прокси с помощью
env | sort | less
(должно быть что-то вроде http_proxy = http: //wpad.local.machine.location: номер порта
)
Затем я попытался настроить
export http_proxy=";"
который дал это сообщение об ошибке:
curl: (5) Couldn't resolve proxy ';'
Пробовал
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
и это сработало! Р> <Р> PS! Не забудьте вернуть http-proxy свои первоначальные настройки с помощью
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"
}
Это прекрасно работает, установите строку прокси на " "
curl -x "" http://www.stackoverflow.com
Вы должны использовать переменную $ no_proxy
env (в нижнем регистре). Обратитесь к https://wiki.archlinux.org/index.php/proxy_settings за примерами. . р>
Также давно была ошибка в curl http://sourceforge.net/ p / curl / bugs / 185 / , возможно, вы используете древнюю версию curl, которая включает эту ошибку.
Добавьте настройки прокси в .curlrc
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
Это заставит все домены dev и запрос локального компьютера игнорировать прокси.
Неудачный ответ, но: не забудьте убедиться, что в файле ~ / .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 недоступен.