模拟浏览器进行网站登录并获得登陆后网页
1 private void Download()
2 {
3
4
5 string url1 = @"http://xxx.xxx.xxx.xxx/checklogin.asp"; //提交注册信息的网址
6 string url2 = @"http://yyy.yyy.yyy.yyy/selection/z_Main.asp?str=xkjg"; //需要下载的网页
7
8
9 string indata = "name=" + UserNum + "&pswd=" + UserLPwd + "&ut=1&Submit=%B5%C7%C2%BC"; //提交的注册信息(通过抓包得到)
10
11
12 CookieContainer myCookieContainer = new CookieContainer(); //新建一个CookieContainer来存放Cookie集合
13 HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url1); //新建一个HttpWebRequest
14 myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
15 myHttpWebRequest.ContentLength = indata.Length;
16 myHttpWebRequest.Method = "POST";
17 myHttpWebRequest.CookieContainer = myCookieContainer; //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer
18 Stream myRequestStream = myHttpWebRequest.GetRequestStream();
19 StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("GB2312"));
20 myStreamWriter.Write(indata); //把数据写入HttpWebRequest的Request流
21
22 myStreamWriter.Close();
23 myRequestStream.Close(); //关闭打开对象
24
25
26 HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); //新建一个HttpWebResponse
27 myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri); //获取一个包含url的Cookie集合的CookieCollection
28 Stream myResponseStream = myHttpWebResponse.GetResponseStream();
29 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
30 outdata = myStreamReader.ReadToEnd();//把数据从HttpWebResponse的Response流中读出
31 myStreamReader.Close();
32 myResponseStream.Close();
33 //Console.WriteLine(outdata);//显示"登录"
34
35
36 //拿到了Cookie,再进行请求就能直接读取到登录后的内容了
37
38 myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url2);
39 myHttpWebRequest.CookieContainer = myCookieContainer;//*
40 //刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证
41 myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
42 myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
43 myResponseStream = myHttpWebResponse.GetResponseStream();
44 myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("GB2312"));
45 outdata = myStreamReader.ReadToEnd();
46 myStreamReader.Close();
47 myResponseStream.Close();
48 //Console.WriteLine(outdata);
49 //再次显示"登录"
50 //如果把*行注释调,就显示"没有登录"
51
52 MessageBox.Show("haha");
53
54
55 }
如果需要转载本博客的文章,请注明原文章地址

浙公网安备 33010602011771号