前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fiddler的深入应用

Fiddler的深入应用

作者头像
用户5521279
发布2019-07-15 16:57:33
8130
发布2019-07-15 16:57:33
举报
文章被收录于专栏:搜狗测试搜狗测试

项目背景: 近期在做一款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进行测试的过程有所帮助。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档