最近在NGA论坛看到某位神人的WOW同账号角色起底软件(易语言编),
大概原理是利用新浪游戏和捞月狗的工会列表获得玩家ID,然后通过收集玩家成就点数 坐对比查出相同成就点的玩家角色名 从而证明其为同一账号,
这确实可行,不过误报会很多,他的软件也很多问题.这几天我用QT在编一个,发布出来 .
其实获取服务器的全部工会列表很困难,依赖外部网站收集的列表还是比较靠谱的,毕竟魔兽战网API没有提供查询特定服务器所有工会名称的接口
工会成员列表到时提供了
通过 http://www.battlenet.com.cn/api/wow/guild/魔兽服务器名/工会名称?fields=members/
就可以获取改工会的全部成员jsion信息 不过战网貌似很脆弱 动不动就出问题 如无意外会缓慢的卡出来以下数据:
{"lastModified":1392784670000,"name":"工会名称","realm":"魔兽服务器名","battlegroup":"Battle Group 5","level":25,"side":1,
"achievementPoints":660,
"members":[
{"character":{"name":"工会成员1","realm":"魔兽服务器名","battlegroup":"Battle Group 5","class":4,"race":5,"gender":0,
"level":90,
"achievementPoints":10475, <---------成就点
"thumbnail":"eldrethalas/166/724134-avatar.jpg",
"spec":{"name":"战斗",
role":"DPS",
"backgroundImage":"bg-rogue-combat",
"icon":"ability_backstab",
"description":"敏捷而狡诈的游荡剑客,擅长与敌人短兵相接。",
"order":1}, <---------默认三系天赋 123
"guild":"工会名称",
"guildRealm":"魔兽服务器名"},
"rank":1}, <---------工会等级排名 0=会长 依次递减
{"character":{"name":"工会成员2","realm":"魔兽服务器名","battlegroup":"Battle Group 5","class..........,
如果有全服务器的工会列表 99.9%的玩家信息都能拿下 wow很少有没入会的玩家吧,他们算是漏网之鱼~
我想到些方法或许可以解决误报 如下:
1,同账号角色战斗宠物是共享的(只适用于开通了宠物对战的玩家) 即使是对立阵营角色,所以宠物栏宠物必定相同,宠物数必定相同
方法: (a), 发送Http请求获取玩家宠物栏jsion数据, http://www.battlenet.com.cn/api/wow/character/魔兽服务器名/玩家角色名?fields=petSlots
"petSlots":[{"slot":1,"battlePetGuid":"0000000001516D22","isEmpty":false,"isLocked":false,"abilities":[921,919,917]}, <--------1号宠物栏 battlePetGuid为宠物ID
{"slot":2,"battlePetGuid":"00000000003C4897","isEmpty":false,"isLocked":false,"abilities":[111,158,762]}, <----------2号宠物栏
{"slot":3,"battlePetGuid":"00000000022E6523","isEmpty":false,"isLocked":false,"abilities":[504,507,506]}], <----------3号宠物栏
(b),发送Http请求,获取角色所有宠物http://www.battlenet.com.cn/api/wow/character/魔兽服务器名/玩家角色名?fields=pets
"pets":{"numCollected":138, <-----目前宠物数
"collected":[{"name":"金色麝猫","spellId":0,"creatureId":63841,"itemId":0,"qualityId":3,"icon":"inv_...........}, <----------------------战斗宠物列表
{"name":"兴奋的萤火虫","spellId":0,"creatureId":63850,"itemId":0,"qualityId":3,"icon":"ability_...................},
比对宠物槽和列表进行匹配.
2.同账号角色坐骑共享
方法: 发送HTTP请求获取角色坐骑jsion数据,http://www.battlenet.com.cn/api/wow/character/魔兽服务器名/玩家角色名?fields=mounts
"mounts":{"numCollected":40, <-----目前坐骑数
"collected":[ {"name":"勇猛的战狼","spellId":100333,"creatureId":53985,"itemId":70910,"qualityId":4,"ico.......}, <----------------------坐骑列表
{"name":"大型美酒节科多兽","spellId":49379,"creatureId":27707,"itemId":37828,"qualityId":4,"i......},
比对坐骑数和坐骑列表 记得排除PVP评级奖励坐骑筛选.
3.老方法成就点
方法: 发http://www.battlenet.com.cn/api/wow/character/魔兽服务器名/玩家角色名
"achievementPoints":10475, <----------------------成就点
通过上面几种筛选出来的玩家角色 误报会很少,有缘人的概率很低~