curl
Назначение
Функции curl и textcontent (синоним) позволяют загружать данные веб-страницы по указанному URL в виде простого текста.
Функция curl работает совместно с встроенным компонентом PolyAnalyst для загрузки веб-страниц. Веб-страница по указанному URL сначала загружается на сервер PolyAnalyst. При загрузке файлов типа mime text/html PolyAnalyst автоматически распознает полезный контент и очищает его от HTML-тегов.
Синонимом функции curl является функция textcontent.
Аргументы
Функция curl принимает один аргумент: — URL в виде строки в двойных кавычках, например:
Для использования именованного аргумента postdata вам необходимо знать HTTP и метод запросов POST для загрузки веб-страниц.
Если аргумент postdata не задан, используется GET-запрос. В противном случае используется POST-запрос, который составляется в определенном формате. POST-запрос содержит компоненты URL-запроса, например val1=a&val2=b. Если аргумент postdata указан, PolyAnalyst выполнит POST-запрос по указанному URL и отправит данные из этого аргумента на сервер. Такой метод удобно использовать, например, для представления заполненной веб-формы. POST-запросы более удобны, а иногда абсолютно необходимы, например, при передаче большого количества данных в теле запроса к веб-странице.
Функция curl также использует ряд именованных параметров:
-
auth_xxx - различные комбинации флагов для ssh:// соединений:
-
auth_any - libcurl подбирает нужную битмаску из auth_publickey, auth_password, auth_keyboard и auth_keyboard;
-
auth_publickey - битмаска для константы publickey;
-
auth_password- битмаска для константы password;
-
auth_keyboard- битмаска для keyboard;
-
auth_agent - libcurl пытается подключиться к ssh-агенту или pageant и предоставляет агенту возможность попытки аутентификации;
-
-
connect_timeout - таймаут установления соединения; по умолчанию значение берется из настроек сервера;
-
cookies - куки, передающиеся в запрос, через точку с запятой, например extdebug=0; sid=6383038353749804524; underdev=1;
-
follow_location - длинный параметр, имеющий значение 1, выполняет переадресацию заголовка Location, который сервер отправляет как часть заголовка HTTP при ответе 3xx. Заголовок Location может указать относительный или абсолютный URL для переадресации.
-
headers - любые заголовки запроса, например content-type: application/json;
-
http_xxx - различные комбинации флагов:
-
http_basic - базовая аутентификация; выбирается по умолчанию; используется и поддерживается практически повсеместно; отправляет имя пользователя и пароль по сети в виде простого текста;
-
http_digest - дайджест-аутентификация HTTP; дайджест-аутентификация определяется в RFC 2617 и является более безопасным способом аутентификации в публичных сетях по сравнению с традиционным методом базовой аутентификации;
-
http_digest_ie - дайджест-аутентификация HTTP с IE ; дайджест-аутентификация определяется в RFC 2617 и является более безопасным способом аутентификации в публичных сетях по сравнению с традиционным методом базовой аутентификации. Добавление IE приводит к тому, что libcurl использует особую хитрость, которая использовалась в IE до 7 версии и которая требуется от некоторых клиентов;
-
http_bearer - аутентификация HTTP по токену Bearer, которая используется в основном в протоколе OAuth 2.0;
-
http_negotiate - аутентификация HTTP Negotiate (SPNEGO); negotiate-аутентификация определяется в RFC 4559 и является наиболее безопасным способом аутентификации по HTTP;
-
http_ntlm - аутентификация HTTP NTLM; протокол, разработанный и используемый Microsoft. Во избежание перехвата пароля используется аутентификация с запросом и ответом и хеширование, похожие на дайджест-аутентификацию;
-
http_ntlm_wb - аутентификация NTLM с помощью хелпера winbind. Аутентификация выполняется отдельным бинарным приложением, которое запускается при необходимости. Имя приложения определяется на этапе компиляции, обычно это /usr/bin/ntlm_auth;
-
http_any - вспомогательный макрос, устанавливающий все биты, при этом libcurl выбирает нужный бит. libcurl автоматически выбирает наиболее безопасный;
-
http_anysafe - вспомогательный макрос, устанавливающий все биты, кроме Basic, при этом libcurl выбирает нужный бит. libcurl автоматически выбирает наиболее безопасный;
-
http_only - метасимвол. ИЛИ это значение вместе со значением единичной специальной аутентификации приводит к тому, что libcurl пытается выполнить неограниченную аутентификацию, и при неудачной попытке принимается только этот алгоритм с единичной аутентификацией;
-
-
insecure - определяет необходимость использования сертификата с HTTPS:
-
если значение аргумента yes, то использование защищенного протокола HTTPS не требует правильного сертификата
-
-
keepcookies - передает куки между вызовами curl. В аргументе указывается имя куки-контейнера в проекте;
-
maxredirs - устанавливает максимальное количество принимаемых редиректов;
-
password - устанавливает пароль для аутентификации, завершающееся нулевым символом;
-
postdata - любые данные запроса, которые передаются не в командной строке. Запрос автоматически становится POST-запросом;
-
raw - определяет необходимость извлечения дополнительных данных (помимо текстовых):
-
если значение аргумента no, то функция возвращает только текстовые данные; этот аргумент полезен при скачивании страниц с Интернета;
Параметр raw по умолчанию установлен для функции textcontent со значением raw:=no, а для функции curl - со значением raw:=yes.
-
-
transfer_timeout - таймаут передачи данных, по умолчанию значение берется из настроек сервера;
-
usepost - определяет, какой запрос использовать, POST или GET:
-
если значение аргумента yes, то делается запрос POST, а не GET;
-
-
username - устанавливает имя пользователя для аутентификации, завершающееся нулевым символом;
-
userpassword - устанавливает детали учетной записи для соединения в формате [user name]:[password];
-
xoauth2_bearer - задает токен доступа OAuth 2.0 Bearer Access Token для использования с серверами HTTP, IMAP, POP3 и SMTP, поддерживающими фреймворк авторизации OAuth 2.0.
Возвращаемое значение
Функция curl возвращает текстовые данные. Возвращаемый тип данных — текст, а не строка, поскольку строки не предназначены для хранения текстовых данных большого объема, а загружаемые веб-страницы могут быть очень большими.
Для загрузки данных из всемирной паутины вы также можете использовать узел Интернет.
Примеры
curl("www.megaputer.ru") возвращает текстовые данные, находящиеся на странице, которая указывается в качестве аргумента функции:
Иллюстративный пример для параметра bearer:
Пример для параметра userpassword:
Пример входа в PolyAnalyst с учетной записью (параметр insecure нужен для того, чтобы игнорировать ошибки с автоматически сгенерированным сертификатом):
Пример выполнения узла Файлы CSV ([Cookies] необходимо предварительно получить при помощи Извлечение терминов из результатов предыдущего запроса); параметр insecure нужен для того, чтобы игнорировать ошибки с автоматически сгенерированным сертификатом:
Иллюстративный пример загрузки файла по FTPS. Используется аутентификация через user agent (pageant, ssh-agent):
Пример использования параметра keepcookies в двух узлах Производные колонки: