2016-09-10 4 views
0

Node.jsのrequestモジュールでGETリクエストを行うと、Webサイトの最も古いバージョンのHTMLが返されることがよくあります。Node.jsリクエストモジュールが現代版のWebサイトを取得する

たとえば、http://google.comにリクエストすると、非常に古いバージョンのGoogleが返されます。一方、ブラウザでGoogleにアクセスすると、はるかに現代版のWebサイトが返されます。

私はそれがGoogleのようなサイトからアクセスされるデバイス/ブラウザ情報に関係していると思われます。 requestは、(私が知っている)デバイス情報を送信しません。

サイトに実際のデバイス/ブラウザ(および現代のもの)によってアクセスされていると思う方法を教えてください。

+0

あなたはユーザーエージェントをチェックしてもらえますか?ユーザーエージェントが送信されない場合は、それが問題になる可能性があります。最新のものを使用してみてください。 – Hele

+0

@HeleユーザーエージェントをChromeの最新バージョンのように変更するにはどうすればよいですか?私が使用できるサンプルやライブラリはありますか? –

答えて

1

デフォルトでは、リクエストパッケージにはデバイス情報は含まれていません(質問に記載されているとおり)。 Googleのような大きなサイトでは、この情報をHTMLバージョン、CSS/JSのようなページの側面に合わせて使います。新しいユーザーエージェントは、ページがより多くの機能や新しい機能を使用できることを意味します。特定のデバイスをエミュレートするには(モバイルページをデバッグするなど)、useragentstring.comにある適切なユーザーエージェントを選択します。

acceptaccept-encodingのような他のヘッダーもこれに影響します(Docここ)。

は(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

ブリリアント。あなたは将来の読者のために説明/説明を追加したいかもしれません(upvote :))。 –

関連する問題