#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. Пользовательский агент — это текст, который позволяет веб-сайту узнать, какой тип клиента запрашивает веб-страницу. Обычно это имя и тип браузера, а также некоторая информация об операционной системе.