专栏首页搜狗测试Fiddler的深入应用

Fiddler的深入应用

项目背景: 近期在做一款app测试,为保护用户隐私,客户端对请求进行整体加密后再发送,途径加密墙服务器进行解密,再发送给指定服务器,逻辑简图如下:

测试过程:

  • 我们需要对功能进行容错测试,修改返回的response;
  • 需要进行网络测试,对请求进行delay延时;
  • 需要进行代理测试服务器,给真实请求配置ip。

以上这些操作都需要针对该功能的明文请求进行操作,但客户端发出来的加密请求,我们无法解密,阻碍了测试进行,怎么办呢?

解决问题: 我们平时测试明文请求时,只需要给客户端连接fiddler代理就可以对请求进行操作处理了,那么我们是不是可以给加密墙服务器配置fiddler呢?在开发大佬帮助下,给出了如下方案:

目的: 在加密墙服务器和目标服务器之间搭设fiddler,通过该fiddler进行数据查询、修改等操作; 操作步骤:

  1. 在客户端和加密墙服务器之前搭设fiddler;
  2. 在fiddler中通过urlreplace将域名后面拼接当前fiddler的ip和端口号;
  3. 加密墙服务器修改nginx配置,将该类请求的明文请求发送到对应ip+端口号的fiddler服务器上;
  4. fiddler再将解密后的请求发送到对应的线上服务器。

我们这里主要讨论下步骤b中的操作 Fiddler修改请求有两种方法: 1、 在fiddler命令行输入:

urlreplace xxxx.com xxxx.com/jiemi?ip=a&port=b

2、 在FiddlerScript中,找到OnBeforeRequest方法,在其尾部添加代码如下:

If(oSession.url.indexOf(‘xxxx.com’)>-1){oSession.url = oSession.url.Replace(‘xxxx.com’,’xxxx.com/jiemi?ip=a&port=b’)}

第一种方法只有当次启动fiddler有效,重新启动后就会失效,而第二种方法会一直生效。

到这里问题就全部解决了,但是leader看过后立刻提出了几个改进点,其中一个是replace的时候ip值是不是可以变成动态获取,而不是需要每个人手动添加呢。

这样我们就要继续分析下FiddlerScript了,下面通过三个问题来进行分析:

一、FiddlerScript是用什么语言编写运行的?

通过网上调查了解到FiddlerScript的编码是C#,C#支持的系统库它也支持。

二、FiddlerScript有哪些语法?

上面说到C#支持的系统库FiddlerScript也都支持 同时FiddlerScript自身提供了一些库,在ScriptEditer右侧可以看到库及相应方法:

获取本机IP的方法需要调用System.Net.Dns.GetHostEntry()的方法

三、如何进行代码调试?

JAVA有log.d(),Python有print (),同样Fiddler也有调试方法:

FiddlerObject.log()

使用方法如下:

import System.Net;var hostname = Dns.GetHostName();var iphost = Dns.GetHostEntry(hostname).AddressList[1];FiddlerObject.log(iphost);}

本次分享就到这儿,希望对大家使用Fiddler进行测试的过程有所帮助。

本文分享自微信公众号 - 搜狗测试(SogouQA),作者:Lethe

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 初识session、cookie和token

    由于之前接触的项目业务特点,小编还没有深入了解过session、cookie和token机制,直到最近开启了一个新项目,新项目因为涉及到“钱”,必须知道要给每个...

    用户5521279
  • 教你使用PyCharm实现远程调试

    最近手头被交接了几个测试脚本,都需要进行二次开发或者持续维护,这几个测试脚本分别被部署在不同的服务器中,使用的Python环境也各不相同,因此如果在本地进行二次...

    用户5521279
  • 如何测试Android组件化

    1、Android组件化概念 组件化大致可分为功能组件化和业务组件化。功能组件化,常见的是将一些底层的公共功能模块进行独立化,如网络请求模块、登录注册模块等。业...

    用户5521279
  • 什么是不可变的基础设施?

    在传统的可变服务器基础架构中,服务器会不断更新和修改。使用此类基础架构的工程师和管理员可以通过SSH连接到他们的服务器,手动升级或降级软件包,逐个服务器地调整配...

    爆栈工程师
  • 「云计算」什么是不可变的基础设施?

    在传统的可变服务器基础架构中,服务器会不断更新和修改。使用此类基础架构的工程师和管理员可以通过SSH连接到他们的服务器,手动升级或降级软件包,逐个服务器地调整配...

    首席架构师智库
  • keepalived双机热备应用示例

    L宝宝聊IT
  • 世界旅游城市联合会报告:休闲度假占世界旅游的比重已超过60% | 每周文旅资讯精选(10.28-11.3)

    ? ? 北京欢乐谷借万圣节引入新IP 10月11日至11月17日,北京欢乐谷举办为期一个多月的万圣节主题活动假面糖果节。据悉,活动期间,华北首座沉浸式黑科技...

    腾讯文旅
  • JS基础测试: 下列JS变量定义正确的是​?

    变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, shuke)。

    舒克
  • Enterprise Library 4.1学习笔记8----缓存应用程序块之FileDependency

    写入缓存数据时如果使用了FileDependency方式,最终的效果会让缓存是否过期依赖于某一个具体的文件,只要这个文件没有修改,缓存一直 有效,反之如果这个文...

    菩提树下的杨过
  • LeetCode 824. 山羊拉丁文

    我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。

    Michael阿明

扫码关注云+社区

领取腾讯云代金券