Выполнение HTTP-запросов с помощью cURL (с использованием PROXY)

У меня есть этот прокси-адрес: 125.119.175.48:8909

Как я могу выполнить HTTP-запрос, используя cURL, как curl http://www.example.com, но указав адрес прокси моей сети?

19 ответов

Решение

Общий способ:

export http_proxy=http://your.proxy.server:port/

Затем вы можете подключиться через прокси из (многих) приложений.

И, согласно комментарию ниже, для https:

export https_proxy=https://your.proxy.server:port/

От man curl:

-x, --proxy <[protocol://][user:password@]proxyhost[:port]>

     Use the specified HTTP proxy. 
     If the port number is not specified, it is assumed at port 1080.

Вышеуказанные решения могут не работать с некоторыми версиями curl, которые я пробовал для себя (curl 7.22.0). Но то, что работало для меня, было:

curl -x http://proxy_server:proxy_port --proxy-user username:password -L http://url

Надеюсь, это решит проблему лучше!

Помните, что если вы используете прокси-сервер SOCKS вместо HTTP/HTTPS-прокси, вам нужно будет использовать --socks5 вместо этого:

curl --socks5 125.119.175.48:8909 http://example.com/

В качестве дополнения к airween, еще одна хорошая идея - добавить это в ваш.bashrc, чтобы вы могли переключаться с непрокси-среды на прокси-среду:

alias proxyon="export http_proxy='http://YOURPROXY:YOURPORT';export https_proxy='http://YOURPROXY:YOURPORT'"
alias proxyoff="export http_proxy='';export https_proxy=''"

WHERE YOURPROXY: YOURPORT это именно то, ваш IP и прокси порта:-).

Затем просто делать

proxyon

ваша система начнет использовать прокси, и наоборот:

proxyoff

Используйте следующее

curl -I -x 192.168.X.X:XX http://google.com

192.168.X.X:XX поставь свой прокси сервер ip и порт.

-v В подробном режиме он даст больше подробностей, включая заголовки и ответ.

Мне нравится использовать это для того, чтобы получить IP, под которым я вижу

curl -x http://proxy_server:proxy_port https://api.ipify.org?format=json && echo

Надеюсь, это кому-нибудь поможет.

Ты можешь использовать:

curl http://www.example.com --proxy http://125.119.175.48:8909

как объяснил Карл

За curl вы можете настроить прокси в своем ~/.curlrc файл путем добавления proxy значение, синтаксис:

proxy = http://username:password@proxy-host:port
C:\Desktop>curl --head https://www.google.com/ --proxy 1.1.1.1:8080

Просто суммируя все замечательные ответы:

curl -x http://<user>:<pass>@<proxyhost>:<port>/ -o <filename> -L <link>

С прокси с аутентификацией я использую:

curl -x <protocol>://<user>:<password>@<host>:<port> --proxy-anyauth <url>

потому что я не знаю, почему curl не использует / перехватывает переменные среды http[s]_proxy.

Вам не нужно экспортировать http[s]_proxy переменная оболочки, если вы просто устанавливаете прокси для одной команды off. например

http_proxy=http://your.proxy.server:port curl http://www.example.com

Тем не менее, я бы предпочел curl -x если бы я знал, что я всегда буду использовать прокси.

curl -vv -k https://example.com -x http://<proxy>:<port>
sudo curl -x http://10.1.1.50:8080/ -fsSL https://download.docker.com/linux/ubuntu/gpg

Это отлично сработало для меня, ошибка возникает из-за того, что curl нужно установить прокси

Помните, замените прокси своим прокси, мой "пример" был http://10.1.1.50:8080/.

В зависимости от вашего рабочего места вам также может понадобиться указать -k или --insecure опция для curl, чтобы избежать потенциальных проблем с сертификатами CA.

curl -x <myCompanyProxy>:<port> -k -O -L <link to file to download>
      curl -x socks5://username:password@ip:port example.com

Для туннелей http-прокси (необходимых для протокола TLS) нужно указать -p (он же --proxytunnel) вместо -x.

curl пост про прокси

tl;dr прокси-туннель использует более новое ключевое слово «CONNECT» вместо модифицированного «GET».

Это было необходимо для библиотеки node http-proxy-middleware.

Я понял это только после того, как использовал wget, который работал из коробки.

В случае, если прокси использует автоматический прокси с файлом PAC. Мы можем найти фактический прокси из javascript из URL PAC.

И если прокси-сервер нуждается в аутентификации, мы можем сначала использовать обычный веб-браузер для доступа к сайту, который будет продвигать диалог аутентификации. После аутентификации мы можем использовать wireshark для захвата http-посылок на прокси-сервер, из http-пакета мы можем получить токен аутентификации из заголовка http: Proxy-Authorization

Затем мы можем установить переменную среды http_proxy, а также включить токен аутентификации в заголовок http: Proxy-Authorization

экспорт http_proxy = http://proxyserver:port

curl -H "Proxy-Authorization: xxxx" http://targeturl/

Другие вопросы по тегам