首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求C#模拟网页自动注册解决思路

2012-01-14 
求C#模拟网页自动注册求C#模拟网页自动注册源代码以研究(如果有图片验证最好。呵呵)。如果有的,发送邮件到xz

求C#模拟网页自动注册
求C#模拟网页自动注册源代码以研究(如果有图片验证最好。呵呵)。如果有的,发送邮件到xzg_del@sohu.com.100分,如果多人只能开新贴给分。

[解决办法]
没图片验证,即使有,各个网站也不一样 很难做到通用
[解决办法]
学习
[解决办法]
Red_angelX(八戒) 说得对.
各个网站也不一样 很难做到通用

看HttpWebRequest
POST数据

用单独的网站做练习.先搞定一个再说
[解决办法]
这个东西我做过 就是 HttpWebRequest 很简单 就是设置下head 用post到指定地址就可以啦
不过cookie是个难点,取得图片和取得首页 到登陆完成 cookie要维持,还有不同的网站,登陆前后获取cookie和cookie个数都有所不同
[解决办法]
tring url = "http://my.b2b.hc360.com/my/turbine/template/firstview,other_login.html ";

string indata = @ "LoginID=mytestcs&Passwd=aabbccdd&LoginChk=true&Submit=%B5%C7%A1%A1%A1%A1%C2%BC ";

string outdata= " ";

CookieContainer myCookieContainer=new CookieContainer();
//新建一个CookieContainer来存放Cookie集合
HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url);
//新建一个HttpWebRequest
myHttpWebRequest.ContentType= "application/x-www-form-urlencoded ";
myHttpWebRequest.ContentLength=indata.Length;
myHttpWebRequest.Method= "POST ";
myHttpWebRequest.CookieContainer=myCookieContainer;
//设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer
Stream myRequestStream=myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter=new StreamWriter(myRequestStream,Encoding.GetEncoding( "gb2312 "));
myStreamWriter.Write(indata);
//把数据写入HttpWebRequest的Request流
myStreamWriter.Close();
myRequestStream.Close();

//关闭打开对象
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
//新建一个HttpWebResponse
myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
//获取一个包含url的Cookie集合的CookieCollection
Stream myResponseStream=myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding( "gb2312 "));
outdata=myStreamReader.ReadToEnd();
//把数据从HttpWebResponse的Response流中读出
myStreamReader.Close();
myResponseStream.Close();
Console.WriteLine(outdata);
//显示 "登录 "

//拿到了Cookie,再进行请求就能直接读取到登录后的内容了
myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.CookieContainer=myCookieContainer;//*
//刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证
myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
myResponseStream=myHttpWebResponse.GetResponseStream();
myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding( "gb2312 "));
outdata=myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
Console.WriteLine(outdata);

------解决方案--------------------


呵呵,都不用c#,直接用javascript就可以了
自己做一个form把要填的内容在form里初始化好,把action设置成目标地址,不停的submit就可以了
[解决办法]
private string GetUrlContext(string curl)
{
string text = " ";
if (this.method == 1) //Get
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(new Uri(curl));
ServicePointManager.Expect100Continue = false;
HttpWebResponse response = null;
if (Form1.C_IsProxyOn)
{
WebProxy proxy = new WebProxy();
proxy = (WebProxy) request.Proxy;
string uriString = Form1.C_Proxy_addr + ": " + Form1.C_Proxy_port;
if (uriString.Length > 0)
{
Uri uri = new Uri(uriString);
proxy.Address = uri;
proxy.Credentials = new NetworkCredential(Form1.C_Proxy_user, Form1.C_Proxy_pass);
request.Proxy = proxy;
}
}
try
{
response = (HttpWebResponse) request.GetResponse();
}
catch (WebException exception)
{
if (exception.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse) exception.Response;
}
else if (exception.Status == WebExceptionStatus.ConnectFailure)
{
MessageBox.Show( "\u8fde\u63a5\u670d\u52a1\u5668\u5931\u8d25,\u8bf7\u68c0\u67e5\u7f51\u7edc ", "\u9519\u8bef ");
}
else
{
MessageBox.Show(exception.ToString());
}
}
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream, Encoding.Default);
text = reader.ReadToEnd();
responseStream.Close();
response.Close();
reader.Close();
return text;
}
//Post
string[] textArray = new string[2];
textArray = curl.Split(new char[] { '? ' });
HttpWebRequest request2 = (HttpWebRequest) WebRequest.Create(new Uri(textArray[0]));
ServicePointManager.Expect100Continue = false;
request2.Method = "POST ";
CookieContainer container = new CookieContainer();
request2.CookieContainer = container;
string s = textArray[1];
byte[] bytes = new ASCIIEncoding().GetBytes(s);
request2.ContentType = "application/x-www-form-urlencoded ";
request2.ContentLength = s.Length;
Stream requestStream = request2.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
if (Form1.C_IsProxyOn)
{
WebProxy proxy = new WebProxy();
proxy = (WebProxy) request2.Proxy;
string uriString = Form1.C_Proxy_addr + ": " + Form1.C_Proxy_port;
if (uriString.Length > 0)
{
Uri uri2 = new Uri(uriString);
proxy.Address = uri2;
proxy.Credentials = new NetworkCredential(Form1.C_Proxy_user, Form1.C_Proxy_pass);
request2.Proxy = proxy;
}
}
HttpWebResponse response = null;
try
{
response = (HttpWebResponse) request2.GetResponse();
}
catch (WebException exception2)
{
if (exception2.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse) exception2.Response;
}
else if (exception2.Status == WebExceptionStatus.ConnectFailure)


{
MessageBox.Show( "\u8fde\u63a5\u670d\u52a1\u5668\u5931\u8d25,\u8bf7\u68c0\u67e5\u7f51\u7edc ", "\u9519\u8bef ");
}
else
{
MessageBox.Show(exception2.ToString());
}
}
response.Cookies = request2.CookieContainer.GetCookies(request2.RequestUri);
Stream stream = response.GetResponseStream();
StreamReader reader2 = new StreamReader(stream, Encoding.Default);
text = reader2.ReadToEnd();
stream.Close();
response.Close();
reader2.Close();
return text;
}




热点排行