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')
Последний раз редактировалось Romaboy, 20.06.2016 в 18:54.
|