Viewstate:2种不同的格式?

时间:2016-12-27 15:09:59

标签: html asp.net web-scraping

尝试抓取网页,我认为有必要使用ASP.NET的__VIEWSTATE变量。所以,无论是乐观主义者,我都决定阅读这些变量及其格式。即使被微软列为开源,我也找不到任何正式的定义:

每个人都同意,第一步是使用Base64解码器解码字符串。太棒了 - 这很有效......

接下来 - 这就是混乱所在的地方:

  1. 大约3/4的解码器似乎使用二进制值(其值表示后面的字段类型的字符)。这是example of such a specification。这种格式似乎也期望有一个'签名' 0xFF 0x01的前两个字节。

  2. 其他文章(例如this one)描述了格式中的字段由t< ... >p< ... >等分隔(或标记)的格式。 (这似乎是我感兴趣的页面的情况。)

  3. 即使看了一百多页,我也没有发现有关两种格式存在的提及。

    我的问题是:是否有两种不同格式的__VIEWSTATE变量正在使用中,还是我遗漏了一些基本的东西?在某处有__VIEWSTATE内容的正式描述吗?

1 个答案:

答案 0 :(得分:0)

  

视图状态由序列化和反序列化   System.Web.UI.LosFormatter类--LOS代表有限的对象   序列化 - 旨在有效地序列化某些类型   将对象转换为base-64编码的字符串。 LosFormatter可以   序列化可以被序列化的任何类型的对象   BinaryFormatter类,但用于高效序列化对象   以下类型:

     
      
  • 字符串
  •   
  • 整数
  •   
  • 布尔
  •   
  • 阵列
  •   
  • 的ArrayList
  •   
  • 散列表
  •   
  •   
  • 三胞胎
  •   

您需要了解的有关ViewState的所有信息:Understanding View State