QQ牧場接口協議分析

QQ牧場接口協議分析

這幾天蛋疼,於是分析了qq牧場的接口,然後弄了個Android版本的助手,目的就是簡化遊戲操作,說實在的,現在的這些遊戲,整天偷啊,幾百個好友要操作,那可真是累啊!一趟弄下來1個小時過去了!

說一下自己的開發方法吧,通過firebug在火狐下分析每次調用的接口數據,由於是明文傳輸的json格式,非常容易採集數據,數據採集完畢,就是分析了,怎麼分析,就是猜測!猜測好了,就一個個調試。。。

切入正題,下面一個個藉口進行分析,再分析之前先說明一下pastureKey。因爲這個參數再所有接口中都需要應用,有必要說明一下它是如何生成的,網上別人已經反編譯過了,這裏拿來就用
[quote]
key="rwem5EE4=5fsjj{}ie7*0"
restaurantKey = md5(farmTime+substr(key,farmTime%10))
[/quote]
其他需要說明的:
[list]
[*]uid,qq號在遊戲裏是uin,但是真正操作時用的是uid,uid和uin是不相等的
[*]基本上每個接口都需要傳pastureKey,farmKey=null,farmTime,uIdx=自己的uid
[*]所有接口調用必須採用POST方式
[/list]

1.獲取玩家信息(包括好友的)
URL:http://mc.qzone.qq.com/cgi-bin/cgi_enter
參數:如果是獲取自己的,可以不傳參數
好友信息:pastureKey=cff0dfb405c942bd1dd9b2d6eaee4307c725e19e&farmKey=null&uIdx=自己的uid&flag=1&farmTime=1299327137&uId=好友的uid&newitem=2
返回信息:animal包含每個動物信息
animal動物數據分析
buyTime購買時間,
cId動物id
growTime已生長全部時間
growTimeNext下一階段需要多少時間(剩餘的秒)
hungry 0不飢餓
serial 序號?
status 當前狀態 1幼仔 2成長期 3可生產期 4生產中 5待產期 6收穫產肉期
statusNext 下一狀態
totalCome 可收穫的收入
java代碼示例:

public class Animal{
public long buyTime;
public String cId;
public int growTime;
public int growTimeNext;
public int hungry;
public int serial;
public int status;
public int statusNext;
public int totalCome;
}

大便和蚊子信息:badinfo{type,num},1是大便,2是蚊子,num代表數量

牧草數量:animalFood

當前的窩和棚的等級。items.2.lv 窩等級 items.3.lv ,棚等級。

每個窩等級可以購買的動物數量:{2,3,5,6,7,8,9,10}

每個棚等級可以購買的動物數量:{3,4,5,6,7,8,9,10}

動物狀態的變化歷程:剛購買時1->2,成長爲2->3,再到3->6,當status=3,statusNext=6時表示可以生產,這個時候可以調用生產接口,生產後狀態變爲4->5,15秒後,狀態變爲5->3,一段時間後又爲3,一直持續到動物不能再生產,這個時候狀態爲6->6。,表示可以收穫動物了,調用收穫動物接口即完成收穫,然後再購買新動物。

用戶信息:info裏,包括uid,uin及userName,money,exp等

信息獲取完畢後就可以操作了,拍蚊子和掃便便,收穫產品,收穫動物,購買動物,添加牧草。

2.拍蚊子和掃便便
[list]
[*]http://mc.qzone.qq.com/cgi-bin/cgi_help_pasture
[*]num=1&uId=好友的或者自己的&type=1&uIdx=自己的uid&pastureKey=b7ea3ef9f88f2c5b490b7c9dda910ce59c6f29b8&farmKey=null&farmTime=1299326594&pos=1
[*]type爲1爲拍蚊子,爲2爲掃便便
[/list]
3.收穫
[list]
[*]http://mc.qzone.qq.com/cgi-bin/cgi_harvest_product
[*]version=1&farmTime=1300195427&type=動物id&harvesttype=1&pastureKey=0e065eb68d65c891606b2af402e8da952f4fa3c4&farmKey=null&uIdx=自己的uid
[*]如果同類型好幾個動物可收穫,只要調用一次即可
[/list]
4.收穫動物
[list]
[*]http://mc.qzone.qq.com/cgi-bin/cgi_harvest_product
[*]version=1&serial=動物序號&harvesttype=2&uIdx=自己的id&pastureKey=65c5e20948249e133d2847280f425a52fbdce758&farmKey=null&farmTime=1300198636&serialIndex=動物序號
[/list]

5購買動物,注意再購買前需要判斷當前的各類動物數及各棚的等級
[list]
[*]http://mc.qzone.qq.com/cgi-bin/cgi_buy_animal
[*]pastureKey=02710a9db52ab7dcdeefbcee089a0aded99a76f3&number=數量&farmTime=1299326982&farmKey=null&cId=動物id&uIdx=自己的uid
[/list]

6獲取好友列表
[list]
[*]http://nc.qzone.qq.com/cgi-bin/cgi_farm_getFriendList?mod=friend
[*]farmTime=1300197990&user=true&pastureKey=99d6400e3d3e115b8846914d78f0670cf12e64bb&uIdx=自己的uid&farmKey=null
[/list]

7過濾好友列表,目的是確定哪些好友可以操作
[list]
[*]http://mc.qzone.qq.com/cgi-bin/cgi_get_Exp
[*]optflag=1&pastureKey=99d6400e3d3e115b8846914d78f0670cf12e64bb&farmKey=null&uidlist=uid列表(用|隔開)&expflag=0&uIdx=自己的uid&farmTime=1300197990
[*]返回參數中b,g,p,t有一個大於0就表示可以操作(我是這麼認爲的)
[/list]


8偷竊
[list]
[*]http://mc.qzone.qq.com/cgi-bin/cgi_steal_product
[*]version=1&type=動物id&pastureKey=a6d4de78460ef82c583a6c63047eb89457e97007&farmKey=null&nick=自己的暱稱&uId=好友的uid&uIdx=自己的uid&farmTime=1300197149
[/list]


9獲取揹包的牧草信息
[list]
[*]http://mc.qzone.qq.com/cgi-bin/cgi_get_package
[*]uIdx=自己的uid&pastureKey=5e1e80794cd03b561317f7392d8228a4f5e181f0&farmKey=null&farmTime=1300198446
[/list]


10添加牧草
[list]
[*]http://mc.qzone.qq.com/cgi-bin/cgi_feed_food
[*]foodnum=數量&farmKey=null&farmTime=1300278564&pastureKey=a432adc9db5295521c1ae2139cd471a14639da98&type=0&uIdx=自己的uid
[/list]


暫時分析到這裏了,基本上把好用的都分析了,通過這幾個藉口的調用,就可以完成助手的開發了!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章