2016-09-10 4 views
0

Souvent lors de la création d'une requête GET avec le module request dans Node.js, la version la plus ancienne du HTML du site Web est renvoyée. Par exemple, une version très ancienne de Google est renvoyée lors d'une demande au http://google.com. D'autre part, l'accès à Google dans un navigateur renvoie une version beaucoup plus moderne du site.Module de requête Node.js obtenant la version moderne du site Web

Je soupçonne que cela se rapportait à l'information de l'appareil/navigateur consulté par des sites comme Google. request n'envoie aucune information sur l'appareil (d'après ce que je sais).

Y a-t-il un moyen de tromper les sites en leur faisant croire qu'ils sont accessibles par un périphérique/navigateur (et un navigateur moderne)?

+0

Pourriez-vous vérifier l'agent utilisateur? Si aucun agent utilisateur n'est envoyé, cela pourrait être votre problème. Essayez d'utiliser le dernier. – Hele

+0

@Hele Comment changer l'user-agent pour quelque chose comme la dernière version de Chrome? Des exemples ou des bibliothèques que je pourrais utiliser? –

Répondre

1

Par défaut, le package de requête n'inclut aucune information sur le périphérique (comme l'indique la question). Les grands sites comme google utilisent ces informations pour s'adapter aux aspects de la page comme la version HTML, les fonctionnalités CSS/JS. Un utilisateur-agent plus récent signifie que la page peut utiliser des fonctionnalités plus nombreuses et plus récentes. Pour émuler un périphérique spécifique (Pour déboguer une page mobile, par exemple), choisissez l'agent utilisateur approprié au useragentstring.com.

Certains autres en-têtes tels que accept et accept-encoding peuvent également affecter ce (Doc ici).

Essayez ce code (extrait de la docs):

var request = require('request'); 

var options = { 
    url: 'https://google.com', 
    headers: { 
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36' 
    } 
}; 

function callback(error, response, body) 
{ 
    console.log(body); 
} 

request(options, callback); 
+0

Brillant. Vous voudrez peut-être ajouter une explication/clarification pour les futurs lecteurs (pour un upvote :)). –