fiddler post二进制数据的例子

使用fiddler抓包时,会发现抓到的post请求的data有些会以明文显示,有些会显示为乱码。这里介绍下如何post乱码数据给服务器,这里分两种情况:1、编码不对,所以显示为乱码;2、本身数据就是二进制数据(所以本篇标题并不是特别准确)。正常抓包到的数据如下图:

 

 

一、编码转换

 

常见的乱码数据包如下图,注意下面还有一个“ FIDDLER: RawDisplay truncated at 128 characters. Right-click to disable truncation ” 的提示, 这个右连将AutoTruncate的勾选去掉即可。

 

 

一些乱码实际是编码方式不对,是可以转码显示的,fiddler工具已经默认带有转码功能textwizard 。如下图所示,为了精确选取数据在,可以切到的hexview视图下,postdata和url及header头的颜色不同,右键选择后,选择copy并点击上面的textwizard图标,在下面的编码转换中选取对应的编码即可。

 

 

不过明显,本篇截图的数据不是这种,因为从post中的url 里已经说明是mobile/binary 。如果是普通的数据,转换完成后和其他post方法一样,直接post提示给服务器即可。

 

二、post二进制包

 

由于url和header头信息显示的为蓝色,postdata为黑色(fiddler做的还是很贴心的,在右边栏的数据预览区也可以看到),这里选择postdata右键save selected bytes to file ,将刚刚选择的部分保存为文件,刚刚截取的 url为高德地图里的地址位置数据。这里我保存为gps.dat 。

 

 

接下来可以使用牛X的curl 来先简单的模拟先服务器发送二进制数据文件,可以先看下curl与postdata相关的命令部分如下:

[root@361way 06]# curl --help
-d, --data DATA     HTTP POST data (H)
     --data-ascii DATA  HTTP POST ASCII data (H)
     --data-binary DATA  HTTP POST binary data (H)
     --data-urlencode DATA  HTTP POST data url encoded (H

具体先服务器post的指令如下:

curl -H 'DontTrackMeHere: gzip'  -H 'gzipped: 1'
-H 'X-INFO: H4sIAAAAAAAAAAGQAW/+XtQhvCPct7zVMxyLN99W8LpeZsp+NgrIVHgOKcPysNdeSoCI+xxHUF1iAE8shjdsvDy7nyZojL4ZNIRSqxhLy7C+tx+lAh8f7mPmrNZFgnLOKl59JIhRoJt4HU8x29cKbyeK/59UgA2Fwco2682Jp/hXEGJi0KlxrCUCq5/1zQc/mxOEUlOG6dzYEgpfEfVw0HX/sIreDMVwrVvtRHjqm0aCTO8cYBA/MwSqN11xMZybP+qFQsmo0l1hiQZNrPJzCVV/15qfLDAvdZNyw3EwhB0gh+cS9qfL9/tyh4kHqi2Td1+hPdb1D3TPBnUqzUlbHuxEVE7AsF3e9d6SbkWi81uX2eT8B2exemrva6ogAJmI6d4WXMA7cfvXsGm6AMr4+KdDY8Z8ZruMTjm7Vcfl7ACpVIWgGpdyWCn/XPjjtEYVvEw9TMMgPyIYAiZiigymzPFfMbvyiUpjFsAiuEizaSyIK4ClXFYEwI1pVt99kcCFPqQmHkqqwUtURiBvHkIu3iMASOnkms6RglCrV/OQ7RhvfUGQAQAA'
-H 'X-BIZ: {"ex":"bW9kPVBFLVVMMDAmc3Y9NC40LjImbnQ9V0lGSSZucD3kuK3lm73ogZTpgJo="}'
-H 'KEY: 794ada43965074a9fb56e21c3497929d' -H 'enginever: 4.2'
-H 'User-Agent: AMAP_Location_SDK_Android 1.4.0'
-H 'ts: 1465955922810' -H 'scode: 71ca63b846f3ab98b2242293f0a86ca7'
-H 'ec: 1' -H 'Content-Type: application/octet-stream' -H 'Connection: Keep-Alive'
--data-binary @gps.dat  http://apilocate.amap.com/mobile/binary | gunzip

注意,这里的-H后面跟的header信息 ,@符号后面跟的是刚刚保存的gps.dat数据。特别需要注意是的管道给 gunzip 命令,由于这个请求后的回包是经过gzip压缩的,这个从header头里是可以看出的,所认返回的结果是乱码和fiddler上查看的结果xml 格式不同,加上gunzip命令后会自动执行解包动作,输出的结果会和fiddler里抓包的返回值一致。如下图:

 

 

三、写在最后

本篇关于二进制post的部分就先到这里,而且linux 的curl 工具也是相当的强大的,只不过书写时看起来不够美观而已,后面有时候会专门再理一个篇幅做urllib2、pycurl、request等python常同模块下post文件到服务器的写法。

时间: 2024-09-28 02:37:54

fiddler post二进制数据的例子的相关文章

处理二进制数据

我们在使用数据库时,有时会用到图像或其它一些二进制数据,这个时候你们就必须使用getchunk这个方法来从表中获得二进制大对象,我们也可以使用AppendChunk来把数据插入到表中. 我们平时来取数据是这样用的! getdata=rs("fieldname") 而取二进制就得这样 size=rs("fieldname").acturalsize getdata=rs("fieldname").getchunk(size) 我们从上面看到,我们取

base-为什么服务器发过来的二进制数据websocket接收不到?

问题描述 为什么服务器发过来的二进制数据websocket接收不到? 我用if(e) alert('abc')判断e里面什么也没接受到 但是服务器给我发 字符串 或者base64 都可以接收到这是为什么 难道websocket不支持接收 二进制数据吗 还是 我接收的方式不对. 解决方案 2进制数据用ws.rQshiftStr方法 解决方案二: 看下这个完整的例子http://download.csdn.net/detail/ghpan/7889015 解决方案三: 服务器是java,客户端是js

又是阮一峰:文件和二进制数据的操作 - 从来没这么佩服一个没见过面的人

文件和二进制数据的操作  来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 Blob对象 FileList对象 File对象 FileReader对象 综合实例:显示用户选取的本地图片 URL对象 参考链接 历史上,JavaScript无法处理二进制数据.如果一定要处理的话,只能使用charCodeAt()方法,一个个字节地从文字编码转成二进制数据,还有一种办法是将二进制数据转成Base64编码,再进行处理.这两种方法不仅速度慢,而且容易出错.ECMAScript

详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度_javascript技巧

分析并操作 responseXML属性  如果你使用 XMLHttpRequest 来获得一个远程的 XML 文档的内容,responseXML 属性将会是一个由 XML 文档解析而来的 DOM 对象,这很难被操作和分析.这里有五种主要的分析 XML 文档的方式:  1.使用 XPath 定位到文档的制定部分.  2.使用 JXON 将其转换成 JavaScript 对象树.  3.手工的 解析和序列化 XML 为字符串或对象.  4.使用 XMLSerializer 把 DOM 树序列化成字符

用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换

word|xml|二进制|生成xml|数据|转换 用vb将word文档(或其他的二进制数据)生成xml文件并互相转换1.    建立一个新的vb工程2.    引用 Microsoft XML,版本 2.0 或以上3.    在窗体form1上建立按钮 cmdCreateXML 和 cmdGetBinary 代码:Option ExplicitDim oDoc As DOMDocumentDim DOCINPATH As StringDim XMLOUTPATH As StringDim DOC

XML中二进制数据的处理方法

xml|二进制|数据 在xml中,所有的数据都是以文本的形式来显示,但是二进制数据不能直接以文本格式来表示,那xml又是怎么处理二进制数据的呢?下面就来探讨一下. 为了简单和通用性,xml被设计成了以文本的格式来表示数据.在xml中,所有的数据都是以文本的格式来存储,二进制数据也不例外.在xml中,二进制数据也要被编码成文本的格式,发送到目的方.目的方接收到这个文本二进制数据以后,再以相同的解码程序解成相应的二进制数据,当然数据原来的格式,名称等辅助信息一定要当作相关信息一起发送.一般二进制数据

VB.NET操作 SQL SERVER的 二进制数据

server|二进制|数据 在VB时期, 向SQL SERVER 中插入二进制数据, 是通过 ADODB.STREAM 实现, 在.NET中, 对 "流"格式的操作更加强大而简单,本篇演示向SQL SERVER 中插入数据并读出的功能. 在窗体上添加一个 OPENFILEDIALOG 控件, 两个PICTUREBOX, 代码如下:-------------------------------------------------------------------------------

[VBS]转换二进制数据为字符串常用办法

二进制|数据|转换|字符串 至少有三种以上办法,可以把二进制数据(比如您从ASP的Request.BinaryRead方法得到的数据)转换为字符串. 第一种:使用VBS的MultiByte 方法 实例: Function SimpleBinaryToString(Binary) 'SimpleBinaryToString converts binary data (VT_UI1 | VT_ARRAY Or MultiByte string) 'to a string (BSTR) using M

ASP.NET 2.0数据教程之五十七:编辑和删除现有的二进制数据

返回"ASP.NET 2.0数据教程目录" 导言: 在前面的3章里我们为处理二进制数据添加了很多的功能.我们 首先在表Categories里添加BrochurePath列,并更新了体系结构.同样,为了处 理表Categorie里现有的Picture列,我们在数据访问层和业务逻辑层里增加了相 应的方法.同时我们创建一个页面,在GridView控件里显示二进制数据 --包含一个指向说明小册子的下载链接,并将每个类的图片显示在 <img>元素里.同时我们添加一个DetailsVi