получить перенаправленный URL-адрес из node.js

#node.js #redirect #request

#node.js #перенаправление #запрос

Вопрос:

У меня есть URL, который автоматически перенаправляет на другой URL, я использую следующий код, чтобы попробовать URL, но, похоже, не работает :

 var request = require('request');

var url = 'https://racing.hkjc.com/racing/information/Chinese/Trackwork/TrackworkResult.aspx?Horseno=S001';


var r = request.get(url, function (err, res, body) {
  console.log(r.uri.href);
  console.log(res.request.uri.href);
  console.log(this.uri.href);
});
 

кажется, он показывает старый URL, но не новые.

Что я должен сделать, чтобы получить правильный результат?

Ответ №1:

request Библиотека будет автоматически следовать перенаправлениям с 30x кодами состояния. Если вы получаете правильный результат, то он должен быть установлен href правильно. (Смотрите пример ниже.) Если конечная точка, к которой вы обращаетесь, не выполняет перенаправления таким образом, вам может потребоваться передать дополнительные параметры, такие как followAllRedirects: true .

 const request = require('request');
const options = {
    uri: 'https://racing.hkjc.com/racing/information/Chinese/Trackwork/TrackworkResult.aspx?Horseno=S001',
    headers: {
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Mobile Safari/537.36'
    }
};
request(options, (error, response, body) => {
    console.log(response.request.uri.href);
});
// Output: https://racing.hkjc.com/racing/information/Chinese/Trackwork/TrackworkOtherResult.aspx?HorseId=HK_2013_S001
 

Комментарии:

1. Спасибо, я пытался использовать следующий код, но, похоже, не работает: const request = require(‘запрос’); request({uri: ‘ racing.hkjc.com/racing/information/Chinese/Trackwork /… ‘, followAllRedirects: true}, (ошибка, ответ, тело) => { console.log(response.request.uri.href); }); Кроме того, followOriginalHttpMethod: true, похоже, тоже не работает

2. Тогда это не перенаправление. Для доказательства попробуйте curl -L -v https://racing.hkjc.com/racing/informainese/Trackwork/TrackworkResult.aspx?Horseno=S001 (если на macOS или Linux). -L Опция указывает curl следовать перенаправлениям. Но он возвращает 200 без перенаправления.

3. да, вот почему это кажется очень странным, вы можете перенаправить на другой URL, если используете обычный веб-браузер. Я нажал F12 и вставил URL-адрес, чтобы посмотреть, что происходит …… кажется, он вернул статус 302, а затем перенаправил на следующий URL-адрес, который мне нужен.

4. ОК. Это помогает мне понять, что происходит. Попробуйте выполнить приведенное выше редактирование, в котором используется строка пользовательского агента.

5. Пользовательский агент — это текст, который позволяет веб-сайту узнать, какой тип клиента запрашивает веб-страницу. Обычно это имя и тип браузера, а также некоторая информация об операционной системе.