Есть задача через nodejs скачивать главную страницу сайта и открывать ее (macys.com).
Через curl сайт открывается, с этого же сервера через nodejs request не открывается (выдает forbidden детектится фаерволлом).
Требуется разобраться, почему. Задача запустить puppeteer не стоит, хотелось бы разобраться в чем отличие между curl и nodejs запросом запускаются с одной машины, расположенной в NYC.
Пример кода который работает и скачивает сайт:
const {execSync} = require('child_process');
const command = `curl 'URL' -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36' -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/si gned-exchange;v=b3' -H 'accept-encoding: deflate, gzip' -H 'accept-language: en-US,en;q=0.9,nl;q=0.8,pt;q=0.7,ru;q=0.6,es;q=0.5' --compressed --insecure --proxy-insecure -ivs > ~/1.txt `;
execSync(command).toString();
код который не работает:
var https = require("https");
var fs = require("fs");
var headers = {
'authority': '
www.macys.com',
'pragma': 'no-cache',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,applicat ion/signed-exchange;v=b3',
'accept-encoding': 'deflate, gzip',
'accept-language': 'en-US,en;q=0.9,nl;q=0.8,pt;q=0.7,ru;q=0.6,es;q=0.5'
};
var options = {
host: '
www.macys.com',
port: 443,
path: '/',
method: 'GET',
headers: headers
};
console.log(options);
var req = https.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write('datan');
req.write('datan');
req.end();
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ РАБОТЫ:
1) js script для nodejs v10.16 , использующий встроенные библиотеки nodejs (http / https) который успешно запускается на ubuntu 18.04 и скачивает главную страницу macys.com будучи запущенным из региона NYC
2) внятное объяснение, почему это работает, а вышеупомянутый скрипт нет