关于网站登录的一些问题(2)谁能解决都行
代码如下:using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
namespace MailLogin1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static CookieContainer cc = new CookieContainer();
public HttpWebResponse SendRequest(string method, string url, string referer, byte[] buffer)
{
HttpWebRequest request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = method;
request.Timeout = 10000;
request.CookieContainer = cc;
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; CIBA; .NET CLR 2.0.50727)";
//if(referer!=null && referer.Length>0)
// request.Referer = referer;
if (method.ToUpper() == "POST")
{
Stream stream = request.GetRequestStream();
stream.Write(buffer, 0, buffer.Length);
stream.Close();
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
return response;
}
private void btnLogin_Click(object sender, EventArgs e)
{
string strHTML = "";
string getcookieurl = "http://www.jubaoxiang.com/logon.aspx";
strHTML = GetSyncHTML(CreateWebRequest(getcookieurl), null);
HttpWebResponse loginresponse1 = SendRequest("GET", getcookieurl, null, null);
cc.Add(loginresponse1.Cookies);
string url = "http://www.jubaoxiang.com/logondo.aspx";
string postdata = "username=hellscream&pwd=fuckyou&checkcode="+txtcheckcode.Text.ToString();
byte[] buf = System.Text.Encoding.UTF8.GetBytes(postdata);
HttpWebResponse loginresponse = SendRequest("POST", url, "http://www.jubaoxiang.com/logon.aspx", buf);
ressponsewriter(loginresponse );
}
private void ressponsewriter(HttpWebResponse loginresponse)
{
Console.WriteLine(((HttpWebResponse)loginresponse).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream;
dataStream = loginresponse.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
rtbContent.Text = responseFromServer;
Console.WriteLine(responseFromServer);
// Clean up the streams.
reader.Close();
dataStream.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Load("http://www.jubaoxiang.com/checkcode.aspx");
}
public static String GetSyncHTML(WebRequest request, System.Text.Encoding encoding)
{
Stream dataStream = GetStream(request);
string strHtml = string.Empty;
System.IO.StreamReader sr = null;
try
{
sr = new System.IO.StreamReader(dataStream);
strHtml = sr.ReadToEnd();
}
finally
{
if (sr != null) { sr.Close(); }
}
return strHtml;
}
public static HttpWebRequest CreateWebRequest(string URL)
{
return CreateWebRequest(URL, string.Empty, string.Empty, null);
}
public static HttpWebRequest CreateWebRequest(string URL, string strReferer, string PostData, System.Text.Encoding encoding)
{
Uri URI = new Uri(URL);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URI);
request.KeepAlive = true;
request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*";
if (strReferer.Length == 0)
{
request.Referer = URL;
}
else
{
request.Referer = strReferer;
}
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727)";
return request;
}
public static Stream GetStream(WebRequest request)
{
Stream dataStream;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
dataStream = response.GetResponseStream();
cc.Add(response.Cookies);
return dataStream;
}
}
}
问题出来了,
我写的提交后的数据:
GET /logon.aspx HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; CIBA; .NET CLR 2.0.50727)
Host: www.jubaoxiang.com
正常使用IE后提交的数据:
GET /logon.aspx HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; 360SE)
Host: www.jubaoxiang.com
Connection: Keep-Alive
Cookie:
AJSTAT_ok_pages=87; AJSTAT_ok_times=1; cck_lasttime=1281316374421; cck_count=0; EDiaryEditor_RUser=1324481743; ASP.NET_SessionId=mufhxm45nfdrhlrfbbaljf45;
__utma=132314517.1019886893.1281316376.1281318389.1281320740.3; __utmb=132314517.9.10.1281320740; __utmz=132314517.1281316376.1.1.utmcsr=(direct)|utmccn=
(direct)|utmcmd=(none);
forever.jubaoxiang.com=UserID=w4GXGAQHpLg=&UserName=yTTwCYh8NDzWKnkkqR/Bjw==&Email=Lw4ktGkELI1hzpSRIxhbyTeVb26kd3Ii&Keys=j+519z2Nhn+IAqbJdZ5NcG4rG4TuBfT6Y+Ie
gu6vngA=&IP=o62rgiH+Lxyl5zAwHzdEIA==&Time=bjPmWpMQkaUAytXq7FcWdkkehI4nb9X4; afp_znzgp-100203=yes; afp_rg-cp-091103=yes; __utmc=132314517
最后发现没有cookie - -,搞了老半天还是不行 - -,有哪位前辈帮忙看下什么问题么?
--------------------编程问答-------------------- 等
在线等
哎 --------------------编程问答-------------------- 模拟登陆?
很多站点还要带很多参数的
string formatString = "txt_UserName={0}&txt_Password={1}&btn_Login={2}&__VIEWSTATE={3}&__EVENTVALIDATION={4}&txt_PreUrl={5}&__EVENTTARGET={6}&__EVENTARGUMENT={7}&btn_Login.x={8}&btn_Login.y={9}";
--------------------编程问答-------------------- 换个请求试试 用WebRequest
或者HttpWebRequest request = (HttpWebRequest)WebRequest.Create("");
这东西很麻烦的,有时候cookie还需要自己设置 --------------------编程问答-------------------- 经过几天回家的无聊时间,发现是网站的设置cookie时用javascript脚本实现cookie,而代码里面没有执行javascript脚本 --------------------编程问答-------------------- 那就恭喜楼主解决了 --------------------编程问答-------------------- 恭喜恭喜 --------------------编程问答-------------------- 原来已经解决了....... --------------------编程问答-------------------- 我也来看看这是什么情况 --------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 , C#