请求节点模块不给html

时间:2015-05-28 14:07:19

标签: javascript node.js request npm

我正在使用请求nodejs模块获取网站的html,如下所示:

var request = require('request');

request("http://www.thenewschool.org/", function (error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log("body>>>>>>>>>>");
    } else {
        console.log("error>>>>>>>>>"+error);
        console.log("response statusCode>>>>>>>>>"+response.statusCode);
        console.log("response body>>>>>>>>>"+response.body);
    }
})

这给了我这个输出

  

错误>>>>>>>>>空

     

响应statusCode>>>>>>>>>> 403

     

回复正文>>>>>>>>>>抱歉,此请求已被阻止   无效的用户代理。

大多数情况都是如此,但在这种情况下失败,有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:9)

您只需在标题中传递user-agent(因为网址需要它),例如:

var options = {
  headers: {'user-agent': 'node.js'}
}

request("http://www.thenewschool.org/", options, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log("body>>>>>>>>>>" + body);
  } else {
    console.log("error>>>>>>>>>"+error);
    console.log("response statusCode>>>>>>>>>"+response.statusCode);
    console.log("response body>>>>>>>>>"+response.body);
  }
})

答案 1 :(得分:5)

您收到的是HTTP 403错误代码:禁止访问。

这可能意味着您的请求已被"配置文件"作为"我们不希望你在这里" :

  • 这可能是因为您的IP已被标记
  • 或者因为您缺少一个标题,可以使您的请求看起来像真正的浏览器。很可能是给出了答案正文的用户代理标题