C#模拟登陆问题
我提交的验证码和服务器验证码不同步,我用httpwatch观察过,一堆cookie,不过都是send属性,也就是说,是浏览器发送给服务器的,这样的话,难道是js生成的,所以我用httpwebresponse的时候只有一个cookie,求解释
CookieContainer container = new CookieContainer();
private string GetHtml()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.douban.com/accounts/login?source=music");
// request.Headers[HttpRequestHeader.Cookie] =" __utmc=30149280";
request.CookieContainer = container;
request.Credentials = CredentialCache.DefaultNetworkCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
container.Add(response.Cookies);
ShowCookie(response.Cookies);
StreamReader reader = new StreamReader(response.GetResponseStream());
string html = reader.ReadToEnd();
reader.Close();
reader.Dispose();
return html;
}
private void ShowCookie(CookieCollection cc)
{
foreach(Cookie c in cc)
{
textBox2.Text += c.Name + "\r\n";
}
}
private void GetImg(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = container;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
ShowCookie(response.Cookies);
Stream read=response.GetResponseStream();
Image img = Image.FromStream(read);
read.Close();
read.Dispose();
pictureBox1.Image = img;
}
private string GetCheckCode()
{
Lexer lexer = new Lexer(GetHtml());
Parser parser = new Parser(lexer);
NodeFilter filterdown = new NodeClassFilter(typeof(Winista.Text.HtmlParser.Tags.ImageTag));
NodeList list = parser.Parse(filterdown);
for (int i = 0; i < list.Count; i++)
{
if (list[i] is ImageTag)
{
if ((list[i] as ImageTag).GetAttribute("ID") == "captcha_image")
{
return (list[i] as ImageTag).ImageURL;
}
}
}
return null;
}
private void button1_Click(object sender, EventArgs e)
{
// GetImg(GetCheckCode());
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.douban.com/accounts/login");
request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/QVOD, application/QVOD, */*";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MALN; CIBA; InfoPath.2; .NET4.0C; .NET4.0E; Media Center PC 6.0; Tablet PC 2.0; AskTB5.6)";
request.Method = "Post";
request.KeepAlive = true;
request.ContentType = "application/x-www-form-urlencoded";
request.ProtocolVersion = HttpVersion.Version10;
request.CookieContainer = container;
string postpara = "form_email=xxxxx&form_password=xxxxx&captcha_field='" + textBox1.Text + "'";
Encoding encod = Encoding.UTF8;
Byte[] post = encod.GetBytes(postpara);
request.ContentLength = post.Length;
Stream stream = request.GetRequestStream();
stream.Write(post, 0, post.Length);
stream.Close();
stream.Dispose();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
textBox2.Text = reader.ReadToEnd();
reader.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
GetImg(GetCheckCode());
}
C# 模拟登陆
C#
HttpWebRequest
补充:.NET技术 , C#