Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   http.request vs curl (https://javascript.ru/forum/node-js-io-js/63653-http-request-vs-curl.html)

Romaboy 20.06.2016 18:47

http.request vs curl
 
Спрашиваю из любопытства.
Я делаю парсер на node.js, который вытягивает из html и json с десятка сайтов нужный контент. На одном забанили и прикрутил прокси через модуль request. Но возникла куча проблем, последовала куча решений, и в итоге пришел к великому curl. Curl можно использовать с помощью модулей, которые не устанавливаются, по этому использую 'child_process'.
Вот что удивляет, что пошел на форуме спрашивать: почему вызов curl как процесса работает намного стабильней, чем может сама нода попытаться страницу получить?
С прокси я запросы делал - сразу работало, потом отвалилось, коды 503 в ответ приходили, а curl с тем же сайтом всегда получает что нужно.
В другом импорте частично страницы открывались, частично 503 получал, а когда на curl переписал - все нормально открываются.
В чем секрет?

PS. и вообще эта практика меня порадовала, интересный подход, оказывается, что проще из node обращаться к системе за полезными утилитами, чем те же утилиты модулями загружать. Например:

require('child_process').exec "curl URL | iconv -f cp1251 -t utf-8", (err, data, stderr) ->

Заметно меньше кода, чем

http.get "URL", (res) =>
data = []
res.on('data', (chunk) => data.push chunk).on 'end', =>
iconv.decode(Buffer.concat(data), 'win1251')


Часовой пояс GMT +3, время: 01:44.