В этой публикации мы рассмотрим:
- Что такое cURL
- Установка cURL.
- Что вам понадобится, чтобы начать использовать прокси-серверы
- Как указать прокси-сервер HTTP/HTTPS в cURL.
- Как настроить прокси-сервер SOCKS в cURL.
- Необходимые советы и рекомендации
- Какие прокси-серверы лучше всего подходят для cURL?
Что такое cURL?
cURL, сокращенно от «URL-адрес клиента» (Client URL), представляет собой инструмент для отправки и получения данных через Интернет с использованием URL-адресов. В качестве программного проекта он предоставляет библиотеку (libcurl
) и инструмент командной строки (curl
). Здесь речь пойдет о curl
, инструменте командной строки для передачи данных с помощью синтаксиса URL.
Проект поддерживает широкий спектр протоколов, включая HTTP, HTTPS, FTP, FTPS, SFTP, POP3, POP3S, IMAP, IMAPS, LDAP, LDAPS, SCP и другие. Это делает curl
самым популярным и широко используемым HTTP-клиентом командной строки в мире.
cURL очень универсален и представляет собой стандартное решение для выполнения различных задач, таких как HTTP-запросы, загрузка файлов, загрузка данных и взаимодействие с API. Он предлагает несколько функций, от настройки запросов до поддержки прокси-серверов.
Установка curl
Давайте теперь узнаем, как установить curl
на вашем компьютере.
macOS
Вам не нужно устанавливать curl
на macOS. Инструмент уже включен в операционную систему, и вы можете по умолчанию использовать его в приложении Terminal.
Windows
Начиная с Windows 10, Windows поставляется с копией curl
. В то же время команда curl
является псевдонимом командлета Invoke-WebRequest
консоли PowerShell. Это означает, что команды curl
в терминале Windows будут незаметно вызывать Invoke-Request
. Чтобы избежать этого и использовать curl
из cURL, замените «curl» на «curl.exe». Таким образом, PowerShell будет запускать curl, а не Invoke-Request
.
Например, вы можете проверить текущую версию curl
, установленную на вашем компьютере под управлением Windows, в терминале с помощью:
curl.exe --version
В результате должно появиться что-то вроде этого:
curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
Release-Date: 2023-03-20
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets
Если вы являетесь пользователем Windows, замените все экземпляры «curl» в командах, содержащихся в статье, на строку «curl.exe». В противном случае настройте подсистему Windows для Linux (WSL) и следуйте приведенным ниже инструкциям.
Linux
В Linux процедура установки curl
меняется в зависимости от используемого дистрибутива. Популярные дистрибутивы, такие как Ubuntu и Fedora, поставляются с Linux по умолчанию. Таким образом, вы можете использовать curl
непосредственно в терминале.
В других дистрибутивах curl
может отсутствовать. В этом случае вы можете добавить его с помощью диспетчера дистрибутивов. В ОС на базе Debian вы можете установить curl с помощью следующей команды:
sudo apt-get install curl
Что нужно для использования прокси-сервера в curl
Прокси-сервер выступает в роли посредника между клиентом и целевым сервером. Он перехватывает запросы клиента, пересылает их на сервер, получает ответы от сервера и отправляет их обратно клиенту. Такой подход посредничества повышает анонимность и помогает избежать сетевых ограничений. Это связано с тем, что целевой сервер будет видеть запросы как исходящие с IP-адреса и из местоположения выбранного прокси-сервера, а не от вас.
Чтобы начать использовать curl с прокси-сервисами, вам сначала нужен доступ к прокси-серверу. В частности, вот синтаксис URL-адреса прокси-сервера:
[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]
Он включает следующее:
<PROTOCOL>
— протокол, используемый для подключения к прокси-серверу. Если протокол не указан, по умолчанию curl будет иметь значение http://.<HOST>
— требуемый IP-адрес или URL-адрес имени хоста прокси-сервера.<PORT>
— номер порта, прослушиваемого прокси-сервером. Если порт не указан, по умолчанию curl будет использовать порт 1080.<USERNAME>
— необязательное имя пользователя, которое нужно указать, когда требуется аутентификация на прокси-сервере.<PASSWORD>
— необязательный пароль, который нужно указать, когда требуется аутентификация на прокси-сервере.
Что касается протоколов прокси-серверов, то наиболее популярными являются HTTP и HTTPS, за которыми следует SOCKS.
Пора получить действительный прокси-сервер HTTP!
Вы можете получить его бесплатно в списке бесплатных прокси-серверов, как показано ниже:
IP Address: 71.19.249.97; Port: 8443
Это означает, что URL-адрес прокси-сервера:
http://71.19.249.97:8443
Бесплатные прокси-серверы подходят для целей обучения, но вы не можете полагаться на них в реальном сценарии. Бесплатные прокси-серверы ненадежны, подвержены ошибкам, медленны, ресурсоемки и недолговечны. Не используйте их!
Решение? Прокси-серверы премиум-класса от Bright Data — лучшего поставщика данных услуг на рынке. Подпишитесь и попробуйте наши надежные прокси-серверы бесплатно.
Имейте в виду, что решения премиум-класса защищены аутентификацией. Предположим, что используется протокол HTTP
, хост — 71.103.203.109
, порт — 9321
, а пара учетных данных — admin-32458
и rTuJ3tEwf
. В этом случае URL-адрес прокси-сервера будет выглядеть следующим образом:
http://admin-32458:@rTuJ3tEwf71.103.203.109:9321
Как указать прокси-сервер HTTP/HTTPS в curl
Прежде чем начать, запустите следующую команду в своем терминале:
curl "https://httpbin.org/ip"
Как вы можете видеть, базовый синтаксис curl
выглядит следующим образом:
curl [optional_commands] <URL>
При использовании curl
рекомендуется заключать URL-адреса в двойные кавычки, чтобы избежать проблем со специальными символами.
Запустите его, и вы получите что-то вроде этого:
{
"origin": "194.33.243.7"
}
Проект HTTPBin позволяет получать информацию о ваших HTTP-запросах. В частности, конечная точка /ip
возвращает исходный IP-адрес запроса, то есть IP-адрес компьютера, выполнившего запрос. Другими словами, он возвращает ваш IP-адрес.
После настройки прокси-сервера в curl
вы должны увидеть IP-адрес прокси-сервера, а не свой.
Есть несколько способов настроить прокси-сервер в curl
. Теперь давайте перейдем к наиболее популярным подходам к указанию прокси-сервера HTTP/HTTPS в curl
.
Использование аргумента командной строки
curl предлагает два аргумента командной строки для установки URL-адреса прокси-сервера:
-x
--proxy
Их можно использовать как синонимы, поскольку они делают одно и то же. Последний аргумент — всего лишь псевдоним первого.
Итак, синтаксис использования curl
с прокси-сервисами выглядит следующим образом:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
Или:
curl --proxy [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
Примечание: параметры командной строки в curl
зависят от регистра. Например, -x
и -X
имеют два разных значения.
Если вы сейчас запустите:
curl -x "http://71.19.249.97:8443" "https://httpbin.org/ip"
Или эквивалент:\
curl --proxy "http://71.19.249.97:8443" "https://httpbin.org/ip"
Вы должны получить:
{
"origin": "71.19.249.97"
}
Источник совпадает с IP-адресом прокси-сервера. Это означает, что целевой сервер, как и ожидалось, воспринимает запрос как исходящий от прокси-сервера. Отлично!
Не забывайте, что бесплатные прокси-серверы недолговечны, поэтому к моменту прочтения этой статьи вышеуказанный сервер вряд ли еще будет жив. В случае ошибки замените его новым прокси-сервером.
Использование переменных среды
Другой способ использования прокси-сервера в curl
заключается в установке следующих двух переменных среды:
http_proxy
: URL-адрес прокси-сервера, который будет использоваться для доступа к URL-адресам, использующим протокол HTTP.https_proxy
: URL-адрес прокси-сервера, который будет использоваться для доступа к URL-адресам, использующим протокол HTTP.
В macOS и Linux вы можете настроить эти две среды, используя следующий синтаксис:
export http_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
export https_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Итак, две команды будут выглядеть следующим образом:
export http_proxy="http://71.19.249.97:8443"
export https_proxy="http://71.19.249.97:8443"
В Windows необходимо использовать следующий синтаксис PowerShell:
$env:http_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
$env:https_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Тогда в нашем примере:
$env:http_proxy = "http://71.19.249.97:8443"
$env:https_proxy = "http://71.19.249.97:8443"
Отныне каждая команда curl
будет проходить через указанные прокси-серверы без необходимости добавлять опцию -x:
Опять же, будет возвращено:
curl https://httpbin.org/ip
{
"origin": "71.19.249.97"
}
Чтобы отключить прокси-серверы curl
, отключите переменные окружения с помощью:
unset http_proxy
unset https_proxy
Или в Windows:
$env:http_proxy = ""
$env:https_proxy = ""
curl
вернется к стандартному поведению, а https://httpbin.org/ip
теперь будет показывать ваш IP-адрес.
Использование файла конфигурации
Можно глобально указать прокси-сервер для curl
, создав файл конфигурации .curlrc
.
В Linux и macOS откройте терминал и перейдите в домашний каталог:
cd ~
Затем войдите в файл .curlrc с помощью nano:
nano .curlrc
Если файл уже существует, он будет открыт. В противном случае сначала он будет создан, а затем открыт.
Добавьте следующую строку в файл .curlrc
:
proxy="http://71.19.249.97:8443"
Синтаксис этой инструкции:
proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
Сохраните файл, закройте терминал и перезапустите его.
В Windows необходимо создать файл _curlrc
в каталоге %APPDATA%
с тем же содержимым. Вставьте %APPDATA%
в адресную строку файлового менеджера и нажмите ENTER для доступа к каталогу.
Это должно привести вас к C:\Users\<YOUR_USER>\AppData\Roaming
.
Теперь curl
будет автоматически использовать прокси-сервер, указанный в файле конфигурации:
curl "http://httpbin.org/ip"
Вы получите:
{
"origin": "71.19.249.97"
}
Фантастика! Вы только что узнали, как использовать curl
с прокси-серверами тремя разными способами!
Как настроить прокси-сервер SOCKS в curl
Если вы хотите использовать прокси-сервер SOCKS, структура команд останется прежней:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>
Основное отличие состоит в том, что <PROTOCOL>
будет выглядеть как socks4
, socks4a
, socks5
или socks5h
вместо http
и https
.
Полный пример прокси-сервера SOCKS curl
в действии:
curl -x "socks5://94.14.109.54:2478" "http://httpbin.org/ip"
Как и следовало ожидать, результат будет следующим:
{
"origin": "94.14.109.54"
}
Альтернативный подход предполагает использование опций командной строки --socks4
, --socks4a
, --socks5
вместо -x. В этом случае вы должны указать URL-адрес прокси-сервера без имени пользователя и пароля после опции, а затем учетные данные после --proxy-user
:
curl --socks4|--socks4a|--socks5 <HOST>[:<PORT>] <URL> --proxy-user <USERNAME>:<PASSWORD>
Например:
curl --socks4 "93.16.238.41:8721" "http://httpbin.org/ip" --proxy-user admin334:kv4NsDgc3
Подключение к HttpBin будет осуществлено через прокси-сервер 93.16.238.41:8721
socks4
с использованием admin334
в качестве имени пользователя и kv4NsDgc3
в качестве пароля для аутентификации.
Необходимые советы и рекомендации
В этом разделе вы найдете интересные приемы и ценные советы по работе с прокси-серверами curl
на профессиональном уровне.
Быстрое включение и выключение прокси
Идея состоит в том, чтобы определить псевдонимы для программной установки и отключения прокси с помощью переменных среды с помощью специальных команд.
В macOS и Linux это можно сделать, создав файл .bashrc
. Это файл сценария, который выполняется при каждом входе пользователя в систему.
Перейдите в домашнюю папку:
cd ~
Затем создайте или откройте файл .bashrc:
nano .bashrc
Добавьте содержимое в файл в следующем формате:
alias proxyon="export http_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]';export https_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]'"
alias proxyoff="unset http_proxy;unset https_proxy"
Таким образом, в нашем примере это будет:
alias proxyon="export http_proxy='http://71.19.249.97:8443';export https_proxy='http://71.19.249.97:8443'"
alias proxyoff="unset http_proxy;unset https_proxy"
Сохраните файл и перезагрузите компьютер.
Теперь вы можете активировать и деактивировать прокси-сервер curl
с помощью:
proxyon
curl "http://httpbin.org/ip"
# other HTTP requests...
proxyoff
Обратите внимание на специальные команды proxyon
и proxyoff
. Они выполняют операции, указанные в псевдонимах в файле .bashrc
.
В Windows вы можете добиться чего-то подобного с помощью псевдонимов PowerShell.
Игнорирование прокси для одного запроса
Если вы хотите запретить curl
использовать настроенный прокси-сервер для определенного запроса, вы можете воспользоваться аргументом --noproxy "*
“, как показано ниже:
curl --noproxy "*" <URL>
Это предписывает curl
не использовать прокси для всех URL-адресов.
Настройте прокси-сервер и запустите его:
curl --noproxy "*" "https://httpbin.org/ip"
Полученный источник будет содержать ваш IP-адрес, а не IP-адрес прокси-сервера.
Как избежать ошибок SSL-сертификата
При использовании прокси-серверов в curl
ваши запросы могут не выполняться из-за ошибок SSL-сертификата. Чтобы избежать этого, используйте опцию -k
, как показано в приведенном ниже синтаксисе:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -k <URL>
-k
помогает избежать ошибок сертификатов, разрешая небезопасные подключения к серверу через SSL.
Например, вы можете связываться с HTTPBin, обходя проблемы с SSL, с помощью следующего:
curl -x "http://71.19.249.97:8443" -k "https://httpbin.org/ip"
Получение дополнительной информации о запросе
Когда запрос в curl
завершается неудачно, понять, что произошло, непросто. Чтобы диагностировать ошибку и просмотреть все операции, выполняемые curl
, установите опцию -v:
curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -v <URL>
В результате будут выведены сведения об установленных соединениях и заголовках, используемых инструментом:
$curl -x "http://71.19.249.97:8443" -v "https://httpbin.org/ip"
* Trying 71.19.249.97:8443...
* Connected to 71.19.249.97 (71.19.249.97) port 8443 (#0)
* allocate connect buffer
* Establish HTTP proxy tunnel to httpbin.org:443
> CONNECT httpbin.org:443 HTTP/1.1
> Host: httpbin.org:443
> User-Agent: curl/8.0.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 OK
<
* CONNECT phase completed
* CONNECT tunnel established, response 200
* schannel: disabled automatic use of client certificate
* ALPN: offers http/1.1
* ALPN: server accepted http/1.1
* using HTTP/1.1
> GET /ip HTTP/1.1
> Host: httpbin.org
> User-Agent: curl/8.0.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sat, 26 Aug 2023 10:39:13 GMT
< Content-Type: application/json
< Content-Length: 31
< Connection: keep-alive
< Server: gunicorn/19.9.0
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
<
{
"origin": "71.19.249.97"
}
* Connection #0 to host 71.19.249.97 left intact
Какие прокси-серверы лучше всего подходят для curl
?
Ответ на этот вопрос зависит от вашего варианта использования и характера запросов curl
, которые вы должны сделать. Чтобы найти подходящее решение для ваших нужд, ознакомьтесь с различными типами доступных прокси-серверов:
- Прокси-серверы центров обработки данных: они быстрые, но сайты могут легко обнаружить и заблокировать их из-за их идентифицируемых диапазонов IP-адресов.
- Резидентные прокси: они гарантируют высокий уровень анонимности, поскольку предлагают IP-адреса, поступающие с реальных устройств в определенных местах. Резидентные прокси-серверы идеально подходят для доступа к сайтам, использующим географические ограничения или меры защиты от ботов, а также для выполнения веб-скрейпинга с помощью curl.
- Прокси-серверы интернет-провайдеров (ISP): они безопасны, быстры и очень надежны, поскольку предоставляют IP-адреса с устройств, зарегистрированных у интернет-провайдеров. Прокси-серверы ISP представляют собой идеальное решение для SEO-мониторинга, просмотра веб-страниц и исследования рынка.
- Мобильные прокси-серверы: они предоставляют IP-адреса с реальных мобильных устройств для обеспечения высокого уровня анонимности. Они полезны для доступа к специально разработанным для мобильных устройств приложениям, сайтам или контенту.
Это был лишь краткий обзор, но вы можете найти дополнительную информацию в нашем руководстве по типам IP-адресов прокси-серверов.
Заключение
В этом руководстве по прокси-серверу curl вы узнали, что такое cURL
, что он может предложить, а также как настроить прокси-сервер HTTP/HTTPS/SOCKS. Как оказалось, нельзя полагаться на работу curl с прокси-серверами от бесплатных поставщиков. Таким образом, основное техническое решение заключается в том, какого поставщика прокси выбрать. Экономьте время и энергию и обращайтесь к Bright Data — лучшей компании на рынке в этой области.
Bright Data управляет лучшими прокси-серверами в мире, обслуживая компании из списка Fortune 500 и более 20 000 клиентов. Ее всемирная сеть прокси-серверов включает в себя:
- Прокси-серверы для центров обработки данных — более 770 000 IP-адресов центров обработки данных.
- Резидентные прокси-серверы — более 72 млн резидентных IP-адресов в более чем 195 странах.
- Прокси-серверы интернет-провайдеров — более 700 000 IP-адресов интернет-провайдеров.
- Мобильные прокси-серверы — более 7 млн мобильных IP-адресов.
В целом, это одна из крупнейших и самых надежных на рынке прокси-сетей, ориентированных на скрейпинг. Присоединяйтесь к крупнейшей прокси-сети и получите бесплатную пробную версию.
Кредитная карта не требуется