Как сделать так, чтобы curl игнорировал прокси? - PullRequest
81 голосов
/ 29 апреля 2009

Как заставить curl игнорировать прокси? Установка $ NO_PROXY, похоже, не работает для меня.

Ответы [ 12 ]

175 голосов
/ 21 мая 2012

Если у вас curl хотя бы версия 7.19.4, вы можете просто использовать флаг --noproxy.

curl --noproxy "*" http://www.stackoverflow.com

Из руководства .

59 голосов
/ 18 июля 2013

Я столкнулся с той же проблемой, потому что я установил переменные среды http_proxy и https_proxy. Но иногда я подключаюсь к другой сети и мне нужно временно обойти прокси. Самый простой способ сделать это (без изменения переменных среды):

curl --noproxy '*' stackoverflow.com

Из руководства: "Единственный подстановочный знак - это один символ *, который соответствует всем хостам и эффективно отключает прокси."

Символ * заключен в кавычки, чтобы он не был ошибочно раскрыт оболочкой.

44 голосов
/ 29 апреля 2009

Я предполагаю, что curl читает адрес прокси-сервера из переменной окружения http_proxy и что переменная должна сохранять свое значение. Затем в такой оболочке, как bash, export http_proxy=''; перед командой (или в сценарии оболочки) временно изменит ее значение.

(См. Руководство curl для всех переменных, на которые оно смотрит, под заголовком ENVIRONMENT.)

6 голосов
/ 28 сентября 2016

у меня 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"
}
6 голосов
/ 13 марта 2012

Сначала я перечислил текущую настройку прокси с

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-proxy свои первоначальные настройки с помощью

export http_proxy=http://wpad.local.machine.location:port number
6 голосов
/ 29 апреля 2009

Длинный выстрел, но попробуйте установить прокси на "" (пустая строка), что должно переопределить любые настройки прокси в соответствии с man-страницей.

5 голосов
/ 30 августа 2018

Это работает просто отлично, установите строку прокси на ""

curl -x "" http://www.stackoverflow.com
5 голосов
/ 12 мая 2014

Вы должны использовать $no_proxy переменную env (в нижнем регистре). Пожалуйста, обратитесь к https://wiki.archlinux.org/index.php/proxy_settings за примерами.

Также давно была ошибка в curl http://sourceforge.net/p/curl/bugs/185/, возможно, вы используете древнюю версию curl, которая включает эту ошибку.

4 голосов
/ 20 октября 2017

Добавьте ваши настройки прокси в .curlrc

proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1

При этом все домены dev и запрос локального компьютера игнорируют прокси.

0 голосов
/ 06 марта 2019

В моем случае (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...