Node.js 请求模块获取现代版本的网站
Node.js request module getting modern version of website
通常在使用 Node.js 中的 request
模块发出 GET 请求时,会返回网站 HTML 的最旧版本。
例如,向 http://google.com 发出请求时返回了一个非常旧的版本 Google。另一方面,在浏览器中访问 Google returns 一个更现代的网站版本。
我怀疑它与 Google 等网站访问的 device/browser 信息有关。 request
不发送任何设备信息(据我所知)。
有什么方法可以让网站认为它们正在被实际的 device/browser(以及现代的)访问吗?
默认情况下,请求包不包含任何设备信息(如问题所述)。 google 等大型网站使用此信息来适应页面的各个方面,例如 HTML 版本、CSS/JS 功能。较新 user-agent 表示该页面可以使用更多更新的功能。要模拟任何特定设备(例如,要调试移动页面),请在 useragentstring.com.
处选择适当的 user-agent
其他一些 headers,如 accept
和 accept-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);
通常在使用 Node.js 中的 request
模块发出 GET 请求时,会返回网站 HTML 的最旧版本。
例如,向 http://google.com 发出请求时返回了一个非常旧的版本 Google。另一方面,在浏览器中访问 Google returns 一个更现代的网站版本。
我怀疑它与 Google 等网站访问的 device/browser 信息有关。 request
不发送任何设备信息(据我所知)。
有什么方法可以让网站认为它们正在被实际的 device/browser(以及现代的)访问吗?
默认情况下,请求包不包含任何设备信息(如问题所述)。 google 等大型网站使用此信息来适应页面的各个方面,例如 HTML 版本、CSS/JS 功能。较新 user-agent 表示该页面可以使用更多更新的功能。要模拟任何特定设备(例如,要调试移动页面),请在 useragentstring.com.
处选择适当的 user-agent其他一些 headers,如 accept
和 accept-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);