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

如何修改指定Node.js代码以判断IP是否存在于请求返回内容中

没问题,我帮你修改了代码,同时优化了异步处理和错误逻辑,让它能正确返回IP是否存在的布尔值:

修改后的代码(基于request库)

首先是适配你需求的完整代码:

const request = require('request');

function getBlocklist(ipAddress) {
  const baseurl = "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/bi_sip_0_1d.ipset";
  
  // 用Promise封装异步操作,这样才能获取到异步执行的结果
  return new Promise((resolve, reject) => {
    request(baseurl, function (error, response, body) {
      // 处理请求错误
      if (error) {
        console.error('请求列表时出错:', error);
        reject(error);
        return;
      }

      // 检查响应状态码
      if (response.statusCode !== 200) {
        console.error('获取列表失败,状态码:', response.statusCode);
        reject(new Error(`请求失败,状态码: ${response.statusCode}`));
        return;
      }

      // 核心逻辑:判断IP是否存在于返回内容中
      const ipExists = body.includes(ipAddress);
      console.log(`IP ${ipAddress} 在黑名单中吗?${ipExists ? '是' : '否'}`);
      resolve(ipExists);
    });
  });
}

// 调用示例:替换成你要检查的IP
const targetIp = "192.168.1.1";
getBlocklist(targetIp)
  .then(isInList => {
    console.log('最终结果:', isInList); // 这里会得到true或false
    // 你可以在这里根据结果做后续操作
  })
  .catch(err => {
    console.error('处理过程出错:', err);
  });

关键改动说明

  • 异步处理优化:原代码用回调函数无法直接返回结果,我用Promise封装了整个请求逻辑,调用方可以通过.then()或async/await获取最终的布尔值。
  • 添加IP参数:把要检查的IP作为参数传入,让函数更灵活——你可以随时检查不同的IP,若需要固定IP,直接把参数换成内部定义的const ip_address = "你的IP"即可。
  • 完善错误处理:原代码只处理了成功的情况,现在会捕获请求失败、非200状态码的情况,方便排查问题。
  • 核心判断逻辑:用body.includes(ipAddress)检查返回的文本内容中是否包含目标IP,这是最直接的字符串匹配方式。
更现代的替代方案(用node-fetch)

注意request库已经被官方废弃了,如果是新项目,推荐使用更现代的node-fetch,代码更简洁:

const fetch = require('node-fetch');

async function getBlocklist(ipAddress) {
  const baseurl = "https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/bi_sip_0_1d.ipset";
  
  try {
    const response = await fetch(baseurl);
    if (!response.ok) {
      throw new Error(`请求失败,状态码: ${response.status}`);
    }
    const body = await response.text();
    const ipExists = body.includes(ipAddress);
    console.log(`IP ${ipAddress} 在黑名单中吗?${ipExists ? '是' : '否'}`);
    return ipExists;
  } catch (err) {
    console.error('处理出错:', err);
    throw err; // 或者根据需求返回false
  }
}

// 调用示例(用async/await)
async function checkIp() {
  const result = await getBlocklist("192.168.1.1");
  console.log('检查结果:', result);
}
checkIp();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:52:55