• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#简单模拟用户登录类

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

为了实现模拟用户登录,忙活了两天了,先说一下我吃亏的地方。没有去深入理解,思维太单一。还是在此先感谢参考文章的作者!毕业论文要涉及到一个论坛采集系统,由于现在很多的论坛都要登录才能访问,具体说,我要实现的系统要登录一个网络课程的论坛,具体的页面没有帐号是不能访问的。

注:这里针对的是没有验证码的网站,以后有时间的话会把这个问题解决一下,不多说了,直接贴代码了:

程序结构:

class PostGetWebRequest

    方法:PostWebRequest、 GetWebRequest();

 

要登录的网站的login.htm

 

<html >
<head>
    
<title></title>
</head>
<body>
 
<form id="form1" action="Default.aspx" method="post" name="form1">
    
<div>
       
        
<table border="0" cellpadding="0" cellspacing="0">
            
<tr>
                
<td style="width: 58px; height: 26px;">
             
<input type="text" name="userid"   >
                    
                    
</td>
                
<td style="width: 100px; height: 26px;">
       
</td>
            
</tr>
            
<tr>
                
<td style="width: 58px; height: 26px;">
                    
                    
<input type="password" name="userpass" >
                       
                    
</td>
                
<td style="width: 100px; height: 26px;">
       
</td>
            
</tr>
            
<tr>
                
<td style="width: 58px; height: 26px">
                
</td>
                
<td style="width: 100px; height: 26px">
      
<input type="submit" value="submit1"  name="submit1">
        
</td>
            
</tr>
            
<tr>
                
<td style="height: 26px">
                
</td>
                
<td style="height: 26px">
        
</td>
            
</tr>
        
</table>
    
</div>
    
</form>
</body>
</html>

 

这里需要注意的参数:

form 的action ,post 的时候就是要post 这个action页面,如果是aspx 页面的话,就是本页了,当然aspx 是要复杂些的,多了两个viewstate 和__EVENTVALIDATION 两个参数。username :userid

password:userpass

submit name :submit1,value:submit1

引用别人的一段话:

 

httpWebRequest 提交数据后保持会话状态,我们在C# 中要知道下面的这些:

只要我们定义一个CookieContainer对象,用如下语句: CookieContainer cookie = new CookieContainer(); 然后把这个cookie附加到httpWebRequest的对象就行了.myReq.CookieContainer = cookie;(myReqhttpWebRequest的对象).如果需要在别的httpWebRequester对象里保持会话状态,那么可以把 myReq.CookieContainer这个对象保存起来,oldCookieContainer = myReq.CookieContainer并在再次进行网页请求时,把这个对象付给新的httpWebRequester对象。

登录的原理如下:

 

HTTP协议是一个无连接的协议,也就是说这次对话的内容和状态与上次的无关,为了实现和用户的持久交互,网站与浏览器之前在刚建立会话时将在服务器内存中建立一个Session,该Session标识了该用户(浏览器),每一个Session都有一个唯一的ID,第一次建立会话时服务器将生成的这个ID传给浏览器,浏览器在接下来的浏览中每一个发向服务器的请求中都将包含该SessionID,从而标识了自己的身份。

服务器上是使用内存来保存Session中的信息,那么浏览器又使用什么来保存服务器分配的这个SessionID了?对,是Cookie。在刚建立会话时浏览器向服务器的请求中将不包含SessionIDCookie中,服务器就认为是一个全新的会话,从而在服务器上分配一段内存给该Session用,同时将该SessionIDHttp Header中使用Set-Cookie发送给浏览器。

---------------------------------------------------------------------

好,到这里前提条件都了解到差不多了。关于login.html action页面我们不去研究,只要知道是怎么post 数据的就可以了,如果想明确了解到话,可以使用http://www.svnhost.cn/Download/?k=httpwatch  上面的httpWatch 查看究竟有哪些postData.

C#类如下:

 

  1using System;
  2using System.Collections.Generic;
  3using System.Text;
  4using System.IO;
  5using System.Net;
  6
  7namespace MyLogin
  8

 

 

调用页面代码:

 1PostGetWebRequest  postGetWebRequest = new PostGetWebRequest() ;// 没有验证码的网站,登录页面html格式,客户端的
 2            postGetWebRequest.HtmlUserName="userid";
 3            postGetWebRequest.HtmlPassword="userpass";
 4            postGetWebRequest.HtmlSubmit = "submit1";
 5            postGetWebRequest.UserName = "GUEST";
 6            postGetWebRequest.Password = "GUEST";
 7            postGetWebRequest.Submit = "submit1";
 8            postGetWebRequest.LoginUrl = "http://××××/use_go.jsp";//这里非常关键,我在这里费了好久啊,虽然登录页面是"http://××××/";但处理页面是use_go.jsp,哎,.net 网站是在本页
 9            postGetWebRequest.LocationUrl = "http://×××?bbs_id=7822458&course_id=53601";
10           string content1=   postGetWebRequest.PostWebRequest();//着两个方法调用是有先后顺序的
11           string content2 = postGetWebRequest.GetWebRequest();
12
13           richTextBox1.Text = content1;
14           richTextBox2.Text = content2;

 

 

里面都有注释了,就不多罗嗦了,有问题高手多指教,有需要代码的站内联系.

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
关于C++的extern关键字发布时间:2022-07-14
下一篇:
CSC时无法找到C:\ProgramFiles\MicrosoftSDKs\Windows\v6.0A\lib发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap