相关文章推荐

模拟场景: 脚本实现阻塞请求A,等待N秒之后,自动放行请求A
因为项目的业务逻辑,需要模拟这样的场景,刚开始我也很纠结郁闷,觉得无从下手,还不如手工来的快一些,因为涉及到时间,又不敢保证每次手工操作的准确性。没办法,只能硬着头皮啃这个大难题,
后来我就把这个问题一步步拆解,化繁为简,之后再逐渐攻克每一个难点,这样就在不知不觉中解决了这个疑难杂症。

思路: 第一问: 如何让请求阻塞呢?

之前都是在界面上执行命令,bpu *** ,bpafter ** ,怎么用脚本来实现遇到请求A就自动拦截呢?这个我们就要深挖在界面上【QuickExec box】执行命令之后的秘密了。
在CustomRules.js文档中,会发现如下的代码:

	// The OnExecAction function is called by either the QuickExec box in the Fiddler window,
	// or by the ExecAction.exe command line utility.
	static function OnExecAction(sParams: String[]): Boolean {
	......
	//取数组的第一个值,第一个值存放的是执行的命令
	var sAction = sParams[0].toLowerCase();
		switch (sAction) {
			case "bpafter":
				var len = sParams.Length ;
				//如果sParams 长度小于2,也就意味着bpafter后面没有跟url,那么就清空bpafter 阻塞的url,下次再遇到此url 就不会再阻塞了
				if (sParams.Length<2) {bpResponseURI=null; FiddlerObject.StatusText="ResponseURI breakpoint cleared"; return false;}
				var len = sParams.Length ;
				//取数组的第二个值,第二个值存放的是要截取的url
				bpResponseURI = sParams[1]; 
				FiddlerObject.StatusText="ResponseURI breakpoint for "+sParams[1];
				return true;
	......

OnExecAction 这个函数就是在界面上执行命令所调用的函数,sParams 是将输入的内容用空格分割而成的数组。
例如,bpafter /altamob/zwf ,那么 sParams[0] = “bpafter” ; sParams[1] = “/altamob/zwf” ;
明白了这个操作的原理,如果想阻塞某个请求,只要调用此函数就可以了。

	if (oSession.uriContains("A")){
			oSession["ui-color"] = "purple";
			var command1:String[] = ["bpafter","/altamob/zwf"];
			OnExecAction(command1);

第二问:如何让等待N秒呢?
CustomRules.js 是JScript 的脚本文档,我们可以用jS来实现此功能,这个是很常见的代码。

	static function sleep(numberMillis) { 
		var now = new Date(); 
		var exitTime = now.getTime() + numberMillis; 
		while (true) { 
			now = new Date(); 
			if (now.getTime() > exitTime) 
				return; 

单位是ms,等待2s中,sleep(2000); 这样调用即可
第三问:如何自动放行呢?
go 命令是放行所有被中断的会话。关键是在哪一步执行此命令呢?
发现了这样一个被注释掉的函数

// This function executes after Fiddler finishes processing a Session, regardless
// of whether it succeeded or failed. Note that this typically runs AFTER the last
// update of the Web Sessions UI listitem, so you must manually refresh the Session's
// UI if you intend to change it.
    static function OnDone(oSession: Session) {

看上面的注解,This function executes after Fiddler finishes processing a Session, regardless of whether it succeeded or failed,
不管一个session 成功或者失败,在fiddler 结束处理这个session之后,这个函数就会被执行。我的英文翻译真的是很烂,但是意思是这么个意思,
就是处理完一个session,肯定会调用此函数。那么在此函数中将阻塞放行就ok了。

    static function OnDone(oSession: Session) {
			if (oSession.uriContains("A")){
				sleep(1000);
				var command1:String[] = ["go"];
				OnExecAction(command1);
                    模拟场景: 脚本实现阻塞请求A,等待N秒之后,自动放行请求A因为项目的业务逻辑,需要模拟这样的场景,刚开始我也很纠结郁闷,觉得无从下手,还不如手工来的快一些,因为涉及到时间,又不敢保证每次手工操作的准确性。没办法,只能硬着头皮啃这个大难题,后来我就把这个问题一步步拆解,化繁为简,之后再逐渐攻克每一个难点,这样就在不知不觉中解决了这个疑难杂症。思路: 第一问: 如何让请求阻塞呢?之前都是在界面上执行命令,bpu *** ,bpafter ** ,怎么用脚本来实现遇到请求A就自动拦截呢?这个我们
5、对APP进行弱网测试
fiddler工作原理
fiddler是浏览器和服务器之间的代理服务器,能够捕获通过fildder的http(s)请求。fiddler启动后会自动设置代理地址为本机,端口号为8888。
客户端像WEB服务器发送HTT...
				
Fiddler在处理每个session时,脚本文件CustomRules.js中的方法都会运行,这些脚本可以使你任意修改复杂的session。通常,使用的比较多的都是用脚本来修改请求或响应 两个重要的函数 OnBeforeRequest 请求经过Fiddler发送给服务器之前会先调用这个函数,因此,如果想要修改请求,可以写在这个函数里 OnBeforeResponse
FiddlerScript 是Fiddler 的一项非常强大的功能,它允许你扩展Fiddler UI,添加新的特性,修改请求与响应内容等。 FiddlerScript 基于JScript.NET 语言。 某测试项目X中有用线上包来进行测试环境测试的需求。 重定向线上环境到测试环境。 1、若重定向仅涉及少量url,可以通过配置本地host,或者使用抓包工具charle...
Fiddler构造http请求时,发现 $_POST数组中怎么也获取不到值,以为自己操作错了,但也没发现什么问题,后来得知,原来缺少了一个请求头,Fiddler不会为我们自动添加。 Content-Type: application/x-www-form-urlencoded 下面以bugku的web基础$_POST30为列子进行分析! 看到是post请求,就想到构造http的post请求...
身为一名前端搬砖工,长久以来有两个问题困扰着我,一个是做后台项目接口返回的数据都为空,不方便做更进一步的对数据的查改及测试;另一个是做移动端的项目,比如 uniapp,每次遇到接口问题都只能 console 在 HBuilder 进行调试,苦不堪言,后来发现我司 TE 同学用 Fiddler 进行抓包测试,一问这软件还是免费的,遂进行了一番学习了解,发现可以直接解决刚刚提到的这两个问题,所以在这里做个分享。 Fiddler 是位于客户端和服务器端的 HTTP 代理 目前最常用的 HTTP .
该函数使用了一个循环来不断地除以2,直到十进制数为0为止。在每次循环中,我们可以通过使用模运算来得到当前位上的二进制数字,并将其添加到二进制字符串的左侧。最后,返回得到的二进制字符串即可。 例如,将16转换为二进制数,可以这样调用该函数: ```python binary = decimal_to_binary(16) print(binary) # 输出 10000 老司机6517: 业务逻辑包裹在一个大的 SQL 语句中,而 Service 层可以做的事情很少。SQL 都是针对特定的业务功能编写的,复用性差。当我要开发另一个业务功能的时候,只能重新写个满足新需求的 SQL 语句,这就可能导致各种长得差不多、区别很小的 SQL 语句满天飞。 以上这段话没理解是什么意思,不是说基于贫血模型的开发业务都挤在service层吗?这里为什么说service没事可做?另外为什么会sql满天飞,基于贫血模型的开发,sql也基本只做一些增删改查啊
 
推荐文章