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. 【翻译】Python PEP8编码规范(中文版)

    原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 Title Style Guide for Python Code ...

  2. Go的切片

    目录 切片 一.切片的创建 1.先创建数组,再引用 二.切片的修改 三.切片的长度和容量 四.使用make创建切片 五.切片的修改和追加 1.修改 2.追加:append 六.切片的函数传值 七.多维 ...

  3. 如何用Eggjs从零开始开发一个项目(1)

    前言 "纸上得来终觉浅,绝知此事要躬行."虽然node一直在断断续续地学,但总是东一榔头西一榔头的,没有一点系统,所以打算写一个项目来串联一下之前的学习成果. 为什么选择Eggjs ...

  4. 《C++ Primer》笔记 第13章 拷贝控制

    拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时做什么.拷贝和移动赋值运算符定义了将一个对象赋予同类型的另一个对象时做什么.析构函数定义了当此类型对象销毁时做什么.我们称这些操作为拷贝控制 ...

  5. 洛谷 P4747 [CERC2017]Intrinsic Interval 线段树维护连续区间

    题目描述 题目传送门 分析 考虑对于 \([l,r]\),如何求出包住它的长度最短的好区间 做法就是用一个指针从 \(r\) 向右扫,每次查询以当前指针为右端点的最短的能包住 \([l,r]\) 的好 ...

  6. 记一次Drone无法触发构建的问题

    问题 好巧不巧,当你晚上准备上线的时候,在下午临近下班的时候CI&CD工具出问题了,提交代码不能触发构建,不能上线了,Drone平台那边也下班了,正好CICD依赖的公司git仓库也出问题了(就 ...

  7. python面试题总结

    Python语言特性 1. Python的函数参数传递 ​ 看两个如下例子,分析运行结果 #代码1 a = 1 def fun(a): a = 2 fun(a) print(a) #1 #代码2 a ...

  8. 我与FreeBSD的故事之三

    联想G400 是我在国美电器线下买的笔记本.我什么也不懂,就随便买了,不随便也不行,谁都知道只要不是那种特别的奸商,基本上货物都是符合价值决定价格这个基本的经济学规律的.所以没钱就失去了选择的自由.到 ...

  9. JavaCV 树莓派打造监控系统平台

    使用树莓派搭建视频监控平台去年就简单的实现了,只不过功能比较简陋,最近抽时间重构了原来的平台. 环境搭建 环境部分,参考旧版的安装及配置: 树莓派搭建视频监控平台 树莓派视频监控平台实现录制归档 框架 ...

  10. Django1和2的区别

    一.路由的区别 1.Django1中的url from django.conf.urls import url # 使用url关键字 urlpatterns = [ url('article-(\d+ ...