最近,一个朋友推荐了一个网页版的在线游戏,休息时可以玩玩调节一下心情,游戏地址是: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

2

3

4

5

6



7

8

9

10

11

12

13

14

15



16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37



38

39

40

41

42

43

44

45

46



47

48

49

50

51

52

53

54

55



56

57

58

59

60

61

62

63

64

65



66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106



107

108

109

110

111

112



113

114

115

116

117

118

119

120

121

122

123

124

125



126

127

128

129

130

131

132

133

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