手机软件测试中,网络测试是很常见的,所以查看和修改请求与返回数据就是基础。本文介绍如何查看网络请求,以及如何搭建环境,后续再介绍修改请求数据以及更多应用。下面介绍三种独立的方法。 方法一: Fiddler是强大且好用的Web调试工具之一,它能记录客户端和服务器的http和https请求,允许你监视,设置断点修改输入输出数据。 【 一、Fiddler中如何过滤会话每次使用Fiddler,打开一个网站,都能在Fiddler中看到几十个会话,看得眼花缭乱。最好的办法是过滤掉一些会话,比如过滤掉图片的会话。Fiddler中有过滤的功能,在右边的Filters tab中,里面有很多选项, 稍微研究下,就能知道怎么用了,不再赘述。 二、Fiddler中会话比较功能工作中,有时会遇到想看看两次返回的内容有什么不同,其实fiddler可以方便的启动对比功能,只不过需要第三方工具的支持,比如ultraCompare、WinDiff等:选中2个会话,右键然后点击Compare,就会自动调用对比工具WinDiff进行对比,如果没有安装,会让你去下载安装。 当然你也可以调用自己喜欢的对比工具,在fiddlerOptions的tools----File Diff Tool进行设置。 三、Fiddler中提供的编码小工具在工作中,我们有时候需要各种编码之间进行切换,此时无需寻找其它工具,fiddler就可以了:点击Fiddler 工具栏上的TextWizard, 这个工具可以Encode和Decode string。界面上功能很清晰,就不多讲了。 四、Fiddler的script系统Fiddler最复杂的莫过于script系统了,它可以把fiddler打造的更加多样化和个性化,让功能更加灵活。官方的帮助文档: http://www./Fiddler/dev/ScriptSamples.asp 使用脚本系统的方法:首先先安装SyntaxView插件,Inspectors tab->Get SyntaxView tab->Download and InstallSyntaxView Now... 安装成功后Fiddler 就会多了一个Fiddler Script tab,然后就可以使用了。下面就举一个例子,增加查看请求server的IP显示: 五、查看每次请求的server ip 和端口每个域名可能会对应多个ip,我们一般不能直接看出这次请求是发到那台机器上去了,每次分配请求ip是dns轮询的,有时候想要确定请求是发到哪个机器上。下面就用Fiddler脚本开发功能,扩展自定义菜单、增加显示ip的功能。 进入fiddler----Rules----Customize Rules 在打开的CustomizeRules.js文件中,的static function Main()函数中增加一行代码:FiddlerObject.UI.lvSessions.AddBoundColumn(”IP”,50,”X-hostip”); 之后重启fiddler就行了。 此时再选择想要知道server ip的session,然后右键选择Properties,此时里面就会有X-HOSTIP指示server的IP 六、解决Fiddler中文乱码问题在fiddler中查看某些post请求的中文参数,未能被 Fiddler 正确处理,会显示乱码。具体表现是:某些网站是用 GB2312/GBK/GB18030 编 码的,比如 POST 请求中含有"中文"二字,在Fiddler 的 TextView Inspector 中显示为“%D6%D0%CE%C4”("中文"的 GBK 编码),到了WebForms Inspector 中就显示为乱码了, 因为 Fiddler 把它们按照 UTF-8 解码。 反过来, 在 WebForms Inspector 中将参数设置为中文值,会被 Fiddler 用 UTF-8 编码发送出去导致错误。其实这不是 Fiddler 的错,是这些土鳖网站没有在 HEADER 中指定字符集。 解决方案为:打开注册表编辑器,找到HKCU\Software\Microsoft\Fiddler2\,在里面添加一个字符串值,名叫HeaderEncoding,值设置为默认编码。建议设成 GB18030,然重启 Fiddler就生效了。 】 2、配置手机端wifi代理 在手机的wifi设置中,修改当前连接的wifi配置,里面会有代理服务器的设置,然后设置好fiddler所在机器的IP和端口8888(注意:fiddler所在机器和手机必须在一个局域网内)。 然后手机的网络交互信息就可以在fiddler中看到了。 优缺点: 方法二: 当需要抓包移动网络下的数据时,上面的方法就无效了,因为手机直接连接的是移动网、然后直接到达所需的服务器,中间无法架起WIFI桥梁进行抓包处理。此时可用如下方法: 优缺点: ①可以在任意环境下使用,包括移动网和wifi网 方法三: 使用Linux底层抓包工具tcpdump,它可以抓取所有从Android发出的网络信息,不限于http、ftp等。方法如下: 步骤:①把tcpdump传进手机,原则上任意路径均可,例如/data/local 执行抓包:连上adb后,运行 ①可以在任意环境下使用,包括移动网和wifi网 |
|