Выполнение 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
если бы я знал, что я всегда буду использовать прокси.
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>
Для туннелей http-прокси (необходимых для протокола TLS) нужно указать -p (он же --proxytunnel) вместо -x.
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/