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) 在压力测试脚本中需要引用参数化变量,不要忘记。

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

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

您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波  推荐  不要忘记哦!!!

别忘了点 推荐 留下您来过的痕迹

Jmeter(四十三) - 从入门到精通高级篇 - Jmeter之IP伪装和欺骗(详解教程)的更多相关文章

  1. Jmeter(四十七) - 从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)

    1.简介 千呼万唤始出来,这一篇感觉写了好久,总想写的清楚明白简洁,但是还是洋洋洒洒写了好多,希望大家喜欢吧!本来打算将这一篇文章是放在性能测试中讲解和分享的,但是有的童鞋或者小伙伴们私下问的太多了, ...

  2. Jmeter(五十三) - 从入门到精通高级篇 - 懒人教你在Linux系统中安装Jmeter(详解教程)

    1.简介 我们绝大多数使用的都是Windows操作系统,因此在Windows系统上安装JMeter已经成了家常便饭,而且安装也相对简单,但是服务器为了安全.灵活小巧,特别是前几年的勒索病毒,现在绝大多 ...

  3. Jmeter(四十) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 中篇(详解教程)

    1.简介 为什么宏哥要对Jmeter的配置文件进行一下讲解了,因为有的童鞋或者小伙伴在测试中遇到一些需要修改配置文件的问题不是很清楚也不是很懂,就算修改了也是模模糊糊的.更有甚者觉得那是禁地神圣不可轻 ...

  4. Jmeter(四十一) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 下篇(详解教程)

    1.简介 为什么宏哥要对Jmeter的配置文件进行一下讲解了,因为有的童鞋或者小伙伴在测试中遇到一些需要修改配置文件的问题不是很清楚也不是很懂,就算修改了也是模模糊糊的.更有甚者觉得那是禁地神圣不可轻 ...

  5. Jmeter(五十一) - 从入门到精通高级篇 - jmeter之运动战(详解教程)

    1.简介 运动战是一种军事作战方式,依托较大的作战空间来换取时间移动兵力包围敌方,以优势兵力速战速决,运动战的运用归为这样一段话"避敌主力,诱敌深入,集中优势兵力逐个击破".今天宏 ...

  6. Jmeter(五十) - 从入门到精通高级篇 - jmeter 之模拟弱网进行测试(详解教程)

    1.简介 在实际工作中,网络带宽一定不会是持续稳定的保持某一个值,而是有高有低.因此为了测试场景和实际能够无限的接近,所以我们需要模拟一下来达到效果.还有就是在实际的测试工作中,会因为业务需要,有时限 ...

  7. Jmeter(四十八) - 从入门到精通高级篇 - Jmeter监控服务器性能(详解教程)

    1.简介 JMeter是一款压力.接口等等的测试工具,Jmeter也可以像loadrunner一样监控服务器CPU.内存等性能参数,用来监控服务器资源使用情况,不过需要安装一些插件.JMeter正常自 ...

  8. Jmeter(四十四) - 从入门到精通高级篇 - Jmeter远程启动(本地运行+远程运行)(详解教程)

    1.简介 这篇文章其实很简单,就是为下一篇文章做一个铺垫,所以宏哥给小伙伴或童鞋们提前热身一下. 2.什么是远程运行? 远程执行,就是脚本放在本地,执行却在另一台电脑上执行,当然,可以是远程多台电脑一 ...

  9. Java从入门到精通——数据库篇Mongo DB 安装启动及配置详解

    一.概述     Mongo DB 下载下来以后我们应该如何去安装启动和配置才能使用Mongo DB,本篇博客就给大家讲述一下Mongo DB的安装启动及配置详解. 二.安装 1.下载Mongo DB ...

随机推荐

  1. 保证软件开发过程遵循ISO 26262功能安全标准的十个主要进阶步骤

    保证软件开发过程遵循ISO 26262功能安全标准的十个主要进阶步骤 为保障汽车软件质量,使软件开发符合ISO 26262功能安全标准,需要我们对开发流程做出改进,并与2018年的更新同步. 本视频课 ...

  2. 如何创建一个Maven项目(eclipse版本)

    1 Maven概念 Maven是一个构建项目和管理项目依赖的工具 2 Maven运行原理 这里需要引入两个词汇,叫 本地仓库.中央仓库 本地仓库:就字面意思,存储在自己电脑上的文件夹(需要自己手动创建 ...

  3. Java基本概念:面向对象

    一.简介 面向过程的思维模式是简单的线性思维,思考问题首先陷入第一步做什么.第二步做什么的细节中. 面向对象的思维模式说白了就是分类思维模式.思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独 ...

  4. Spring Boot集成Springfox Swagger3和简单应用

    摘要:Springfox Swagger可以动态生成 API 接口供前后端进行交互和在线调试接口,Spring Boot 框架是目前非常流行的微服务框架,所以,在Spring Boot 项目中集成Sp ...

  5. How DRI and DRM Work

    How DRI and DRM Work Introduction This page is intended as an introduction to what DRI and DRM are, ...

  6. FreeBSD 镜像站问题 @2021

    主要问题在于官方无论如何也不开放 rsync 且不接受镜像站的官方二级镜像申请. 多次联系均无二次联系,如邮件列表,大概五次,其中三次回应,两次无回应.其主要回复内容为"深表歉意,但台湾地区 ...

  7. java重写toString()方法

    toString()方法是Object类的方法,调用toString()会返回对象的描述信息. 1)为什么重写toString()方法呢? 如果不重写,直接调用Object类的toString()方法 ...

  8. python inspect库

    一.介绍 inspect模块用于收集python对象的信息,可以获取类或函数的参数的信息,源码,解析堆栈,对对象进行类型检查等等. inspect模块主要提供了四种用处: 对是否是模块.框架.函数进行 ...

  9. 翻译:《实用的Python编程》06_02_Customizing_iteration

    目录 | 上一节 (6.1 迭代协议) | 下一节 (6.3 生产者/消费者) 6.2 自定义迭代 本节探究如何使用生成器函数自定义迭代. 问题 假设你想要自定义迭代模式. 例如:倒数: >&g ...

  10. Docker备份Gitlab容器以及还原数据

    概述 今天,我们将学习如何快速地对docker容器进行快捷备份.恢复和迁移.Docker是一个开源平台,用于自动化部署应用,以通过快捷的途径在称之为容器的轻量级软件层下打包.发布和运行这些应用.它使得 ...