Jailu.NET
自学好学勤学学而自用,无思厌思废思思而无功。
向前走,不后悔!
欢迎加入MSN群 - .NET 技术交流(dotnetbeginner@hotmail.com)
社区
首页
新随笔
联系
管理
订阅
随笔- 170 文章- 0 评论- 235
C#网站登录学习笔记(一):登录简单网站
最近在园子里看到
深蓝
写的几篇关于网站登录的文章,觉得挺好玩,挺感有趣的,遂决定学习一下。但凡学习都有一个渐进的过程,以下是自己初步制定的学习步骤:
1. 在本地创建一个简单的网站,尝试用C#登陆;
2. 在网上找一个不需要验证码就可以登录的网站,尝试用C#登陆;
3. 在网上找一个需要验证码才能登录的网站,尝试用C#登陆
一、创建最简单的测试网站
:该网站只包含两个页面:Default.aspx(登录页面)和LoginSuccess.asp(登录成功页面)。其中,当用户在Default.aspx页面中登录成功后,系统将跳转到登录成功页面;登录成功页面只有登录后才能访问;网站用Session保存、判断用户是否登录。
二、抓包分析
:通过抓包,初步了解登录网站需要的数据。这里使用HTTP Analyzer工具进行抓包,进行抓包时,应关闭其他可能访问网络的软件,减少其他无用包对数据分析造成影响。
1. 打开HTTP Analyzer,启动抓包;
2. 用浏览器访问登录页面(http://localhost/TestLogin/Default.aspx);
3. 输入用户名、密码,登录网站(登录后,系统将自动转向登录成功页面http://localhost/TestLogin/LoginSuccess.aspx)
(图一)
(图二)
三、编写C#程序实现网站登录
1. 首先了解一下,如何使用HttpWebRequest、HttpWebResponse、Stream来访问一般的页面,只需要使用简单的代码就OK了:
public
string
GetHtml(
string
url)
{
HttpWebRequest httpWebRequest;
httpWebRequest
=
(HttpWebRequest)HttpWebRequest.Create(url); // url = "http://localhost/TestLogin/Default.aspx"
HttpWebResponse httpWebResponse;
httpWebResponse
=
(HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream
=
httpWebResponse.GetResponseStream();
StreamReader streamReader
=
new
StreamReader(responseStream, Encoding.UTF8);
string
html
=
streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
return
html;
}
2. 如果含有PostData,那么还需指定HttpWebRequest的相关属性,这些属性值可从抓包中获取:
public
string
GetHtml(
string
url,
string
postData, Method method)
{
byte
[] byteRequest
=
Encoding.Default.GetBytes(postData);
// postData = "__VIEWSTATE=%2FwEPDwULLTExNTc2NTI3OTlkZNLUwsKE0KKoVuCh7ELNz2cjAKBU&txtUserName=a&txtPassword=b&btnLogin=Login&__EVENTVALIDATION=%2FwEWBAKfnfTIDwKl1bKzCQK1qbSRCwKC3IeGDM%2FBt6kokoXv5qmx7K4EgFwj1si0"
HttpWebRequest httpWebRequest;
httpWebRequest
=
(HttpWebRequest)HttpWebRequest.Create(url); // url = "http://localhost/TestLogin/Default.aspx"
httpWebRequest.ContentType
=
contentType;
httpWebRequest.Referer
=
referer;
httpWebRequest.Accept
=
accept;
httpWebRequest.UserAgent
=
userAgent;
httpWebRequest.Method
=
method
==
Method.POST
?
"
POST
"
:
"
GET
"
;
httpWebRequest.ContentLength
=
byteRequest.Length;
Stream stream
=
httpWebRequest.GetRequestStream();
stream.Write(byteRequest,
0
, byteRequest.Length);
stream.Close();
HttpWebResponse httpWebResponse;
httpWebResponse
=
(HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream
=
httpWebResponse.GetResponseStream();
StreamReader streamReader
=
new
StreamReader(responseStream, Encoding.UTF8);
string
html
=
streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
return
html;
}
下图是在程序中调用以上代码访问登录页面后的抓包结果,可以发现登陆成功了:
在下一篇的笔记中,将描述如何访问需要登录后才能访问的页面(相关的代码也将在下一篇笔记中给出)。
posted @ 2008-05-10 15:54
jailu
阅读(617)
评论(2)
编辑
收藏
所属分类:
C#
发表评论
回复
引用
查看
#1楼
2008-05-10 17:22 |
簡簡單單..
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2008-05-10 22:00 编辑过
相关文章:
C#字符串分割
如何配置C#命令行编译器
MSN Messenger 不能登录的解决方案"0x81000370错误"
深入浅出之正则表达式(一)
FileInfo 复制文件 是否完成 如何判断 C#
C# 外网如何用TCP向内网传文件?
C# 来这里学习C#吧
C# 委托
相关链接:
所属分类的其他文章:
C#网站登录学习笔记(二):访问需登录后才能访问的页面
C#网站登录学习笔记(一):登录简单网站
利用OLEDB导出数据到Excel
[转]用System.Attribute扩展元数据
C#2.0中获取程序的运行时间
a + b + c + d + e = N求解代码
通用方法验证数组成员唯一性
如何用C#动态编译、执行代码
一份挺好的C#编程规范
Enterprise Library:DAAB + OLEDB/ODBC操作Access数据库
最新IT新闻:
Google股价跌破329美元 61%员工期权价值归零
十年祭:昔日明星软件今何在?
六大可能出售IT企业名单:SUN领头或被猎走
Linux内核2.6.27正式到来
《星际争霸2》一分为三 各种族依次登场
公告
本名:李敏杰
网名:jailu
职业:.NET程序员
位置:中国 厦门
jailusd@hotmail.com
Q Q:
101535223
百度HI:jailulee
我的最新闪存
发现想把开发和项目管理一齐做好,真是太难了!总是顾了这头,落了那头!
10-10 10:49
<
2008年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
与我联系
发短消息
搜索
留言簿
给我留言
查看留言
我参与的团队
DNN团队博客(0/342)
Ajax&Atlas技术团队(0/1138)
ASP.NET AJAX (Atlas)学习(0/1352)
O/R Mapping团队(0/209)
Silverlight学习与研究(0/287)
随笔分类
AJAX(6)
(rss)
Anthem.NET(2)
(rss)
ASP.NET(35)
(rss)
C#(34)
(rss)
Castle(7)
(rss)
DotNetNuke(5)
(rss)
Javascript(3)
(rss)
NET for symbian(1)
(rss)
NHibernate(3)
(rss)
Silverlight(2)
(rss)
Y.小程序(16)
(rss)
Z.心情札记(29)
(rss)
技术链接
DIV+CSS
Jailu的百度收藏
(rss)
Silverlight中文社区
TerryLee's Tech Space
w3school 在线
代码在线格式化
积分与排名
积分 - 81205
排名 - 522
最新评论
1. re: C#网站登录学习笔记(二):访问需登录后才能访问的页面
我试了,效果不错,呵呵 (爱查)
2. re: [转]如何捕捉WEB窗体关闭事件
建议看一下:
(sayo)
3. re: VSS 2005 配置(含录像)
狂顶!
困扰了两天的问题,看了楼主的视频;终于明白了。
狂谢!!!!!!!!!! (hansom)
4. re: C#网站登录学习笔记(二):访问需登录后才能访问的页面
有个问题:
如果已经登陆过,如何利用已经存在的cookie。
即:我用IE登陆过,程序就可以利用已经有了的cookie,而不用再在程序里登陆。 (waitingyou)
5. re: C#网站登录学习笔记(二):访问需登录后才能访问的页面
等你的实战! (waitingyou)
阅读排行榜
1. VSS 2005 配置(含录像)(6063)
2. NHibernate学习笔记(三):many-to-one/one-to-many/many-to-many关系映射(4810)
3. 体验Ajax Toolkit新控件:CalendarExtender(日历控件)(4117)
4. 推荐两个不错的下拉式日期选择控件(2877)
5. 用System.Net.Mail发送邮件(2505)
评论排行榜
1. 体验Ajax Toolkit新控件:CalendarExtender(日历控件)(18)
2. 体验AJAX Toolkit新控件:AutoCompleteExtender(18)
3. 推荐两个不错的下拉式日期选择控件(17)
4. 七招制胜ASP.NET应用程序开发(16)
5. “无法找到Internet Explorer”的解决方法(12)