0
点赞
收藏
分享

微信扫一扫

模拟CSDN登录


  1. using
  2. using
  3. using
  4. using
  5. using
  6. using
  7. using
  8. using
  9.   
  10. using
  11. using
  12. using
  13. using
  14.   
  15. namespace
  16. {  
  17. public  partial  class
  18.     {  
  19. new
  20. string
  21.   
  22. public
  23.         {  
  24.             InitializeComponent();  
  25.         }  
  26.   
  27. private   void  Form1_Load( object
  28.         {  
  29. // 读取登录页面,获取 VIEWSTATE 及 Cookies
  30. byte [] bs = getBytesstring
  31. "id=/"__VIEWSTATE/" value=/"" ;                       // viewState 的开始字符串
  32. int
  33. int  end = html.IndexOf( "/""
  34. // 获取 viewState
  35.   
  36. // 读取图片校验码并显示图片
  37. , cc,  null
  38. new
  39. new
  40. // 显示图片验证码
  41.             ms.Close();  
  42.         }  
  43.   
  44. // 更新图片验证码
  45. private   void  pictureBox1_DoubleClick( object
  46.         {  
  47. byte [] bs = getBytes , cc,  null
  48. new
  49. new
  50. // 更新图片验证码(可能看不清楚)
  51.             ms.Close();  
  52.         }  
  53.   
  54. // 显示 Cookies 信息
  55. private   void  button3_Click( object
  56.         {  
  57. new
  58. new  Uri(foreach  (Cookie c  in
  59.             {  
  60. " --> "
  61.             }  
  62.             richTextBox1.Text = sb.ToString();  
  63. " Bytes"
  64.         }  
  65.   
  66. // 用户登录
  67. private   void  btnLogin_Click( object
  68.         {  
  69. try
  70.             {  
  71. string  userName = txtUser.Text;                              // 获取用户名
  72. string  userPwd = txtPassword.Text;                           // 获取口令
  73. string  Verify = txtVerify.Text;                              // 获取验证码
  74. string  postData =  "__VIEWSTATE="  + HttpUtility.UrlEncode(viewState) +  "&ctl00$CPH_Content$tb_LoginNameOrLoginEmail="  + userName +  "&ctl00$CPH_Content$tb_Password="  + userPwd +  "&ctl00$CPH_Content$tb_ExPwd="  + Verify +  "&ctl00$CPH_Content$Image_Login.x=16&ctl00$CPH_Content$Image_Login.y=17" ;   //&from=";
  75. byte [] buffer = Encoding.Default.GetBytes(postData);         // 要发送的数据
  76. string  html = Encoding.UTF8.GetString(buffer);               // 获取返回的页面内容
  77.   
  78. if  (html.IndexOf( "您好,您已经成功登录。"
  79.                 {  
  80. "你已成功登录 CSDN"
  81.                 }  
  82. else
  83.                 {  
  84. "登录 CSDN 失败!"
  85.                 }  
  86.             }  
  87. catch
  88.             {  
  89.                 MessageBox.Show(Err.Message);  
  90.             }  
  91.         }  
  92.   
  93. // 读取网络资源,返回字节数组
  94. private   static   byte [] getBytes( string  url, CookieContainer cookie,  byte
  95.         {  
  96. int  c = url.IndexOf( "/"
  97. byte [] data =  null
  98.             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);  
  99.             request.CookieContainer = cookie;  
  100.             request.Referer = (c > 0 ? url.Substring(0, c) : url);  
  101. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
  102. "gzip, deflate"
  103.   
  104. if  (postData !=  null )                                            // 需要 Post 数据
  105.             {  
  106. "POST"
  107. "application/x-www-form-urlencoded"
  108.                 request.ContentLength = postData.Length;  
  109.                 Stream requestStream = request.GetRequestStream();  
  110.                 requestStream.Write(postData, 0, postData.Length);  
  111.                 requestStream.Close();  
  112.             }  
  113.   
  114.             HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
  115. string
  116. int  ContentLength = ( int
  117.             Stream s = response.GetResponseStream();  
  118.             c = 1024 * 10;  
  119. if  (ContentLength < 0)                                           // 不能获取数据的长度
  120.             {  
  121. new   byte
  122. new
  123. int
  124. while
  125.                 {  
  126.                     ms.Write(data, 0, l);  
  127.                     l = s.Read(data, 0, c);  
  128.                 }  
  129.                 data = ms.ToArray();  
  130.                 ms.Close();  
  131.             }  
  132. else                                                              // 数据长度已知
  133.             {  
  134. new   byte
  135. int
  136. while
  137.                 {  
  138. int
  139.                     pos += l;  
  140.                     ContentLength -= l;  
  141.                 }  
  142.             }  
  143.             s.Close();  
  144.             response.Close();  
  145.   
  146. if  (ce ==  "gzip" )                                                // 若数据是压缩格式,则要进行解压
  147.             {  
  148. new  MemoryStream();                        // 解压后的流   
  149. new  MemoryStream(data);                    // 用于解压的流   
  150. new
  151. byte [] buffer =  new   byte [c];                                 // 读数据缓冲区      
  152. int  l = g.Read(buffer, 0, c);                                // 一次读 10K      
  153. while
  154.                 {  
  155.                     js.Write(buffer, 0, l);  
  156.                     l = g.Read(buffer, 0, c);  
  157.                 }  
  158.                 g.Close();  
  159.                 ms.Close();  
  160.                 data = js.ToArray();  
  161.                 js.Close();  
  162.             }  
  163. return  data;                                                     // 返回字节数组
  164.         }  
  165.     }  
举报

相关推荐

0 条评论