性能测试工具 🔥Jmeter(四十三) - 从入门到精通高级篇 - Jmeter 之 IP 伪装和欺骗(详解教程)

北京-宏哥 · October 22, 2025 · 200 hits

1.简介

我们从小接受的教育就是不要撒谎,要做一个诚实的孩子,但是在现实生活中有时候说一个善意的谎言也不是可以的。这里由于服务器各种安全机制的限制和校验,因此我们不得不欺骗一下服务器,今天宏哥就给大家分享 Jmeter 之 IP 欺骗。

2.什么是 IP 欺骗

宏哥这里所说的是在 Jmeter 使用时候 IP 欺骗的定义。更专业的定义和宏哥说的是不一样的。ip 欺骗就是模拟 ip。什么意思呢,一个电脑就只有一个 ip 地址,当然如果有多块网卡的话,会有多个 ip 地址,一般服务器上有个网卡,咱们自己的电脑一般都只有一个 ip 地址,但是你做压测的时候有的系统为了防止恶意刷请求,服务端会判断每个请求过来的 ip 是不是同一个,如果同一个 ip 地址在一段时间内频繁请求的话,就把这个 ip 给封了。这样的情况下你做压测的时候就会受到影响了,因为你的电脑就只有一个 ip 地址,所有的请求发过去都只是一个 ip 地址,这种情况下就需要用到 ip 欺骗了,这样请求发过去的 ip 地址就不是同一个了,就能解决这样的问题了。ip 欺骗就是在这种情况下使用的。

3.ip 欺骗真的有用吗?

ip 欺骗,叫 ip 欺骗,欺骗那就是假的。分两种情况,一种情况下 ip 欺骗有用,另一种情况下,ip 欺骗没用,就只是欺骗自己罢了。
第一种情况,内网压测:
内网压测的话,ip 欺骗是有用的,ip 欺骗是在局域网里面找一些没有被使用过的 ip 地址,然后以这些 ip 地址发请求过去,这样的话,服务端接收到的 ip 地址,都是你局域网里面的 ip,它的确是模拟了其他 ip 的。
第二种情况,外网压测:
外网压测,外网压测的话,就是把咱们的系统部署到外网上了,所有的人都可以访问,那这样的话,ip 欺骗模拟的 ip 还是局域网里面的那些 ip,你公司里面整个网络的出口都是一样的,比如说你们公司是联通的网络,拉了一条网线,那么整个公司的人,发出去的请求都是一个出口,就是这一个网线的出口出去的,就只有一个外网的 ip 地址了,那么你再怎么 ip 欺骗都是局域网里面可以随便搞,出口始终是一个,就模拟不了了,这种就是自己欺骗自己咯。

4.为什么要伪装和欺骗

宏哥简单的列举几点原因:

(1)由于现在绝大多数的服务器出于安全考虑会对同一 IP 地址做过滤,例如:百度同一 IP 短时间内发出大量的请求,这个 IP 就会被封禁一段时间。所以如果想要达到正常的压测效果,我们需要在发请求时伪造出不同的 IP 地址。
(2)我们在做压力测试时,有这样的场景和需求,希望模拟的批量用户来自不同的 IP 地址。

首先看一下宏哥的环境。

5.宏哥环境

Jmeter 版本:5.1.1,如下图所示:

系统:Windows 10 版本 64 位系统(32 位的同学自己想办法哦),如下图所示:

然后,跟随宏哥看一下大致步骤。

6.大致步骤

主要步骤分为以下 3 步:

第一步:在负载机上绑定 IP 地址。

第二步:对绑定的 IP 地址保存到 txt 文件中。

第三步:在 jmeter 测试计划中添加配置元件 并配置 IP 参数。

第四步:在要欺骗的 http 请求中,修改 Implementation 为 httpclient 模式,修改 Source Address,指定请求要用到的本地地址(参数化)。

第五步:添加察看结果树。

最后按照大致步骤,实战一下。

7.实战

第一步:在负载机上绑定 IP 地址:

a、开始菜单 -> 设置 -> 网络和 Internet -> 更改适配器选项 -> 以太网
b、右键以太网(找到你正在使用的连接有线或无线)-> 属性,选择 Internet 协议版本 4(双击打开窗口),如果是采用自动获取 IP,得通过手工设置 IP
c、在属性窗口中选择高级按钮,选择 IP 设置,点击添加,输入新的 IP 地址 (须要注意在局域网内不要有 IP 冲突,可以事先 ping 一下找没有使用的 IP),但子网掩码必须一致。

说明:负载机需要是固定的 IP 地址

首先打开负载机上的网络配置,将 IP 地址更改为固定 IP ,如下图所示:

然后点击高级项手动添加你要伪造的 IP 地址 ,如下图所示:

此处添加的地址需要注意是否已被占用,可以先 ping 下你要伪造的地址,如果提示无法访问目标主机则意味着该地址未被占用,可正常添加。

第二步:IP 绑定后,你需要将刚才的 IP 地址记录在一个 txt 文档中,以便之后的请求时参数化调用你伪造你的 IP.。如下图所示:

第三步:负载机上的 IP 绑定完成后,需要在 jmeter 中设置变量来调用 ,在 jmeter 测试计划中添加配置元件 并配置 IP 参数。如下图所示:

第四步:在要欺骗的 http 请求中,修改 Implementation 为 httpclient 模式,修改 Source IP Address,指定请求要用到的本地地址(参数化)

在 sample-http 请求中修改 Implementation 为 httpclient 模式,Source IP Address 中调用设置的参数(CSV Data Set config 中设置的变量名字:IP),如下图所示:

第五步:添加察看结果树,运行 Jmeter,查看结果树。如下图所示:

都傻眼了吧,没有看到请求的 IP 地址,那你就加一个可以显示你 IP 地址的方法。宏哥这里添加了一个加了一个 BeanShell 取样器 内容:log.info("\${ip}"),如下图所示:

再次运行查看,如下图所示:

8.小结

说明:我看有的博客说官方文档是在 jmeter2.5 以上的版本有此功能的实现~但是有人在以下的版本也实现了,宏哥没有亲自操作,有兴趣的小伙伴可以看一下。

我们已经实现了请求来自不同的 IP 地址,也就实现我们的 IP 欺骗的技术注意事项:
(1) 我们添加的 IP 地址一定是未被使用的,这部分需要手动验证,这点和 LR 是有区别;
(2) 我们添加的地址需要复制到文本文件,然后进行参数化;
(3) 在压力测试脚本中需要引用参数化变量,不要忘记。

细心的小伙伴们会注意到宏哥前后截图不一样,那是因为在实践过程中,宏哥开始在本地实战时,直接把网给干没有了,所以宏哥后来直接就在服务器上实战了,有线网没有了不要着急,在设备管理器中将网卡卸载,切记不要勾选删除卸载项的那个按钮,然后重启电脑,电脑会自动加载网卡,有线网络恢复。这个针对宏哥的现象可能不适合你们,但是遇到了也可以试一下。

好了,今天就到这里吧,这篇写的挺费劲。

No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up