wc1217

近日有研究4399的积分小游戏的分数提交规则, 但不能太高调的对做类似外挂的东西...

写以下代码..仅供分析研究

 

  1 <?php
2 function emMsg($v) {
3 echo($v);
4 }
5
6 include_once \'mysql.php\';
7
8 class getList {
9
10 private $db;
11
12 function __construct() {
13 $this->db = MySql::getInstance();
14 }
15
16 function getPkList($tid = null) {
17 $res = $this->db->query(\'SELECT * FROM gamelist\' . (empty($tid) ? \'\' : \' where gameTid=\\'\' . $tid . \'\\'\'));
18 $list = array();
19 if (!$this->db->num_rows($res))
20 $list = $this->initList_4399();
21 else
22 while ($row = $this->db->fetch_array($res)) {
23 $list[] = $row;
24 }
25 return $list;
26 }
27
28 /*
29 * 初始化积分游戏
30 */
31
32 function initList_4399() {
33 $this->db->query(\'delete from gamelist\');
34
35 $echo_arr = array();
36
37 for ($j = 1; $j < 12; $j++) {
38 $file_contents = iconv(\'gb2312\', \'utf-8//ignore\', file_get_contents(\'http://pk.4399.com/flash/\' . $j . \'_1.htm\'));
39 $out = array();
40 //<a href="http://pk.4399.com/user/377.htm" target="_blank"><img title="野人钓鱼" alt="野人钓鱼" border="0" src="http://swfpk.4399pk.com:8080/4399pkbak/bak/pkimg/index_img/377.jpg" width="75" height="75"></a>
41 if (preg_match_all(\'/<li><a href="http:\/\/pk\.4399\.com\/user\/(\d+)\.htm" target="\_blank"><img.*?title="(.*?)".*?src="(.*?)".*?><\/a><p>.*?<\/p><\/li>/\', $file_contents, $out)) {
42 //return $out;
43 if (count($out) == 4) {
44 for ($i = 0; $i < count($out[1]); $i++) {
45 $sql = "insert into gamelist (gameId,gameName,gameImg,gameTid) values(\'{$out[1][$i]}\',\'{$out[2][$i]}\',\'{$out[3][$i]}\',\'{$j}\')";
46 $this->db->query($sql);
47 array_push($echo_arr, array($out[1][$i], $out[2][$i], $out[3][$i]));
48 }
49 }
50 }
51 sleep(2);
52 }
53 return $echo_arr;
54 }
55
56 /*
57 * 得到积分
58 * $id 游戏ID
59 * $total 个数
60 * $model 模式 current 当前 all 总排行 month 月排行 last 上轮
61 */
62
63 function getSocre_4399($id, $model = \'all\', $total = 3) {
64 $curl = curl_init();
65 curl_setopt($curl, CURLOPT_URL, \'http://my.4399.com/flashgame.php?ac=score_\' . $model . \'&gameid=\' . $id);
66 curl_setopt($curl, CURLOPT_COOKIE, \'Pauth=403370469|66847612|7082ed77f7c271b74d84de349009452a|1328319929|10002|bbeae2e37479547b7c0d5da25d8eb004|0;\');
67 // 403370469|66847612|c389c838712319dc773eef783f972fef|1328331099|10001|60bfe9367afff7e737d00b2f998dd7f8|0
68 // 403370469|66847612|580ea10bd8ccf57035a31c7d2abef941|1328333572|10002|ef2b08825599a1fc7ef0ef399b630ca4|0
69 // 403370469|66847612|0773296261e645a773fc245d039db2a6|1328333608|10002|83a5f67767d051e8f31d26df70445663|0
70 //curl_setopt($curl, CURLOPT_REFERER, \'http://www.360buy.com/\');
71 //curl_setopt($curl,CURLOPT_HTTPHEADER,array(\'Referer:http://www.360buy.com/\'));
72 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
73 $file_contents = curl_exec($curl);
74 curl_close($curl);
75 //$file_contents = iconv(\'gb2312\', \'utf-8//ignore\', $file_contents);
76 /* <td><a href="flashgame.php?ac=profile&uid=212607398">1051414225</a></td>
77 <td>151478</td>
78 * <td align="center"><a href="flashgame.php?ac=profile&uid=103301144">wawa6346</a></td><td align="center">172895</td>
79 * */
80 //echo $file_contents;
81 $out = array();
82 if (preg_match_all(\'/<td.*?><a href="flashgame.php\?ac\=profile&uid=.*?">.*?<\/a><\/td>.*?<td.*?>(\d+)<\/td>/s\', $file_contents, $out)) {
83 $ret_array = array_slice($out[1], 0, $total);
84 $sql = \'update gamelist set gameScore=\\'\' . json_encode($ret_array) . "\' where gameId=\'{$id}\'";
85 $this->db->query($sql);
86 return $ret_array;
87 }
88 return array();
89 //echo $file_contents;
90 }
91
92 function setSocre_4399($id, $m = null, $arr = null) {
93 if (empty($arr)) {
94 $arr = $this->db->once_fetch_array(\'SELECT gameScore FROM gamelist where gameId=\\'\' . $id . \'\\'\');
95 $arr = json_decode($arr[\'gameScore\'], true);
96 }
97 if (empty($arr))
98 return \'error\';
99
100 //平均分 冠军分 亚军分 季军分
101 if (empty($m)) {
102 $score = floor(array_sum($arr) / count($arr));
103 } else {
104 $score = $arr[$m - 1];
105 }
106
107 //toKen
108 $token = substr(file_get_contents(\'http://my.4399.com/flashgame/flashgame_reload_token.php\'), 7);
109 $miyao = \'ok123\';
110 $orderId = date("YmdHis") . rand(100000, 999999);
111 $link = \'xn\';
112 //_root.result + "xn" + _root.orderId + _root.miyao + "xn" + _level0.gameId + "xn" + _root.token
113 //http://my.4399.com/flashgame.php?ac=score_submit&token=73880937914d7521321497fbf27a189beea76f&Mac=257be7e4641d73e9a94c968f986e7516&orderId=20120204234108456451&result=10&gameId=346
114 $md5_token = md5($score . $link . $orderId . $link . $miyao . $link . $id . $link . $token);
115 $url = "http://my.4399.com/flashgame.php?ac=score_submit&token={$token}&Mac={$md5_token}&orderId={$orderId}&result={$score}&gameId={$id}";
116 $curl = curl_init();
117 curl_setopt($curl, CURLOPT_URL, $url);
118 curl_setopt($curl, CURLOPT_COOKIE, \'Pauth=403370469|66847612|7082ed77f7c271b74d84de349009452a|1328319929|10002|bbeae2e37479547b7c0d5da25d8eb004|0;\');
119 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
120 //curl_setopt($curl, CURLOPT_POST, TRUE);
121 //curl_setopt($curl, CURLOPT_POSTFIELDS, "source=" . Vendor_Sina::appid . "&target_id={$target_id}");
122 $file_contents = curl_exec($curl);
123 curl_close($curl);
124 $out = array();
125 if (preg_match(\'/<div class="score_number"><h3>.*?<\/h3><p>(\d+)<\/p><\/div>/\', $file_contents, $out)) {
126 if (is_numeric($out[1]))
127 return $out[1];
128 }
129 return \'null\';
130 }
131
132 }



分类:

技术点:

相关文章: