Если вы ищете инструмент, который позволяет одновременно тестировать прокси и собирать данные с сайтов, вы попали по адресу. cURL — это инструмент командной строки, с помощью которого можно тестировать прокси и выполнять базовый веб-скрейпинг. Интуитивно понятный и простой в освоении, cURL также позволяет отправлять запросы, добавлять файлы cookie, отлаживать работу и подключаться к прокси, а также выполнять другие задачи.
Это пошаговое руководство расскажет, что такое cURL, как использовать различные команды, как применять его для простого веб-скрейпинга и как работать с cURL через прокси-серверы. Руководство может показаться немного сложным, поэтому перед чтением убедитесь, что вы понимаете, что такое прокси. Также вам пригодятся базовые знания о веб-скрейпинге.
Содержание
- Что такое cURL?
- Как установить cURL
- Как использовать cURL
- Как использовать cURL с прокси-серверами
- 7 важных хитростей и советов
- Curl и Wget
- Заключение
Что такое cURL?
cURL — сокращение от «client URL» — это инструмент командной строки для передачи данных через интернет. Он включает в себя командную строку curl.exe и кроссплатформенную библиотеку под названием libcurl, которая обеспечивает обмен данными между серверами.
cURL совместим с различными современными операционными системами, использующими интернет-протоколы, и работает на устройствах от ноутбуков до автомобилей. Он поддерживает множество интернет-протоколов, например:
- DICT
- FILE
- FTP
- FTPS
- GOPHER
- HTTP
- HTTPS
- IMAP
- IMAPS
- LDAP
- LDAPS
- MQTT
- POP3
- POP3S
- RTSP
- SCP
- SFTP
- SMB
- SMBS
- SMTP
- SMTPS
- TELNET
- TFTP
Большое сообщество разработало различные инструменты для cURL, в том числе curl-loader — инструмент с открытым исходным кодом для тестирования производительности программного обеспечения в Linux. Curl-loader может имитировать поведение приложений многочисленных FTP/FTPS- и HTTP/HTTPS-клиентов. Один процесс curl-loader может поддерживать от 2,500 до 100,000 виртуальных клиентов, каждому из которых назначен уникальный исходный IP-адрес.
Происхождение cURL
История cURL началась в 1990-х годах, когда инструменты командной строки были широко распространены. В 1996 году шведский разработчик Даниэль Стенберг начал работу над скриптом для комнаты интернет-ретрансляционного чата (IRC), который конвертировал валюты для участников чата. Это привело его к участию в разработке инструмента под названием httpget — популярного метода HTTP для передачи данных через серверы. Эксперименты Стенберга привели к созданию httpget 0.1, состоявшего «менее чем из 300 строк одного файла на языке C».
Через несколько месяцев появились протоколы передачи файлов (FTP), и Стенберг добавил поддержку FTP в свой инструмент, переименовав его в urlget 2.0. 30 марта 1998 года он добавил поддержку загрузки файлов по FTP и снова переименовал инструмент — на этот раз в cURL 3.0.
Хотя cURL обладал большим потенциалом, поначалу он привлёк мало внимания. В 1998 году, после 15 обновлений и повторных выпусков, с сайта Стенберга cURL скачали более 300 раз. Позже в том же году cURL был включён в Red Hat Linux, в 1999 году — в Debian, а в августе 2001 года — в Mac OS X 10.1. Начиная с 2001 года cURL стал стандартной функцией почти во всех программах с подключением к интернету, включая Windows 10, устройства iOS и Android, Sony PS5, Nintendo Switch, Xbox и даже автомобили.
Зачем использовать cURL?
cURL популярен среди разработчиков благодаря способности эффективно выполнять сложные операции. Его универсальность, возможность написания скриптов и встроенная библиотека позволяют легко интегрировать его с другими программами без необходимости писать собственный код для разбора HTTP и работы с сетью.
cURL предлагает множество преимуществ, таких как:
- Возможность тестирования и отладки конечных точек
- Подробная информация об отправленных и полученных данных
- Подробное журналирование ошибок
- Поддержка широкого спектра протоколов
- Совместимость с http2, Metalink, gzip, автоматической распаковкой и Content-Encoding
- Расширенные функции, такие как загрузка по FTP, файлы cookie, аутентификация пользователей, поддержка прокси, SSL-соединения и многое другое
- Автоматическое переключение протокола, если протокол по умолчанию не работает
- Синтаксис URL, зависящий от протокола
- Возможность ограничения скорости
- Возможность указать части URL или несколько URL с помощью круглых скобок (например, https://google.{one, two, three}.com)
- Возможность указать любое количество URL через командную строку
Кроме того, разработчики ценят проверку SSL-сертификатов и поддержку HTTPS, предусмотренные в cURL по умолчанию. Когда cURL подключается к серверу через HTTPS, он получает сертификат сервера и сравнивает его с сертификатом CA, чтобы убедиться в подлинности удалённого сервера.
Как установить cURL
Давайте разберёмся, как установить cURL на компьютер.
macOS
Устанавливать cURL на macOS не нужно, так как он уже входит в состав операционной системы. Вы можете использовать его прямо в приложении «Терминал».
Windows
Начиная с Windows 10, операционная система включает копию cURL. Однако команда cURL служит псевдонимом для команды PowerShell Invoke-WebRequest. Поэтому при выполнении команд cURL в терминале Windows в фоновом режиме запускается Invoke-Request. Чтобы использовать именно cURL, замените «curl» на «curl.exe», и PowerShell запустит cURL, а не Invoke-Request.
Например, чтобы проверить текущую версию cURL, установленную на компьютере с Windows, введите в терминале следующую команду:
curl.exe --versionРезультат должен выглядеть примерно так:
curl 7.83.1 (Windows) libcurl/7.83.1 Schannel Release-Date: 2022-05-13 Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS HSTS IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI UnixSocketsЕсли вы хотите узнать больше о cURL и Windows, рекомендуем посмотреть это видео. Вы узнаете, что такое cURL, как запустить его в Windows и как выполнять с помощью cURL API-запросы GET, POST, PUT и DELETE.
Linux
Для пользователей Linux процесс установки cURL зависит от конкретного дистрибутива. В популярных дистрибутивах, таких как Ubuntu и Fedora, cURL уже установлен, поэтому его можно сразу использовать в терминале.
В дистрибутивах, в которых cURL не включён по умолчанию, его можно установить с помощью менеджера пакетов. Например, в операционных системах на базе Debian для установки cURL используйте следующую команду:
sudo apt-get install curlКак использовать cURL
Убедитесь, что cURL установлен на вашем устройстве. Перед использованием cURL убедитесь, что он установлен в вашей системе. Если это не так, скачайте его с сайта cURL.
A. Проверка установки cURL на устройстве
Чтобы проверить, установлен ли cURL в вашей системе, выполните следующие действия:
- На компьютере с Windows или MacBook откройте командную строку или терминал PowerShell.
- Введите
'curl --version' - Нажмите Enter.
Если cURL установлен на вашем устройстве, вы получите сообщение, похожее на это:
curl --version curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL Release-Date: 2017-11-14, security patched: 2020-11-05 Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSLИЛИ
curl --version curl 7.31.0 (x86_64-apple-darwin12.4.0) libcurl/7.31.0 OpenSSL/0.9.8x zlib/1.2.5 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Features: IPv6 Largefile NTLM NTLM_WB SSL libzЕсли вы видите другое сообщение, это означает, что cURL не установлен на вашем устройстве и его необходимо установить.
B. Выбор подходящего синтаксиса cURL
По умолчанию cURL использует протокол HTTP со следующим синтаксисом: cURL [options] [URL]
Поскольку cURL поддерживает несколько протоколов, синтаксис может немного отличаться для каждого из них. Вот несколько примеров команд cURL для разных сетевых протоколов:
- Протокол передачи файлов (FTP): cURL -T “selected file” “ftp://[target-destination]”
- Простой протокол передачи почты (SMTP): cURL smtp://[smtp-server] –mail-from [sender] –mail-rcpt [recipient] –upload-file [mail-content-file]
- Сетевой протокол словаря [DICT]: cURL “dict://dict.org/d:hi”
Для эффективной работы с cURL важно знать, с какими сетевыми протоколами вы будете работать.
C. Использование подходящего синтаксиса cURL для решения ваших задач
С помощью cURL можно выполнять различные задачи, например скачивать и загружать файлы или обрабатывать аутентификацию пользователей. Для каждой задачи требуется свой синтаксис cURL, главным образом из-за особенностей используемых параметров и сетевых протоколов.
Вот несколько распространённых задач и соответствующие им команды cURL:
- Чтобы скачать файл: curl -o [file name] [URL]
- Чтобы загрузить файл с помощью протокола FTP: curl -u [Username:Password] -T [local-file-path] ftp://[URL]
- Чтобы запросить заголовки HTTP: curl -I [URL]
Как использовать cURL для простого скрейпинга
cURL можно использовать для простого веб-скрейпинга в сочетании с языком программирования, например PHP.
Перед началом скрейпинга обязательно ознакомьтесь с файлом robots.txt целевого сайта. Соблюдайте его правила, даже если они кажутся нелогичными: владельцы сайтов вправе устанавливать параметры и ограничения. Соблюдение правил файла robots.txt при обходе сайтов считается стандартной практикой, а их нарушение может привести к юридическим последствиям.
С учетом этого рассмотрим, как использовать cURL для простого веб-скрейпинга.
Чтобы начать скрейпинг, выполните следующие действия:
- Выберите язык программирования для скрейпинга, например PHP. В этом руководстве мы будем использовать PHP.
- Создайте новый файл PHP.
- Инициализируйте дескриптор cURL с помощью curl_init.
$curl = curl_init - Установите для CURLOPT_RETURNTRANSFER значение TRUE, чтобы передаваемая страница возвращалась в виде строки. Эта команда указывает cURL сохранить собранную страницу в переменной, а не отображать её целиком по умолчанию: curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
- Выполните запрос и проверьте наличие ошибок:
$page = curl_exec($curl);if(curl_errno($curl)) // check for execution errors { echo 'Scraper error: ' . curl_error($curl); exit; } - Закройте соединение:
curl_close($curl);
Чтобы извлечь только определённую часть информации, укажите, что именно нужно извлечь, в id=”case_textlist”. По умолчанию cURL извлекает всю страницу:
$regex = '<div id="case_textlist">(.*?)</div>/s'; if (preg_match($regex, $page, $list)) echo $list[0]; else echo "Not found";Чтобы обработать сайт через прокси-сервер на PHP, можно использовать библиотеку cURL. Ниже приведён пример PHP-скрипта, который получает веб-страницу через прокси-сервер:
Код PHP:
<?php // Set the URL to fetch $url = "http://www.example.com"; // Set the proxy server and port $proxy = "proxy.example.com:8080"; // Create a new cURL resource $ch = curl_init(); // Set the cURL options curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Fetch the URL and output the response $response = curl_exec($ch); echo $response; // Close the cURL resource curl_close($ch); ?>В приведённом выше скрипте можно изменить переменную $url, указав URL сайта, который нужно обработать, а также изменить переменную $proxy, указав адрес и порт прокси-сервера, который вы хотите использовать. Функция curl_setopt() задаёт параметры cURL, включая URL и прокси-сервер, а также указывает возвращать ответ в виде строки, а не выводить его напрямую. Затем функция curl_exec() получает URL, а ответ выводится с помощью echo. Функция curl_close() закрывает ресурс cURL.
В видео ниже вы узнаете, как создать скрейпер прокси-серверов: загрузить URL-адреса веб-сайта с помощью cURL и сопоставить их с регулярными выражениями.
Как использовать cURL для расширенного скрейпинга
Ниже приведены усовершенствованные настройки cURL, которые помогут оптимизировать сеансы веб-скрейпинга.
Подзаголовок: добавление User-Agent
При загрузке или скрейпинге ссылок с помощью cURL он представляется сайту как cURL. В некоторых случаях это нежелательно, поскольку определённые сайты могут распознать cURL как бота и заблокировать его.
Чтобы обойти это ограничение, добавьте User-Agent с помощью параметра -A или –user-agent. В этом примере мы используем User-Agent Firefox 65 в Windows 10:
curl -x https://fineproxy.de/ -v -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"Также можно передать User-Agent в заголовке с помощью параметра -H:
curl -x https://fineproxy.de/ -v -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"Подзаголовок: настройка заголовков
При скрейпинге сайта важно не выглядеть ботом. Многие сайты теперь блокируют ботов, пытающихся извлечь их данные, поскольку боты могут перегрузить сервер и ухудшить качество обслуживания пользователей.
Для этого нужно передавать подходящие заголовки с помощью cURL.
Сначала определите заголовки, которые обычно отправляются на целевой сайт: щёлкните правой кнопкой мыши и выберите «Просмотреть код». Затем перейдите на вкладку «Сеть». Обновите целевой сайт — появятся запросы, выполняемые во время его загрузки. Чтобы подробнее изучить запрос, можно также щёлкнуть по нему правой кнопкой мыши и скопировать его как команду cURL.
Затем настройте заголовки в cURL с помощью параметра -H или –header. Например, вот как отправить целевому сайту заголовок “Accept”:
curl -x https://fineproxy.de/ -v -H "Accept: text/html"Как использовать cURL с прокси-серверами
Использование cURL с прокси-сервером позволяет решать самые разные задачи, например собирать данные с сайтов, где прокси необходим, чтобы избежать блокировок и запретов. В этом руководстве вы узнаете, как отправлять данные через прокси-сервер с помощью cURL.
Выполните следующие действия, чтобы использовать cURL с прокси:
1. Настройте прокси-сервер
Сначала настройте прокси в соответствии с инструкциями поставщика прокси. Чтобы проверить правильность настройки прокси, введите в терминале следующую команду:
curl https://httpbin.org/ipЭта команда возвращает IP-адрес вашего устройства. Если значения совпадают с исходным IP-адресом вашего устройства, значит, прокси-сервер настроен неправильно. Если они различаются, прокси-сервер настроен верно.
2. Настройте прокси для работы с командами cURL
Настроить прокси для использования с cURL можно тремя способами:
A. Использование файла конфигурации (.curlrc)
Файл конфигурации — это текстовый файл с нужными вам настройками, сохранённый в формате файла .curlrc в системном каталоге для быстрого доступа при выполнении команд cURL.
Файл конфигурации прокси содержит данные в следующем формате:
proxy = "[protocol://][host][:port]"В файл можно сохранить несколько параметров конфигурации и активировать их по мере необходимости. Перед выполнением команд cURL откройте файл, и все выполняемые вами команды cURL будут использовать настройки прокси из файла конфигурации.
Создание файла конфигурации — лучший способ для тех, кто часто использует cURL с прокси и извлекает большие объёмы данных. Это экономит время, избавляя от необходимости каждый раз настраивать прокси для cURL.
B. Использование аргументов командной строки
Этот способ подходит для разового использования прокси с командами cURL, поскольку для него достаточно указать синтаксис прокси непосредственно в команде cURL. Синтаксис выглядит так:
curl -x "[protocol://][host][:port]" [URL] [options]Поскольку в cURL по умолчанию используется протокол HTTP, необходимо указать протокол и данные прокси-сервера, особенно если вы используете другой сетевой протокол.
C. Использование переменных среды
Третий способ заключается в задании переменных http_proxy и https_proxy, известных как переменные среды, которые влияют на процессы, работающие на системном уровне. Эти команды относятся к операционной системе и могут переопределять другие параметры.
Синтаксис настройки прокси для cURL с помощью переменных среды выглядит так:
export http_proxy="[protocol://][host][:port]" export https_proxy="[protocol://][host][:port]"После выполнения этих команд все выполняемые вами команды cURL будут автоматически проходить через прокси-сервер. Теперь подробнее рассмотрим этот способ.
Использование cURL с прокси через переменные среды
Переменная среды похожа на объект, который хранит в памяти изменяемое значение, используемое одной или несколькими программами. В этом случае мы можем передать cURL переменную с именем http_proxy или https_proxy, содержащую данные нашего прокси, и нам не потребуется указывать их каждый раз при запуске команды. Для этого выполните следующую команду:
$ export http_proxy="http://fineproxy.proxy_type=datacenter.device=desktop:<YOUR-API-KEY>@proxy.fineproxy.de:80"Обратите внимание: переменную необходимо назвать http_proxy или https_proxy, чтобы cURL мог её распознать. Вот и всё. Теперь вам не нужно указывать учётные данные при каждом запуске команды, и вы можете запускать cURL так же просто, как здесь:
$ curl http://httpbin.org/getВ ответ мы получим следующие данные:
{ "args": {}, "headers": { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8", "Accept-Encoding": "gzip, deflate, br", "Host": "httpbin.org", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-633bf912-66ace1104304ddaf5ea8ac65" }, "origin": "132.255.134.104", "url": " http://httpbin.org/get" }Как видите, IP-адрес принадлежит прокси, что подтверждает правильность настройки. Теперь мы можем выполнять любые команды cURL, не указывая данные прокси, поскольку cURL сделает это за нас.
7 важных хитростей и советов
В этом разделе мы расскажем о нескольких полезных хитростях и ценных советах по использованию прокси с cUrl с учетом ваших конкретных потребностей.
Совет 1: Настройка прокси исключительно для cUrl
Чтобы назначить прокси только для задач на основе cUrl, выполните следующие команды:
cd ~ $ nano .curlrc- Добавьте эту строку в файл:
proxy=http://user:pwd@IP_address_or_FQDN:portПример:
proxy=http://testuser:[email protected]:3128- Запустите cUrl как обычно:
$ curl " https://www.reddit.com"Совет 2: Включение и отключение прокси
Для этого создайте псевдоним в файле .bashrc с помощью редактора:
$ cd ~alias proxyon="export http_proxy=' http://user:pwd@Proxy_IP_or_FQDN:Port';export https_proxy=' http://user:pwd@Proxy_IP_or_FQDN:Port'"alias proxyoff="unset http_proxy;unset https_proxy"Пример:
alias proxyon="export http_proxy=' http://testuser:[email protected]:3128';export https_proxy=' http://testuser:[email protected]:3128'"Быстро проверьте настройку псевдонима, выполнив команду alias в терминале. Сохраните файл .bashrc и обновите оболочку с помощью:
$ ~/.bashrcСовет 3: Игнорирование ошибок SSL-сертификатов
Когда cUrl сталкивается с ошибками SSL-сертификатов, он блокирует такие запросы. Чтобы «игнорировать» ошибки SSL-сертификатов при отладке, особенно в разовых случаях, добавьте -k или –insecure в командную строку cUrl:
curl -x "[protocol://][host][:port]" -k [URL]Совет 4: Получение дополнительной информации о запросе
Если запросы выполняются не так, как ожидалось, возможно, вам понадобится изучить путь запроса, заголовки и различные ошибки. Чтобы исследовать запрос, добавьте -v (–verbose) после cUrl в командной строке запроса. Это выведет все заголовки запроса и сведения об установленных соединениях.
Совет 5: Игнорирование прокси для одного запроса
Чтобы отключить прокси для конкретного запроса, используйте следующую команду:
curl --proxy " http://user:pwd@Proxy_FQDN_or_IPAddress" " https://reddit.com"Или используйте:
$ curl --noproxy "*" https://www.reddit.comЧтобы полностью обойти прокси. Параметр -v покажет, что соединение устанавливается напрямую с Reddit, без использования прокси.
Совет 6: Использование SOCK-прокси
Если вы хотите использовать прокси любого типа SOCK (4/4a/5/5h), структура кода останется прежней, кроме того, что нужно заменить соответствующий раздел на подходящий тип SOCKS:
curl -x "socks5://user:pwd@Proxy_IP_or_FQDN:Port" https://www.reddit.comПример:
$ curl -x "socks5://testuser: [email protected]:3128" https://www.reddit.comСовет 7: Если протокол не указан, cURL по умолчанию использует SOCKS4!
cURL и Wget
Wget — это инструмент командной строки с множеством функций, позволяющих передавать файлы с использованием стандартных сетевых протоколов, таких как HTTP, HTTPS и FTP. Его название образовано из первой буквы WWW и слова «get», что отражает тот факт, что Wget изначально был создан преимущественно для обмена данными в интернете.
Стандартный синтаксис команд Wget:
Wget [option] [URL]Команды Wget похожи на команды cURL: они выполняют сходные функции, но по-разному.
5 сходств между cURL и Wget
- Оба являются утилитами командной строки, которые могут скачивать файлы по FTP, HTTP или HTTPS и поддерживают HTTP POST-запросы.
- Оба являются программами с открытым исходным кодом.
- И cURL, и Wget появились в одном и том же году — в 1996 году.
- У обоих схожие лицензии — GPLv3.
- Оба представляют собой легковесные программные пакеты, работающие в нескольких операционных системах.
10 различий между cURL и Wget
Главное различие между cURL и Wget заключается в том, как эти утилиты выполняют запросы и какие ресурсы используют для достижения своих целей. В таблице ниже приведены эти различия:
| cURL | Wget | |
|---|---|---|
| 1. Библиотека | Работает с библиотекой libcURL | Библиотека не требуется |
| 2. Операции | Передаёт данные за одну операцию, рекурсивное скачивание не поддерживается | Поддерживает рекурсивное скачивание |
| 3. Протоколы | Поддерживает широкий спектр сетевых протоколов | Поддерживает только HTTP(S) и FTP |
| 4. Скачивание | Для скачивания удалённого URL в локальный файл требуются параметры -o или -O | Для скачивания удалённого URL параметры -o или -O не нужны |
| 5. Загрузка | Может загружать и передавать данные в обоих направлениях | Поддерживает только простые HTTP POST-запросы |
| 6. Прокси | Поддерживает прокси типов HTTPS, SOCKS 4 и SOCKS 5 | Поддерживает HTTP-прокси, но не прокси типов SOCKS |
| 7. Аутентификация | Поддерживает дополнительные методы аутентификации для HTTP-прокси | Поддерживает только базовые методы аутентификации для HTTP-прокси |
| 8. Переносимость | Более портативен и предустановлен в Windows и macOS | Менее портативен и не предустановлен в Windows и macOS |
| 9. Функции | Каждую функцию необходимо указывать явно | Такие функции, как обработка файлов cookie и временных меток, включены по умолчанию |
| 10. Требования | Не требует пакета gnulib или компилятора C99 | Требует gnulib и компилятор C99Когда использовать cURL или Wget |
В большинстве случаев cURL — лучший выбор, однако бывают ситуации, когда Wget подходит больше. Вам нужно определить, какая из этих утилит командной строки поможет быстрее и эффективнее выполнить ваши задачи. Например:
- Wget лучше, чем cURL, справляется с повторными попытками скачивания при нестабильном соединении.
- Wget предоставляет такие возможности скачивания, как полноценная рекурсивная загрузка и управление пропускной способностью, которых нет у cURL.
Поэтому в таких ситуациях лучше использовать команды Wget. Кроме того, если используется сетевой протокол, отличный от HTTP/HTTPS и FTP, лучше выбрать cURL. Выбор между cURL и Wget всегда зависит от особенностей выполняемых задач.
Заключение
Команды cURL — это мощные и универсальные инструменты для всех, кому необходимо передавать большие объёмы данных по сети. Использование cURL с прокси — полезное улучшение, которое позволяет выполнять практически любые задачи. Такое сочетание обеспечивает конфиденциальность и безопасность данных, не лишая команды cURL универсальности. Хотя Wget обладает широкими возможностями, cURL предпочтительнее благодаря удобному интерфейсу и мощному функционалу.
Учитывая всё сказанное выше, возможно, вы захотите попробовать впечатляющие возможности cURL. Если вы ещё не думали об этом, самое время. Оставайтесь на cURL-волне (каламбур намеренный).
