В зависимостях
node-libcurl есть
Python 2.7 и сам пакет давно устарел, вот и стоит задача заменить
node-libcurl на другую аналогичную библиотеку. Запросы формируются на самом сервере...
Перерыл весь npm-репозитарий но ничего не подобрал. Нужен ваш совет.
-
На сервере пока использую такой cURL запрос.:
var querystring = require('querystring')
var Curl = require('node-libcurl').Curl
var curl, data, hName, hValue, headers, options, statHeaders
statHeaders = {
'Pragma': 'no-cache',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
}
headers = []
for (hName in statHeaders) {
hValue = statHeaders[hName]
headers.push(`${hName}: ${hValue}`)
}
data = {
login: 'xxx',
passwd: 'zzz'
}
data = querystring.stringify(data)
options = {
url: 'https://bla-bla.net/api/...',
method: 'GET'
}
curl = new Curl()
curl.setOpt(Curl.option.HEADER, true)
curl.setOpt(Curl.option.TIMEOUT, 60)
curl.setOpt(Curl.option.CONNECTTIMEOUT, 30)
curl.setOpt(Curl.option.NOPROGRESS, true)
curl.setOpt(Curl.option.VERBOSE, false)
curl.setOpt(Curl.option.FOLLOWLOCATION, true)
curl.setOpt(Curl.option.AUTOREFERER, true)
curl.setOpt(Curl.option.ACCEPT_ENCODING, 'gzip')
curl.setOpt(Curl.option.COOKIEFILE, './.tmp/tipa_proxy_cookie')
curl.setOpt(Curl.option.COOKIEJAR, './.tmp/tipa_proxy_cookie')
curl.setOpt(Curl.option.HTTPHEADER, headers)
curl.setOpt(Curl.option.URL, options.url)
curl.on('end', function(statusCode, data) {
if (statusCode === 200) {
var header_size = curl.getInfo('HEADER_SIZE')
// тут обрабатываем полученное
}
return this.close()
});
curl.on('error', curl.close.bind(curl))
return curl.perform()
Понимаю, что придется переписать и этот кусок кода. Нужна
node-libcurl альтернатива с наименьшими "танцами с бубном".
-
У cURL описание опций:
HEADER - TRUE чтобы включить заголовок в вывод.
TIMEOUT - Максимальное количество секунд, в течение которого могут выполняться функции cURL.
CONNECTTIMEOUT - Количество секунд ожидания при попытке подключения. Используйте 0, чтобы ждать бесконечно.
NOPROGRESS - TRUE чтобы отключить индикатор выполнения для передач cURL.
VERBOSE - TRUE для вывода подробной информации. Записывает вывод в STDERR или в файл, указанный с помощью CURLOPT_STDERR.
FOLLOWLOCATION - TRUE чтобы следовать любому заголовку «Location:» , который сервер отправляет как часть заголовка HTTP.
AUTOREFERER - TRUE для автоматической установки поля Referer: в запросах, где оно следует за перенаправлением Location:.
ACCEPT_ENCODING - Автоматическая распаковка HTTP-загрузок.
COOKIEFILE - Имя файла, содержащего данные cookie. Файл cookie может быть в формате Netscape или просто заголовки в стиле HTTP.
COOKIEJAR - Имя файла для сохранения всех внутренних файлов cookie при закрытии дескриптора, например, после вызова curl_close.
HTTPHEADER - Массив полей заголовка HTTP для установки в формате array('Content-type: text/plain', 'Content-length: 100').
URL - URL-адрес для получения.
curl.getInfo('
HEADER_SIZE') - Количество байтов всех полученных заголовков.