尝试抓取网页,我认为有必要使用ASP.NET的__VIEWSTATE
变量。所以,无论是乐观主义者,我都决定阅读这些变量及其格式。即使被微软列为开源,我也找不到任何正式的定义:
每个人都同意,第一步是使用Base64
解码器解码字符串。太棒了 - 这很有效......
接下来 - 这就是混乱所在的地方:
大约3/4的解码器似乎使用二进制值(其值表示后面的字段类型的字符)。这是example of such a specification。这种格式似乎也期望有一个'签名' 0xFF 0x01
的前两个字节。
其他文章(例如this one)描述了格式中的字段由t< ... >
,p< ... >
等分隔(或标记)的格式。 (这似乎是我感兴趣的页面的情况。)
即使看了一百多页,我也没有发现有关两种格式存在的提及。
我的问题是:是否有两种不同格式的__VIEWSTATE
变量正在使用中,还是我遗漏了一些基本的东西?在某处有__VIEWSTATE
内容的正式描述吗?
答案 0 :(得分:0)
视图状态由序列化和反序列化 System.Web.UI.LosFormatter类--LOS代表有限的对象 序列化 - 旨在有效地序列化某些类型 将对象转换为base-64编码的字符串。 LosFormatter可以 序列化可以被序列化的任何类型的对象 BinaryFormatter类,但用于高效序列化对象 以下类型:
- 字符串
- 整数
- 布尔
- 阵列
- 的ArrayList
- 散列表
- 对
- 三胞胎
您需要了解的有关ViewState的所有信息:Understanding View State