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]
暂时分析到这里了,基本上把好用的都分析了,通过这几个借口的调用,就可以完成助手的开发了!