asp教程.net webform 开发的站点抓包的功能。该功能要求使用该网点内的帐号通过我们自己的程序获取网站内的数据。其间使用了httpwebrequest 进行抓包。具体的抓包过程就不重点讨论了。旨在和大家分享一下我在抓包过程中对viewstate 在 asp.net教程 webform 中的作用有了进一步的了解。如果存在不足之处,希望您能指出。
为了模拟http post/get 我们用vs建立两个工程,截图如下:
注:第一个工程是一个简单的asp.net web form 程序,第二个是模拟web form 的 winform 程序。
webapplication1 执行如下:
两个服务器端控件 dropdownlist 和 button 服务器端相应事件如下:
01 |
protected void dropdownlist1_selectedindexchanged(object sender, eventargs e)
|
02 |
{
|
03 |
|
04 |
}
|
05 |
|
06 |
protected void button1_click(object sender, eventargs e)
|
07 |
{
|
08 |
if (dropdownlist1.selectedvalue == "two")
|
09 |
{
|
10 |
lblinfor.text = "two";
|
11 |
}
|
12 |
else
|
13 |
{
|
14 |
lblinfor.text = "one";
|
15 |
}
|
16 |
}
|
功能代码非常简单,button1被单击后显示dropdownlist 的文本值:
webform介绍完,剩下就是用winform 通过http post/get来模拟web form 程序,程序运行界面如下:
这里的onepost 与twopost 分别模拟webform中 post 按钮click功能。
贴出模拟的核心代码:postbywebrequest 函数:
private void postbywebrequest(string strpostvalue)
{
try
{
string uri = "http://loc*al*host:*2026/webform1.aspx/";
httpwebrequest request = webrequest.create(uri) as httpwebrequest;
request.method = "get";
request.keepalive = true;
request.cookiecontainer = cookiecontainer;
httpwebresponse response = request.getresponse() as httpwebresponse;
system.io.stream responsestream = response.getresponsestream();
system.io.streamreader reader = new system.io.streamreader(responsestream, encoding.utf8);
//返回的页面html文本
string srcstring = reader.readtoend();
//veiwstate
string viewstateflag = "id="__viewstate" value="";
int len1 = srcstring.indexof(viewstateflag) + viewstateflag.length;
int len2 = srcstring.indexof(""", len1);
string viewstate = srcstring.substring(len1, len2 - len1);
//eventvalidation
string eventvalidationflag = "id="__eventvalidation" value="";
len1 = srcstring.indexof(eventvalidationflag) + eventvalidationflag.length;
len2 = srcstring.indexof(""", len1);
string eventvalidation = srcstring.substring(len1, len2 - len1);
//编码
viewstate = system.web.httputility.urlencode(viewstate);
eventvalidation = system.web.httputility.urlencode(eventvalidation);
//这里可以通过抓包工具获得poststring.记得中文需要urlencode编码。
string formatstring = "dropdownlist1={0}&button1={1}&__viewstate={2}&__eventvalidation={3}";
string poststring = string.format(formatstring, strpostvalue,
"do postback", viewstate, eventvalidation);
byte[] postdata = encoding.utf8.getbytes(poststring);
uri = "http://loc*al*host:*2026/webform1.aspx/";
//post
request = webrequest.create(uri) as httpwebrequest;
request.method = "post";
request.keepalive = false;
request.contenttype = "application/x-www-form-urlencoded";
request.cookiecontainer = cookiecontainer;
request.contentlength = postdata.length;
system.io.stream outputstream = request.getrequeststream();
outputstream.write(postdata, 0, postdata.length);
outputstream.close();
response = request.getresponse() as httpwebresponse;
responsestream = response.getresponsestream();
reader = new system.io.streamreader(responsestream, encoding.utf8);
srcstring = reader.readtoend();
}
catch (exception ex)
{
string msg = ex.message;
messagebox.show(ex.message);
}
}
燕云十六声英雄与美奇遇任务攻略分享
坦克大战共和国之辉兑换码分享 共和国之辉最新2025兑换码大全
酷派忍者兑换码在哪里 酷派忍者KUNAI最新2025兑换码大全
烤肉串模拟器兑换码分享 Kebab Chefs!-Restaurant Simulator最新兑换码
东方雪莲华兑换码怎么获得 东方雪莲华最新2025兑换码
Hellish Quart兑换码分享 Hellish Quart最新2025兑换码大全
模拟极限越野
模拟极限越野开着大巴在各种奇葩路况里送乘客。山路弯道多得让人
模拟火车
模拟火车让你当回真正的火车司机,得先学会看信号灯、操作控制杆
可口的披萨美味的披萨
可口的披萨美味的披萨带您体验经营一家披萨店的乐趣。游戏画风温
定制虚拟偶像最新版
定制虚拟偶像最新版是一款超级经典有趣的日本模拟装扮类型的手游
病娇模拟器手机版正版(yandere simulator)
病娇模拟器最新版手游是一款萌妹二次元模拟游戏,玩家在游戏中可