最近,做了个百度“阳光牧场”网页游戏的外挂,其中的核心环节是“登录”,在一个月以前,我的外挂能正常运行,可最近一段时间,不能正常登录了,现在我将我的登录部分贴出来,请求高手帮我看一下。谢谢。HTTP请求类using System;
using System.Net;
using System.IO;
using System.Text;namespace Farm
{
/// <summary>
/// HTTP请求类
/// </summary>
public class MyHttp
{
public MyHttp()
{
} #region 通过Post方式发送数据
/// <summary>
/// 通过Post方式发送数据
/// </summary>
/// <param name="Url">Url</param>
/// <param name="postDataStr">Post数据</param>
/// <param name="cookie">cookie</param>
/// <returns>返回数据</returns>
public static string SendDataByPost(string Url, string postDataStr, ref CookieContainer cookie)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
if (cookie.Count == 0)
{
request.CookieContainer = new CookieContainer();
cookie = request.CookieContainer;
}
else
{
request.CookieContainer = cookie;
}
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// new Add
//request.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
request.ContentLength = postDataStr.Length;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
string retString= myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
catch
{
return "";
}
}
#endregion #region 同步通过GET方式发送数据
/// <summary>
/// 通过GET方式发送数据
/// </summary>
/// <param name="Url">url</param>
/// <param name="postDataStr">GET数据</param>
/// <param name="cookie">GET容器</param>
/// <returns></returns>
public static string SendDataByGET(string Url, string postDataStr, ref CookieContainer cookie)
{
string sendurl = Url +(postDataStr == "" ? "" : "?") + postDataStr;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sendurl);
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url +(postDataStr == "" ? "" : "?") + postDataStr);
if (cookie.Count == 0)
{
request.CookieContainer = new CookieContainer();
cookie = request.CookieContainer;
}
else
{
request.CookieContainer = cookie;
}
request.Method = "GET";
request.ContentType = "text/html;charset=utf-32";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
#endregion
}
}登录方法 private bool LoginGame(string name, string pwd)
{
string Url0 = "https://passport.baidu.com/?login&tpl=sp&tpl_reg=spsp&u=http%3A%2F%2Fapps.hi.baidu.com%2Fsunfarm";
string Url1 = "https://passport.baidu.com/?login";
string Url2 = "http://apps.hi.baidu.com/sunfarm";
string Url3 = "http://sunfarm.baiduapp.com";
string Url4 = "http://sunfarm.baiduapp.com/embed_swf/";
string KeyWord = "session_name=sessionid";
string SesssionIdKeyWord = "session_value=";
string UidKeyWord = "uid=";
string strRet = ""; CommandParams cpm = this.GetLoginParams(name, pwd);
CookieContainer cc = new CookieContainer(); strRet = MyHttp.SendDataByGET(Url1, cpm.Cp, ref cc);
//strRet = MyHttp.SendDataByPost(Url1, cpm.Cp, ref cc);
//WriteLog("Length:" + strRet.Length.ToString());
//WriteLog(strRet);
if (strRet.IndexOf(Url2) == -1)
{
return false;
}
try
{
strRet = MyHttp.SendDataByGET(Url2, "", ref cc);
//WriteLog(strRet);
if (strRet.IndexOf(Url3) == -1)
{
return false;
}
string UrlData1 = AnalyzingHtmlCode(strRet);
//WriteLog(UrlData1);
strRet = MyHttp.SendDataByGET(Url3, UrlData1, ref cc);
//WriteLog(strRet);
if (strRet.IndexOf(Url4) == -1)
{
return false;
}
string UrlData2 = AnalyzingHtmlCode(strRet, Url4);
//WriteLog(UrlData2);
strRet = MyHttp.SendDataByGET(Url4, UrlData2, ref cc);
//WriteLog(strRet);
if (strRet.IndexOf(KeyWord) == -1)
{
return false;
}
else
{
this.SessionId = Tools.GetValueByKey(strRet, SesssionIdKeyWord, "&", "\"").Replace(SesssionIdKeyWord, "");
this.Uid = Tools.GetValueByKey(strRet, UidKeyWord, "&", "\"").Replace(UidKeyWord, "");
}
}
catch
{
return false;
}
return true;
}
using System.Net;
using System.IO;
using System.Text;namespace Farm
{
/// <summary>
/// HTTP请求类
/// </summary>
public class MyHttp
{
public MyHttp()
{
} #region 通过Post方式发送数据
/// <summary>
/// 通过Post方式发送数据
/// </summary>
/// <param name="Url">Url</param>
/// <param name="postDataStr">Post数据</param>
/// <param name="cookie">cookie</param>
/// <returns>返回数据</returns>
public static string SendDataByPost(string Url, string postDataStr, ref CookieContainer cookie)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
if (cookie.Count == 0)
{
request.CookieContainer = new CookieContainer();
cookie = request.CookieContainer;
}
else
{
request.CookieContainer = cookie;
}
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// new Add
//request.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
request.ContentLength = postDataStr.Length;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
string retString= myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
catch
{
return "";
}
}
#endregion #region 同步通过GET方式发送数据
/// <summary>
/// 通过GET方式发送数据
/// </summary>
/// <param name="Url">url</param>
/// <param name="postDataStr">GET数据</param>
/// <param name="cookie">GET容器</param>
/// <returns></returns>
public static string SendDataByGET(string Url, string postDataStr, ref CookieContainer cookie)
{
string sendurl = Url +(postDataStr == "" ? "" : "?") + postDataStr;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sendurl);
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url +(postDataStr == "" ? "" : "?") + postDataStr);
if (cookie.Count == 0)
{
request.CookieContainer = new CookieContainer();
cookie = request.CookieContainer;
}
else
{
request.CookieContainer = cookie;
}
request.Method = "GET";
request.ContentType = "text/html;charset=utf-32";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
#endregion
}
}登录方法 private bool LoginGame(string name, string pwd)
{
string Url0 = "https://passport.baidu.com/?login&tpl=sp&tpl_reg=spsp&u=http%3A%2F%2Fapps.hi.baidu.com%2Fsunfarm";
string Url1 = "https://passport.baidu.com/?login";
string Url2 = "http://apps.hi.baidu.com/sunfarm";
string Url3 = "http://sunfarm.baiduapp.com";
string Url4 = "http://sunfarm.baiduapp.com/embed_swf/";
string KeyWord = "session_name=sessionid";
string SesssionIdKeyWord = "session_value=";
string UidKeyWord = "uid=";
string strRet = ""; CommandParams cpm = this.GetLoginParams(name, pwd);
CookieContainer cc = new CookieContainer(); strRet = MyHttp.SendDataByGET(Url1, cpm.Cp, ref cc);
//strRet = MyHttp.SendDataByPost(Url1, cpm.Cp, ref cc);
//WriteLog("Length:" + strRet.Length.ToString());
//WriteLog(strRet);
if (strRet.IndexOf(Url2) == -1)
{
return false;
}
try
{
strRet = MyHttp.SendDataByGET(Url2, "", ref cc);
//WriteLog(strRet);
if (strRet.IndexOf(Url3) == -1)
{
return false;
}
string UrlData1 = AnalyzingHtmlCode(strRet);
//WriteLog(UrlData1);
strRet = MyHttp.SendDataByGET(Url3, UrlData1, ref cc);
//WriteLog(strRet);
if (strRet.IndexOf(Url4) == -1)
{
return false;
}
string UrlData2 = AnalyzingHtmlCode(strRet, Url4);
//WriteLog(UrlData2);
strRet = MyHttp.SendDataByGET(Url4, UrlData2, ref cc);
//WriteLog(strRet);
if (strRet.IndexOf(KeyWord) == -1)
{
return false;
}
else
{
this.SessionId = Tools.GetValueByKey(strRet, SesssionIdKeyWord, "&", "\"").Replace(SesssionIdKeyWord, "");
this.Uid = Tools.GetValueByKey(strRet, UidKeyWord, "&", "\"").Replace(UidKeyWord, "");
}
}
catch
{
return false;
}
return true;
}
解决方案 »
- C#调色板如何显示颜色
- 全屏判断与离开判断
- 如何 实现 GRIDVIEW里 一列里面根据不同条件给不同内容的字体设置颜色和提示
- 如何用.NET技术来对两篇文章进行对平,把相似的段落和文字标出来?
- 请问iis的不同访问用户之间会发生阻塞吗?
- FreeTextBox上传到服务器上时,它上面的很多按钮图标都不见了!
- 关于封包修改
- 求助 关于二进制文件读取
- C#如何注册dll ocx文件,最好能够知道注册成功不成功的
- 在WinForm中如何把crystalReportViewer中的报表,用PrintPreviewDialog显示其打印打印预览?
- winform datagridviewcheckboxcolum问题
- 当一个页面调用了异步线程后 关闭页面线程是否还会执行?
专业的捉包工具。。
WebCodes = PG.PostDataSSL("https://passport.baidu.com/?login", "http://hi.baidu.com", PostData, "POST", UserCookie, "");