curl

Назначение

Функции curl и textcontent (синоним) позволяют загружать данные веб-страницы по указанному URL в виде простого текста.

Функция curl работает совместно с встроенным компонентом PolyAnalyst Grid для загрузки веб-страниц. Веб-страница по указанному URL сначала загружается на сервер PolyAnalyst Grid. При загрузке файлов типа mime text/html PolyAnalyst Grid автоматически распознает полезный контент и очищает его от HTML-тегов.

Синонимом функции curl является функция textcontent.

Синтаксис

curl(строка)

textcontent(строка)

Аргументы

Функция curl принимает один аргумент: — URL в виде строки в двойных кавычках, например:

curl("http://www.megaputer.com").

Для использования именованного аргумента postdata вам необходимо знать HTTP и метод запросов POST для загрузки веб-страниц.

Если аргумент postdata не задан, используется GET-запрос. В противном случае используется POST-запрос, который составляется в определенном формате. POST-запрос содержит компоненты URL-запроса, например val1=a&val2=b. Если аргумент postdata указан, PolyAnalyst Grid выполнит 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") возвращает текстовые данные, находящиеся на странице, которая указывается в качестве аргумента функции:

Megaputer Intelligence — Решения для анализа данных, анализа текста

Главная Поддержка Контакты

Более 500 покупателей, среди которых 20 компаний, входящих в список Fortune 100, а также 8 Федеральных государственных учреждений США, 200 университетов Узнайте, почему для анализа текста и анализа данных эти организации выбрали продукты именно нашей компании. Для IT компании, штат которой насчитывает более 120 000 сотрудников в 60-ти странах проведение комплексного анализа отзывов работников имеет стратегическое значение. Исследования EDS показывают, что опросы в свободной форме обладают большей информативностью, чем формализованные анкеты, но анализ текстовых данных большого объема — сложная задача. Подробнее…​

Иллюстративный пример для параметра bearer:

curl(
    "https://api.twitter.com/1.1/statuses/user_timeline.json?count=100&screen_name=twitterapi",
    http_bearer:=yes,
    xoauth2_bearer:="AAAAAAAAAAAAAAAAAAAAADW5CwAAAAAA5xKDz99HcKaxZ9E93V8btYvYWeU%3DZXih8IO1GDbjRwljX7ts7JI2nTToJdp2yKMKk09av7uCt2BAU7"
)

Пример для параметра userpassword:

curl(
    "https://api.twitter.com/oauth2/token",
    postdata:="grant_type=client_credentials",
    userpassword:="api-token:api-token-secret"
)

Пример входа в PolyAnalyst с учетной записью (параметр insecure нужен для того, чтобы игнорировать ошибки с автоматически сгенерированным сертификатом):

curl(
	"https://localhost:5043/polyanalyst/api/v1.0/login?uname=administrator&pwd=password",
	usepost:=yes,
	insecure:=yes
)

Пример выполнения узла Файлы CSV ([Cookies] необходимо предварительно получить при помощи Извлечение терминов из результатов предыдущего запроса); параметр insecure нужен для того, чтобы игнорировать ошибки с автоматически сгенерированным сертификатом:

curl("https://localhost:5043/polyanalyst/api/v1.0/project/execute",
    postdata:= "{
        ""prjUUID"": ""3A058F7B-2712-49E5-A3E9-FF9C1F6B8C69"",
        ""nodes"": [ { ""type"": ""DataSource"", ""name"": ""CrimeData.csv"" } ]
    }",
    cookies:=[Cookies],
    headers:="content-type: application/json",
    insecure:=yes
)

Иллюстративный пример загрузки файла по FTPS. Используется аутентификация через user agent (pageant, ssh-agent):

curl(
    "scp://someuser@someserver/home/someuser/test.txt",
    auth_agent:=yes
)

Пример использования параметра keepcookies в двух узлах Производные колонки:

Первый узел Производные колонки:

curl(
	"https://localhost:5043/polyanalyst/api/v1.0/login?uname=administrator&pwd=password",
	usepost:=yes,
	insecure:=yes,
        keepcookies:="PA"
)

Второй узел Производные колонки :

curl("https://localhost:5043/polyanalyst/api/v1.0/project/execute",
    postdata:= "{
        ""prjUUID"": ""3A058F7B-2712-49E5-A3E9-FF9C1F6B8C69"",
        ""nodes"": [ { ""type"": ""DataSource"", ""name"": ""CrimeData.csv"" } ]
    }",
    keepcookies:="PA",
    headers:="content-type: application/json",
    insecure:=yes
)