You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Request-promise爬取不存在链接时始终返回成功的问题

解决request-promise请求不存在链接时不返回错误的问题

嘿,这个问题我熟!request-promise 默认的行为确实容易让人踩坑——它只会在真正的网络错误(比如连不上服务器、DNS解析失败)时才会拒绝 Promise,但如果服务器返回了 HTTP 错误状态码(比如 404 页面不存在、500 服务器错误),它会把这个响应当成“成功”的结果返回,不会抛出错误。

下面给你两种实用的解决办法:

方法一:启用 simple: true 选项

这是最直接的方式,给请求配置加上 simple: true,只要响应状态码不是 2xx,request-promise 就会自动抛出错误,进入 catch 块处理:

var rp = require('request-promise');
const fs = require('fs');
var moment = require('moment');
var date = moment().format('MMMM Do YYYY, h:mm:sSS a');
var status;

var proxyCheck = {
  method: 'GET',
  url: 'http://googleeeukss',
  proxy: 'http://localhost',
  headers: {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3107.4 Safari/537.36'
  },
  simple: true // 启用该选项捕获HTTP状态码错误
}

rp(proxyCheck)
  .then(response => {
    console.log("请求成功:", response);
  })
  .catch(error => {
    console.log("请求出错:", error.message);
    // 这里可以统一处理网络错误、HTTP状态码错误等情况
  });

方法二:手动检查响应状态码

如果你需要更精细的控制(比如只想针对特定状态码抛出错误),可以开启 resolveWithFullResponse 选项获取完整响应对象,然后在 then 里手动判断状态码:

var rp = require('request-promise');
const fs = require('fs');
var moment = require('moment');
var date = moment().format('MMMM Do YYYY, h:mm:sSS a');
var status;

var proxyCheck = {
  method: 'GET',
  url: 'http://googleeeukss',
  proxy: 'http://localhost',
  headers: {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3107.4 Safari/537.36'
  },
  resolveWithFullResponse: true // 获取包含statusCode的完整响应对象
}

rp(proxyCheck)
  .then(response => {
    // 判断状态码是否在2xx范围内
    if (response.statusCode < 200 || response.statusCode >= 300) {
      throw new Error(`请求失败:HTTP状态码${response.statusCode}`);
    }
    console.log("请求成功:", response.body);
  })
  .catch(error => {
    console.log("请求出错:", error.message);
  });

另外提一句:你代码里请求的 http://googleeeukss 是无效域名,如果代理环境没有返回异常响应的话,理论上应该会触发DNS解析失败的网络错误,自动进入catch块。如果还是没触发,建议检查下代理的配置是否有异常哦。

内容的提问来源于stack exchange,提问作者user9163418

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:51:29