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

如何模拟恶意IP发起请求以测试服务器IP封禁功能?

Node.js/Express能否模拟恶意IP测试封禁功能?

完全支持,你可以通过两种核心方式实现恶意IP的模拟测试:

1. 伪造请求头模拟客户端IP

如果你的Express服务在反向代理(如Nginx)后运行,通常会通过X-Forwarded-For头传递真实客户端IP。测试时只需在请求中自定义这个头即可模拟指定IP:

用superagent发送模拟请求的示例:

const superagent = require('superagent');

// 模拟恶意IP 192.168.1.100发起请求
superagent.get('http://localhost:3000/your-protected-route')
  .set('X-Forwarded-For', '192.168.1.100')
  .end((err, res) => {
    // 验证响应是否符合封禁预期(比如返回403状态码)
    console.log('响应状态码:', res.status);
  });

2. 测试框架中直接修改请求IP

如果用supertest配合Jest/Mocha等测试框架,可以直接在测试用例中设置请求IP:

const request = require('supertest');
const app = require('../path/to/your/express/app');

test('验证恶意IP被封禁', async () => {
  const maliciousIp = '10.0.0.5';
  const response = await request(app)
    .get('/protected-route')
    .set('X-Forwarded-For', maliciousIp);

  // 断言封禁逻辑生效,返回403 Forbidden
  expect(response.statusCode).toBe(403);
});

关键注意事项

  • 确保Express配置了app.set('trust proxy', true),这样服务才会信任X-Forwarded-For头并将其识别为客户端真实IP,否则req.ip会显示代理服务器的IP。
  • 如果是本地直连测试(无反向代理),可以直接修改req.ip的值(比如在测试中间件中手动设置),不过这种场景更适合单元测试而非集成测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:30:52