【问题标题】:request node module not giving html请求节点模块不提供 html
【发布时间】:2015-05-28 22:19:00
【问题描述】:

我正在使用请求 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);
    }
})

这给了我这个输出

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

响应状态码>>>>>>>>>403

响应正文>>>>>>>>>抱歉,此请求已被阻止,因为 无效的用户代理。

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

【问题讨论】:

    标签: javascript node.js request npm


    【解决方案1】:

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

    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);
      }
    })
    

    【讨论】:

    • 我现在有一个新问题,这个模块没有给我正确的 html 来重定向网站,我正在传递这个 var options = { url: "amwasia.com", headers: {'user-agent ':'node.js'},rejectUnauthorized:假,followAllRedirects:真};并且没有给我正确的 html(本例的正文),此 url 重定向到 amwmotors.com
    • 如果您使用与上述相同的代码,您将收到200 状态代码,这不是重定向。如果您通过浏览器测试了 url www.amwasia.com 并被重定向,可能是通过 html <meta> 标签完成的。但是,通过request 模块,您似乎得到了200,而不是3xx
    • 谢谢,会有所帮助的。
    • 我在添加用户代理时收到 503 状态代码,但没有它时收到 403。
    【解决方案2】:

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

    这可能意味着您的请求已被“分析”为“我们不希望你在这里”:

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

    【讨论】:

      猜你喜欢
      • 2020-04-29
      • 2020-12-24
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多