Возможно Heroku не отправляет заголовок запроса

Есть следующий скрипт (one-request.js)

#!/usr/bin/env node
var request = require('request');
const cheerio = require('cheerio');

var options = {
  url: 'https://www.accuweather.com/en/us/anchorage-ak/99501/daily-weather-forecast/346835?day=1', // Anchorage
  headers: {
    'User-Agent':'Web/2.0',
    'Connection':'keep-alive'
  }
};
function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
    var $ = cheerio.load(body);
    var title = $('div#header-logo > a:first-child > span').text();
    console.info('title:',title); // title: Anchorage Daily Weather
  }
}
request(options, callback);

Он запускается на домашнем компьютере (узел one-request.js) и получает успешный ответ.

Однако при выполнении сценария в Heroku (героку запустить one-request.js) ответа нет. Такой же эффект получается при запуске скрипта на домашнем компьютере, если в запросе убраны заголовки. Поэтому предполагаю, что проблема в формировании заголовков в Heroku (тестировал также версию 'User-Agent': 'Mozilla / 5.0 (X11; Ubuntu; Linux x86_64; rv: 59.0) Gecko / 20100101 Firefox / 59.0. Тот же эффект).

Если запрошенный адрес не требует заголовков (для других сайтов), результаты сценария одинаково успешны как для дома, так и для Heroku.

Как сделать запрос в Heroku?

Что вы имеете в виду под «Такой же эффект получается при запуске скрипта на домашнем компьютере, если в запросе убрать заголовки»? HTTP-запрос по определению имеет заголовки (по крайней мере, он должен включать HTTP-команду и путь, например GET / http/1.1). Вы пытались проверить запрос, который делает ваше приложение, например зарегистрировав это?

Chris 14.05.2018 12:31

Когда я говорил об удалении заголовков, я имел в виду удаление заголовков фрагментов кода: {'User-Agent': 'Web / 2.0', 'Connection': 'keep-alive'} Да, конечно, некоторые заголовки все еще передаются.

Mikhail 14.05.2018 19:13

Журнал Heroku имеет вид 2018-05-14T15: 49: 18.816424 + 00: 00 heroku [run.3272]: запуск процесса командой one-request.js 2018-05-14T16: 00: 55.707608 + 00: 00 heroku [run.3272 ]: Процесс завершен со статусом 0 2018-05-14T16: 00: 55.882608 + 00: 00 heroku [run.3272]: состояние изменено с «вверх» на «завершено»

Mikhail 14.05.2018 19:15

Ответ приходит через 10 минут, и это не то, что ожидалось.

Mikhail 14.05.2018 19:15

Когда он наконец прибудет, каков будет ответ?

Chris 14.05.2018 19:27

Никакого ответа не получено. Судя по всему, скрипт останавливается по таймауту.

Mikhail 14.05.2018 21:23

После нескольких экспериментов я предполагаю, что Accuweather просто блокирует адреса Heroku. С локального компьютера данные все еще могут быть успешно получены. Обнаружена блокировка еще одного хостинга, с которого ранее успешно запрашивались данные Accuweather. Блокировка началась 05.08.2018. Это их право.

Mikhail 18.05.2018 18:11
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
133
0

Другие вопросы по теме