http报文录制回放工具fiddler&curl操作指导
http报文录制回放工具fiddler&curl操作指导
1 Fiddler介绍
Fiddler是一款由C#语言开发的免费http调试代理软件,有.net 2 和 .net 4 两种版本。Fiddler能够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle所有的“进出”的数据。
Fiddler简单操作可以访问以下网址:
http://3ms.huawei.com/hi/index.php?app=home&mod=Blog&act=blogList&uid=533753
本文更多的介绍下,通过fiddler获取我们操作IE时所发起的请求,通过Fiddler的导出功能将请求导出为curl工具可以执行的请求文件.
当获得请求文件后,通过window下curl工具来回访请求,抓取请求返回的html报文信息.
2 获取请求导出**.bat文件步骤:
Click File > Export Sessions.
Click either All Sessions or Selected Sessions.
Select the export format from the drop-down menu.
操作步骤见截图 (图1,图2,图3)
保存文件成功后,打开文件形式见图4
图1 fiddler记录IE请求页面
图2 Export Sessions
图3 Click either All Sessions
图4 保存后文件打开格式
3 Curl介绍
curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。(源于:百度百科)
3.1 Curl安装使用
1: http://curl.haxx.se/download.html 在该路径下下载对应的安装文件包。
图3-1 curl下载地址
2:curl_739_0_ssh2_ssl.zip(我自己下载的是这个适合win32系统),下载完成之后解压到需要使用curl命令的目录(自己在任意路径下建一个文件夹,解压到文件夹下即可,如:D:\Curl),解压后得到curl.exe,libssh2.dll文件.
curl_739_0_ssh2_ssl.zip文件已上传:\\hwrnd-fs\szx01\PS_TS_PT_F\工具开发\HUTAF I&V TDT\HUTAF I&V 测试组\07.工具
图3-2 curl解压后文件
3:将保存的**.bat文件copy到该路径下,双击执行。(见下图11.bat文件)或者可以打开命令窗口进入curl_739_0_ssh2_ssl.zip文件解压目录,可以在该cmd窗口单条执行请求。
注意:直接导出的**.bat文件双击执行可能会出现执行对话框闪退的情况,这是因为**.bat文件执行后会立刻关闭对话框,如果想让**.bat文件执行后依然能显示在桌面,可以在导出的**.bat文件的结尾自己加上一行: echo. & pause
由于执行的请求中有 (-o 1.dat)指令. 返回参数会输出到1.dat文件中,如下图所示,执行完11.bat文件后文件夹内会生成一个1.dat文件。里面保存了请求的所有返回信息。
图3-3 11.bat文件执行结果
4:可以给Windows增加curl命令的环境变量。计算机右键-》属性-》高级系统设置-》环境变量-》path (路径后添加curl多在目录。)
注:添加环境变量后,执行命令不需要进入curl目录
图3-4 curl设置环境变量
3.2 GET请求
curl -k -i --raw -o 0.dat "http://10.78.101.230:8080/lcm/index.jsp" -H "Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*" -H "Accept-Language: zh-CN" -H "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; aff-kingsoft-ciba; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)" -H "Accept-Encoding: gzip, deflate" -H "Proxy-Connection: Keep-Alive" -H "Host: 10.78.101.230:8080" -H "Cookie: username=*******; password=*******; validateType=0; currPortId=93469b794cfc4b25906a4413eb1b9f00; portParaIds=247d5b93b1bd4c528a6e09d7f9af7dcc; JSESSIONID=0C587702D8AF232F82771609FFF24FFB"
注释:
-k /--insecure 允许不使用证书到SSL站点
-i/--include 输出时包括protocol头信息(包括服务器的名称,该文件的日期,HTTP的版本和更多…)
--raw (HTTP) When used, it disables all internal HTTP decoding of content or transfer encodings and instead makes them passed on unaltered, raw. (Added in 7.16.2)
-o 0.dat --output 把输出写到该文件中
-H/--header <header >自定义头信息传递给服务器
3.3 Post请求
curl -k -i --raw -o 1.dat -X POST -d "screenWidth=1280&screenHeight=1024&language=zh_CN&inputType=&username=z00296839&password=zhang@1988&validateType=ChinaDomain" "http://10.78.101.230:8080/lcm/login.jsp" -H "Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*" -H "Referer: http://10.78.101.230:8080/lcm/index.jsp" -H "Accept-Language: zh-CN" -H "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; aff-kingsoft-ciba; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)" -H "Content-Type: application/x-www-form-urlencoded" -H "Accept-Encoding: gzip, deflate" -H "Host: 10.78.101.230:8080" -H "Proxy-Connection: Keep-Alive" -H "Pragma: no-cache" -H "Cookie: username=*******; password=********; validateType=0; currPortId=93469b794cfc4b25906a4413eb1b9f00; portParaIds=247d5b93b1bd4c528a6e09d7f9af7dcc; JSESSIONID=0C587702D8AF232F82771609FFF24FFB"
注释:
-X/ POST --request <command>指定什么命令
-d/--data <data> HTTP POST方式传送数据
3.4 更多操作文档见官网
curl 具体操作形式:curl [options] [URL...]
更多的关于curl的介绍可以参考以下网站提供的具体文档。
http://curl.haxx.se/docs/manpage.html
关于请求中操作参数的指令官网文档中有很相信的介绍,或者再cmd窗口中输入curl –help 或者curl –manual会有详细的介绍。 不过都是英文的。 中文的只能上百度了,有很多大神的博客里面还是有很详细的翻译的。
4 执行**.bat返回结果
当执行完**.bat文件后,每条请求会生成对应的日志文件。(-o 0.dat --output 把输出写到该文件中)。
图3-1 bat文件执行结果
图3-2 0.dat文件
5 总结
个人觉得对于测试和web协议的学习,fiddler 和 curl 有很多值得学习和使用的地方,但是目前自己还掌握的不是很深刻,以后会更多的挖掘共享。
也希望以后大家工作或者学习过程中所使用到任何有利于工作的小工具可以共享出来,.共同挖掘.