最近由于开始接触httpwebrequest和httpwebresponse。自己操作了加上goggle都没能解决。希望大家帮忙给指点一二。现在这个网站是这样的。首先登录该网站首页(未登录),会给一个sessionid。通过抓包发现请求验证码时,没有带此session的cookie。登录后跳转到一个导航页面3秒后自动跳转会第一次登录的页面。我的操作是这样的,直接请求验证码 (由于抓包发现没有带cookie去请求),
Random r=new Random(); HttpWebResponse resp;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://xxxx/code?"+r.NextDouble().ToString());
req.Timeout = 15000;
resp = (HttpWebResponse)req.GetResponse();
String temp=resp.Headers["Set-Cookie"];
String[] cok = temp.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); int aa = cok[0].IndexOf("=");
string cValue = cok[0].Substring(aa + 1).Trim();
cc = new CookieContainer();
Uri s = new Uri("http://xxxx");
Cookie c = new Cookie("PHPSESSID", cValue, "/", s.Host);
cc.Add(c); //CookieContainer
保存cookie后把sessionid和验证码用户名等数据都post进请求里面。
string postData = "";
postData = "username=" + name;
postData+="&code="+code;
postData += ("&password=" + password);
postData += "&x=" + 41;
postData += "&y=" + 26;
byte[] data = Encoding.Default.GetBytes(postData); Uri u = new Uri("https://xxx");
HttpWebRequest request = WebRequest.Create(u) as HttpWebRequest;
request.Referer = "http://xxxx";
request.Accept = "text/html, application/xhtml+xml, */*";
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.Method = "POST";
request.KeepAlive = true; //写入 post
Stream newStream = request.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close(); request.CookieContainer = cc; //刚刚验证码的cookie
MessageBox.Show(postData);
//接收返回的页面
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
System.IO.Stream responseStream = response.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
string srcString = reader.ReadToEnd();
textBox1.Text = srcString;
但是登录却提示验证码错误。请问错误何在?
在我提交后的头信息里没发现我加入的cookie,并且出现一个 100-continue 。何解?大家说该用什么样的一个流程,我的操作有误吗?什么时候时候请求应该附加cookie什么时候不加?谢谢
Random r=new Random(); HttpWebResponse resp;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://xxxx/code?"+r.NextDouble().ToString());
req.Timeout = 15000;
resp = (HttpWebResponse)req.GetResponse();
String temp=resp.Headers["Set-Cookie"];
String[] cok = temp.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); int aa = cok[0].IndexOf("=");
string cValue = cok[0].Substring(aa + 1).Trim();
cc = new CookieContainer();
Uri s = new Uri("http://xxxx");
Cookie c = new Cookie("PHPSESSID", cValue, "/", s.Host);
cc.Add(c); //CookieContainer
保存cookie后把sessionid和验证码用户名等数据都post进请求里面。
string postData = "";
postData = "username=" + name;
postData+="&code="+code;
postData += ("&password=" + password);
postData += "&x=" + 41;
postData += "&y=" + 26;
byte[] data = Encoding.Default.GetBytes(postData); Uri u = new Uri("https://xxx");
HttpWebRequest request = WebRequest.Create(u) as HttpWebRequest;
request.Referer = "http://xxxx";
request.Accept = "text/html, application/xhtml+xml, */*";
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.Method = "POST";
request.KeepAlive = true; //写入 post
Stream newStream = request.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close(); request.CookieContainer = cc; //刚刚验证码的cookie
MessageBox.Show(postData);
//接收返回的页面
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
System.IO.Stream responseStream = response.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
string srcString = reader.ReadToEnd();
textBox1.Text = srcString;
但是登录却提示验证码错误。请问错误何在?
在我提交后的头信息里没发现我加入的cookie,并且出现一个 100-continue 。何解?大家说该用什么样的一个流程,我的操作有误吗?什么时候时候请求应该附加cookie什么时候不加?谢谢
2.抓包工具跟踪,看你发出的包是否和正常登陆时候的包一样,这样就很明显了