2016-09-10 3 views
0

Oft wird beim Zurückgeben einer GET-Anfrage mit dem Modul request in Node.js die älteste HTML-Version der Website zurückgegeben.Node.js Request-Modul erhält eine moderne Version der Website

Zum Beispiel wird eine sehr alte Version von Google zurückgegeben, wenn Sie eine Anfrage an http://google.com stellen. Wenn Sie in einem Browser auf Google zugreifen, erhalten Sie eine wesentlich modernere Version der Website.

Ich vermute, dass es sich um die Gerät/Browser-Informationen bezogen von Websites wie Google. request sendet keine Geräteinformationen (von dem, was ich weiß).

Gibt es eine Möglichkeit, Sites dazu zu verleiten zu glauben, dass auf sie von einem tatsächlichen Gerät/Browser (und einem modernen) zugegriffen wird?

+0

Könnten Sie den User-Agent überprüfen? Wenn kein User-Agent gesendet wird, könnte das Ihr Problem sein. Versuchen Sie es mit dem neuesten. – Hele

+0

@Hele Wie würde ich den User-Agent in etwas wie die neueste Version von Chrome ändern? Irgendwelche Beispiele oder Bibliotheken, die ich verwenden könnte? –

Antwort

1

Standardmäßig enthält das Anfragepaket keine Geräteinformationen (wie die Frage erwähnt). Große Websites wie Google verwenden diese Informationen, um Aspekten der Seite wie HTML-Version, CSS/JS-Funktionen gerecht zu werden. Neuere Benutzer-Agent bedeutet, dass die Seite mehr und neuere Funktionen verwenden kann. Um ein bestimmtes Gerät zu emulieren (z. B. um eine mobile Seite zu debuggen), wählen Sie den entsprechenden Benutzer-Agenten unter useragentstring.com.

Einige andere Header wie accept und accept-encoding können auch dies beeinflussen (Doc hier).

diesen Code Versuchen (vom docs genommen):

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

Brilliant. Vielleicht möchten Sie eine Erklärung/Klärung für zukünftige Leser hinzufügen (für eine Upvote :)). –

Verwandte Themen