问题描述
c#模拟登录知乎:conststringUrl=@"http://www.zhihu.com/login";处理的大概流程也知道,就是用程序模拟浏览器,发送request,然后得到response,继而得到相应的html数据进行分析。网上看了好多,用起来感觉不是很适应,大多都是应用cookies获取,我想先不用太复杂,直接帐号密码登录获取页面就行了,最后获取的html保存为html后如下所示:可实际上我想得到最终的html是这样的我的代码publicstaticstringSendRequest(){HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(Url);//CookieContainercc=newCookieContainer();//---simulateaccount:request.Method="POST";//request.ContentType="";//request.CookieContainer=cc;stringdata="_xsrf:aaaanumber&"+"email:my@mail.com&"+"password:password&"+"rememberme:y";data=HttpUtility.UrlEncode(data);byte[]postdata=Encoding.UTF8.GetBytes(data);request.Credentials=CredentialCache.DefaultCredentials;request.ContentLength=postdata.Length;request.AllowAutoRedirect=false;request.KeepAlive=true;using(Streamstream=request.GetRequestStream()){stream.Write(postdata,0,postdata.Length);stream.Close();}HttpWebResponseres=(HttpWebResponse)request.GetResponse();//res.Cookies=cc.GetCookies(request.RequestUri);//returnresponse;stringhtmlData=string.Empty;Streamdatastream=res.GetResponseStream();if(datastream!=null){varreader=newStreamReader(datastream);htmlData=reader.ReadToEnd();reader.Close();datastream.Close();}res.Close();returnhtmlData;}
解决方案
本帖最后由 songsz123 于 2015-03-18 16:57:56 编辑
解决方案二:
没人么。。。。。
解决方案三:
不能上来就发post吧,先发个首页的get获取cookie
解决方案四:
你没传cookie,服务器找不到你的登录信息,当然跳转到登陆页面啦
解决方案五:
1.首先你得了解HTTP协议,浏览器是怎么实现请求和接收的2.了解COOKIE,SESSION是怎么回事3.了解登录验证和上面有什么关系