在Microsoft Ajax中伪造__EVENTVALIDATION

Tyi*_*ilo 5 asp.net microsoft-ajax

我正在为网站制作移动应用程序以查看您的日程安排.他们不提供任何API,也无意提供任何API.

该网站只能使用Ajax,但要伪造这些请求并刮掉我需要伪造__EVENTVALIDATION帖子字段的网站.

我对网站没有任何控制权,而且我从未使用ASP.NET或Microsoft Ajax构建任何东西.

有没有人这样做过?

我发现该__EVENTVALIDATION字段具有此模式(...符号根据请求更改字节,base64解码版本的hexdump):

d8 01 16 13 02 4f 0a
...
f6 e0 84 d4 05 02 a0 3f
e2 3f 03 02 3f d8 d1 d5 0c 02 bb 82 cf ec 08 02
b4 b5 99 f8 0b 02 3f 89 3f eb 04 02 d5 83 90 88
0a 02 8a db 94 90 03 02 8b cf 3f 85 08 02 93 3f
b1 3f 06 02 9b 3f 8f a5 02 02 b5 b4 af 85 01 02
d1 fc ae 9c 0e 02 b4 e2 94 9e 0a 02 3f e2 94 9e
0a 02 3f e2 94 9e 0a 02 bb 92 80 a5 06
...                                  

Mat*_*hew 9

在构建ASP.NET站点的scraper之前,我已经解决了这个问题.您需要请求浏览器用户通常会登陆的初始页面,提取__VIEWSTATE__EVENTVALIDATION散列,然后使用这些页面对您实际需要的数据进行第二次请求.

例如,如果您正在从表单提交中抓取响应:

  1. 为表单所在的页面发出AJAX请求
  2. 从响应中提取视图状态和事件验证哈希
  3. 创建一个模拟表单提交的新AJAX请求,将哈希作为参数传递

如果你正在寻找JavaScript函数从标记中提取哈希,我已经在GitHub上发布了我用作ms-viewstate的那些.