VS2005写的一个在线游戏Travian的机器人小工具雏形
最近,一个朋友推荐了一个网页版的在线游戏,休息时可以玩玩调节一下心情,游戏地址是:http://s1.travian.china.com/login.php
玩了玩,感觉还挺有意思,不过老是需要去看看网页进度比较累,所以就想着写个工具来自动化操作(没办法,RD一般都喜欢偷懒的),之前还没有用WinForm操作过Cookie,为了保持Cookie,中间还出现了一点小小挫折,不过现在已经搞定了,把Cookie保持的代码贴给大家看看,有兴趣做类似工具的人可以参考一下。
1
//Cookies集合保存
2
public CookieCollection CCol = null;
3
4
//设置公司代理
5
public WebProxy GetWP()
6
{
7
WebProxy _WP = new WebProxy("h00proxy", 80);
8
_WP.BypassProxyOnLocal = true;
9
NetworkCredential _CD = new NetworkCredential("davi xiong", "asdfad", "bqc");
10
_WP.Credentials = _CD;
11
return _WP;
12
}
13
14
private void Login(string strId, string strPassword)
15
{
16
17
ASCIIEncoding encodingA = new ASCIIEncoding();
18
19
CookieContainer myCookieContainer = new CookieContainer();
20
21
progressBar1.Value = 0; // Process
22
//=======GET================================================================================
23
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://s1.travian.china.com/login.php");
24
myRequest.Proxy = GetWP();
25
26
myRequest.CookieContainer = myCookieContainer;
27
28
progressBar1.Value = 10; // Process
29
HttpWebResponse myResponseA = (HttpWebResponse)myRequest.GetResponse();
30
StreamReader readerA = new StreamReader(myResponseA.GetResponseStream(), Encoding.Default);
31
string Getcontent = readerA.ReadToEnd();
32
33
progressBar1.Value = 20; // Process
34
Regex Reg = new Regex("<input type=\"hidden\" name=\"login\" value=\"(.*)\">");
35
string login = "";
36
if (Reg.IsMatch(Getcontent))
37
{
38
Match Mc = Reg.Matches(Getcontent)[0];
39
login = Mc.Groups[1].Value;
40
}
41
progressBar1.Value = 30; // Process
42
43
Reg = new Regex("<input class=\"fm fm110\" type=\"text\" name=\"(.*)\" value=");
44
string name = "";
45
if (Reg.IsMatch(Getcontent))
46
{
47
Match Mc = Reg.Matches(Getcontent)[0];
48
name = Mc.Groups[1].Value;
49
}
50
51
progressBar1.Value = 40; // Process
52
Reg = new Regex("<input class=\"fm fm110\" type=\"password\" name=\"(.*)\" value=");
53
string pass = "";
54
if (Reg.IsMatch(Getcontent))
55
{
56
Match Mc = Reg.Matches(Getcontent)[0];
57
pass = Mc.Groups[1].Value;
58
}
59
60
progressBar1.Value = 50; // Process
61
Reg = new Regex("<p align=\"center\"><input type=\"hidden\" name=\"(.*)\" value=\"(.*)\">");
62
string hid2name = "";
63
string hid2value = "";
64
if (Reg.IsMatch(Getcontent))
65
{
66
Match Mc = Reg.Matches(Getcontent)[0];
67
hid2name = Mc.Groups[1].Value;
68
hid2value = Mc.Groups[2].Value;
69
}
70
71
//=======DATA==========================================================
72
progressBar1.Value = 60; // Process
73
ASCIIEncoding encoding = new ASCIIEncoding();
74
string postData = name + "=" + strId;
75
postData += "&" + pass + "=" + strPassword;
76
postData += "&login=" + login;
77
postData += "&autologin=ja&" + hid2name + "=" + hid2value + "&w=1024:768";
78
79
byte[] data = encoding.GetBytes(postData);
80
81
//=======POST================================================================================
82
progressBar1.Value = 70; // Process
83
myRequest = (HttpWebRequest)WebRequest.Create("http://s1.travian.china.com/dorf1.php");
84
myRequest.Proxy = GetWP();
85
86
myRequest.Method = "POST";
87
myRequest.ContentType = "application/x-www-form-urlencoded";
88
myRequest.ContentLength = data.Length;
89
myRequest.CookieContainer = myCookieContainer;
90
Stream newStream = myRequest.GetRequestStream();
91
newStream.Write(data, 0, data.Length);
92
newStream.Close();
93
94
progressBar1.Value = 80; // Process
95
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
96
CCol = myCookieContainer.GetCookies(myRequest.RequestUri);
97
progressBar1.Value = 90; // Process
98
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default);
99
string content = reader.ReadToEnd();
100
101
progressBar1.Value = 100; // Process
102
progressBar1.Value = 0; // Process
103
}
104
105
private void BtnLogin_Click(object sender, EventArgs e)
106
{
107
Login("davi97", "sffg");
108
}
109
110
//获取登录后才能查看的网页数据
111
private string GetPageData(string URL)
112
{
113
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
114
myRequest.Proxy = GetWP();
115
116
myRequest.CookieContainer = new CookieContainer();
117
myRequest.CookieContainer.Add(new Uri(URL), CCol);
118
119
HttpWebResponse myResponseA = (HttpWebResponse)myRequest.GetResponse();
120
StreamReader readerA = new StreamReader(myResponseA.GetResponseStream(), Encoding.Default);
121
return readerA.ReadToEnd();
122
}
123
124
private void BtnSearch_Click(object sender, EventArgs e)
125
{
126
string URL = "http://s1.travian.china.com/karte.php";
127
string ReqContent = GetPageData(URL);
128
129
//TODO : 自动搜索地图上的人员信息
130
131
}
132
133
//Cookies集合保存2
public CookieCollection CCol = null;3

4
//设置公司代理5
public WebProxy GetWP()6
{7
WebProxy _WP = new WebProxy("h00proxy", 80);8
_WP.BypassProxyOnLocal = true;9
NetworkCredential _CD = new NetworkCredential("davi xiong", "asdfad", "bqc");10
_WP.Credentials = _CD;11
return _WP;12
}13

14
private void Login(string strId, string strPassword)15
{16

17
ASCIIEncoding encodingA = new ASCIIEncoding();18

19
CookieContainer myCookieContainer = new CookieContainer();20

21
progressBar1.Value = 0; // Process22
//=======GET================================================================================23
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://s1.travian.china.com/login.php");24
myRequest.Proxy = GetWP();25

26
myRequest.CookieContainer = myCookieContainer;27

28
progressBar1.Value = 10; // Process29
HttpWebResponse myResponseA = (HttpWebResponse)myRequest.GetResponse();30
StreamReader readerA = new StreamReader(myResponseA.GetResponseStream(), Encoding.Default);31
string Getcontent = readerA.ReadToEnd();32

33
progressBar1.Value = 20; // Process34
Regex Reg = new Regex("<input type=\"hidden\" name=\"login\" value=\"(.*)\">");35
string login = "";36
if (Reg.IsMatch(Getcontent))37
{38
Match Mc = Reg.Matches(Getcontent)[0];39
login = Mc.Groups[1].Value;40
}41
progressBar1.Value = 30; // Process42

43
Reg = new Regex("<input class=\"fm fm110\" type=\"text\" name=\"(.*)\" value=");44
string name = "";45
if (Reg.IsMatch(Getcontent))46
{47
Match Mc = Reg.Matches(Getcontent)[0];48
name = Mc.Groups[1].Value;49
}50

51
progressBar1.Value = 40; // Process52
Reg = new Regex("<input class=\"fm fm110\" type=\"password\" name=\"(.*)\" value=");53
string pass = "";54
if (Reg.IsMatch(Getcontent))55
{56
Match Mc = Reg.Matches(Getcontent)[0];57
pass = Mc.Groups[1].Value;58
}59

60
progressBar1.Value = 50; // Process61
Reg = new Regex("<p align=\"center\"><input type=\"hidden\" name=\"(.*)\" value=\"(.*)\">");62
string hid2name = "";63
string hid2value = "";64
if (Reg.IsMatch(Getcontent))65
{66
Match Mc = Reg.Matches(Getcontent)[0];67
hid2name = Mc.Groups[1].Value;68
hid2value = Mc.Groups[2].Value;69
}70

71
//=======DATA==========================================================72
progressBar1.Value = 60; // Process73
ASCIIEncoding encoding = new ASCIIEncoding();74
string postData = name + "=" + strId;75
postData += "&" + pass + "=" + strPassword;76
postData += "&login=" + login;77
postData += "&autologin=ja&" + hid2name + "=" + hid2value + "&w=1024:768";78

79
byte[] data = encoding.GetBytes(postData);80

81
//=======POST================================================================================82
progressBar1.Value = 70; // Process83
myRequest = (HttpWebRequest)WebRequest.Create("http://s1.travian.china.com/dorf1.php");84
myRequest.Proxy = GetWP();85

86
myRequest.Method = "POST";87
myRequest.ContentType = "application/x-www-form-urlencoded";88
myRequest.ContentLength = data.Length;89
myRequest.CookieContainer = myCookieContainer; 90
Stream newStream = myRequest.GetRequestStream();91
newStream.Write(data, 0, data.Length);92
newStream.Close();93

94
progressBar1.Value = 80; // Process95
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();96
CCol = myCookieContainer.GetCookies(myRequest.RequestUri);97
progressBar1.Value = 90; // Process98
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default);99
string content = reader.ReadToEnd();100

101
progressBar1.Value = 100; // Process102
progressBar1.Value = 0; // Process103
}104

105
private void BtnLogin_Click(object sender, EventArgs e)106
{ 107
Login("davi97", "sffg");108
}109

110
//获取登录后才能查看的网页数据111
private string GetPageData(string URL)112
{113
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);114
myRequest.Proxy = GetWP();115

116
myRequest.CookieContainer = new CookieContainer();117
myRequest.CookieContainer.Add(new Uri(URL), CCol);118

119
HttpWebResponse myResponseA = (HttpWebResponse)myRequest.GetResponse();120
StreamReader readerA = new StreamReader(myResponseA.GetResponseStream(), Encoding.Default);121
return readerA.ReadToEnd();122
}123

124
private void BtnSearch_Click(object sender, EventArgs e)125
{126
string URL = "http://s1.travian.china.com/karte.php";127
string ReqContent = GetPageData(URL);128

129
//TODO : 自动搜索地图上的人员信息130
131
}132

133

平时无聊的朋友也可以玩玩,还是蛮有意思的,也可以找我,我的帐号是davi97


浙公网安备 33010602011771号