首页 > 所有辅助 > 绝地求生辅助

如何分析微信 Https 流量并获取用户信息接口

经过数次实践,微信的所有通信都采用了HTTPS技术进行加密传输,因此在采集到的数据中未发现有价值的参考数据。在此背景下,破解现有加密数据并提取有效信息成为当前迫切需要解决的难题,然而面对如此坚固的防御体系,我们获取信息的途径似乎陷入了困境。

绝地求生大神枪配

破解HTTPS加密的方法

绝地求生大神枪配

为了解决此难题,我们借助尖端科技手段,将根证书植入手机与电脑中,以深度解密HTTPS通讯流量。尽管这一过程看似复杂,但一旦配置完成,必然能够揭示出隐秘信息中的细枝末节,犹如打开了通向未知世界的神秘之门。

{
   "user_info": {
       "openid": "oODfo0pjBQkcNuR4XLTQ321xFVws",
       "head_img_url": "http://wx.qlogo.cn/mmhead/Q3auHgzwzM5hSWxxxxxUQPwW9ibxxxx9DlxLTsKWk97oWpDI0rg/96",
       "nick_name": "望",
       "role_name": "xxxx",
       "zone_area_id": 0,
       "plat_id": 1
   
}
,
   "battle_info": {
       "total_1": 75,
       "total_10": 336,
       "total_game": 745,
       "total_kill": 1669
   
}
,
   "battle_list": [{
       "map_id": 1,
       "room_id": "6575389198189071197",
       "team_id": 57,
       "dt_event_time": 1530953799,
       "rank_in_ds": 3,
       "times_kill": 1,
       "label": "前五",
       "team_type": 1,
       "award_gold": 677,
       "mode": 0
   
}]
,
   "appitem": {
       "AppID": "wx13051697527efc45",
       "IconURL": "https://mmocgame.qpic.cn/wechatgame/mEMdfrX5RU0dZFfNEdCsMJpfsof1HE0TP3cfZiboX0ZPxqh5aZnHjxPFXUGgsXmibe/0",
       "Name": "绝地求生 全军出击",
       "BriefName": "绝地求生 全军出击",
       "Desc": "官方正版绝地求生手游",
       "Brief": "枪战 | 808.2M",
       "WebURL": "https://game.weixin.qq.com/cgi-bin/h5/static/detail_v2/index.html?wechat_pkgid=detail_v2&appid=wx13051697527efc45&show_bubble=0",
       "DownloadInfo": {
           "DownloadURL": "https://itunes.apple.com/cn/app/id1304987143",
           "DownloadFlag": 5
       
}
,
       "Status": 0,
       "AppInfoFlag": 45,
       "Label": [],
       "AppStorePopUpDialogConfig": {
           "Duration": 1500,
           "Interval": 172800,
           "ServerTimestamp": 1531066098
       
}
,
       "HasEnabledChatGroup": false,
       "AppType": 0,
       "game_tag_list": ["绝地求生", "正版还原", "好友开黑", "百人对战", "超大地图"],
       "recommend_reason": "正版绝地求生,荒野射击",
       "size_desc": "808.2M"
   
}
,
   "is_guest": true,
   "is_blocked": false,
   "errcode": 0,
   "errmsg": "ok"
}

流量分析的初步成果

{
"errcode": 0,
"errmsg": "ok",
"next_after_time": 1528120556,
"battle_list": [{
   "map_id": 1,
   "room_id": "6575389198111172597",
   "team_id": 57,
   "dt_event_time": 1530953799,
   "rank_in_ds": 3,
   "times_kill": 1,
   "label": "前五",
   "team_type": 1,
   "award_gold": 677,
   "mode": 0
}, {
   "map_id": 1,
   "room_id": "6575336498940384115",
   "team_id": 11,
   "dt_event_time": 1530941404,
   "rank_in_ds": 5,
   "times_kill": 2,
   "label": "前五",
   "team_type": 1,
   "award_gold": 632,
   "mode": 0
}]
,
"has_next": true
}

绝地求生大神枪配

在证书成功部署之后,我们得以更加深度地解析网络流量。现在,我们可以发掘HTTPS请求和响应中潜藏的珍贵信息,从而准确识别所需的业务接口。此过程犹如探寻神秘宝藏地图,每一步都充满了未知的惊喜。

{
"errcode": 0,
"errmsg": "ok",
"base_info": {
   "nick_name": "柚茶",
   "head_img_url": "http://wx.qlogo.cn/mmhead/xxxx/96",
   "dt_event_time": 1528648165,
   "team_type": 4,
   "rank": 1,
   "player_count": 100,
   "role_sex": 1,
   "label": "大吉大利",
   "openid": "oODfo0s1w5lWjmxxxxxgQkcCljXQ"
}
,
"battle_info": {
   "award_gold": 622,
   "times_kill": 6,
   "times_head_shot": 0,
   "damage": 537,
   "times_assist": 3,
   "survival_duration": 1629,
   "times_save": 0,
   "times_reborn": 0,
   "vehicle_kill": 1,
   "forward_distance": 10140,
   "driving_distance": 5934,
   "dead_poison_circle_no": 6,
   "top_kill_distance": 223,
   "top_kill_distance_weapon_use": 2924130819,
   "be_kill_user": {
       "nick_name": "小旭",
       "head_img_url": "http://wx.qlogo.cn/mmhead/ibLButGMnqJNFsUtStNEV8tzlH1QpwPiaF9kxxxxx66G3ibjic6Ng2Rcg/96",
       "weapon_use": 20101000001,
       "openid": "oODfo0qrPLExxxxc0QKjFPnPxyI"
   
}
,
   "label": "大吉大利"
}
,
"team_info": {
   "user_list": [{
       "nick_name": "ooo",
       "times_kill": 6,
       "assist_count": 3,
       "survival_duration": 1638,
       "award_gold": 632,
       "head_img_url": "http://wx.qlogo.cn/mmhead/Q3auHgzwzM4k4RXdyxavNxxxxUjcX6Tl47MNNV1dZDliazRKRg",
       "openid": "oODfo0xxxxf1bRAXE-q-lEezK0k"
   
}, {
       "nick_name": "我吃炒肉",
       "times_kill": 2,
       "assist_count": 2,
       "survival_duration": 1502,
       "award_gold": 583,
       "head_img_url": "http://wx.qlogo.cn/mmhead/sTJptKvBQLKd5SAAjOF0VrwiapUxxxxFffxoDUcrVjYbDf9pNENQ",
       "openid": "oODfo0gIyDxxxxZpUrSrpapZSDT0"
   
}]
}
,
"is_guest": true,
"is_blocked": false
}

关键接口的发现

    url = 'https://game.weixin.qq.com/cgi-bin/gamewap/getpubgmdatacenterindex?openid=%s&plat_id=0&uin=&key=&pass_ticket=%s' % (openid, settings.pass_ticket)
   r = requests.get(url=url, cookies=settings.def_cookies, headers=settings.def_headers, timeout=(5.0, 5.0))
   tmp = r.json()
   wfile = os.path.join(settings.Res_UserInfo_Dir, '%s.txt' % (rediskeys.user(openid)))

   with codecs.open(wfile, 'w', 'utf-8') as wf:
       wf.write(simplejson.dumps(tmp, indent=2, sort_keys=True, ensure_ascii=False))

通过深度分析,我们专注于以下三个关键接口:收集完整的用户数据、获取用户实际操作记录和实时监控游戏活动。这些接口如同宝贵矿床,各自富含独特价值。无需深究其精密计算法则,仅需简单的网络抓取和默认信息提取,便可将其融入到程序代码中,立即投入使用。

数据抓取的策略

# rediskeys.user_battle_list 根据openid获取存在redis中的key值
def user_battle_list(openid):
   return 'ubl_%s' % (openid)

确立接口后,立即展开全方位数据搜集,并借用Redis工具来做信息标注,从而避免重复采集现象。这一策略堪比给每位信息资源赋予独特标签,确实保证了有效的信息挖掘。

# 在提取battle list之前,首先判断这用用户的数据是否已经提取过了
if settings.DataRedis.get(rediskeys.user_battle_list(openid)):
   return True

爬虫任务的实现

# 在提取battle list之后,需要在redis中记录用户信息
settings.DataRedis.set(rediskeys.user_battle_list(openid), 1)

该接口实现了A至B的双重引导以及反向指引功能,以防信息采集的重复性。这如同给每份有用的数据宝藏贴上标签,有效避免了同一地点的重复探索。

task_queues = (
   Queue('queue_get_battle_info', exchange=Exchange('priority', type='direct'), routing_key='gbi'),
   Queue('queue_get_battle_list', exchange=Exchange('priority', type='direct'), routing_key='gbl'),
   Queue('queue_get_user_info', exchange=Exchange('priority', type='direct'), routing_key='gui'),
)

task_routes = ([
   ('get_battle_info', {'queue': 'queue_get_battle_info'}),
   ('get_battle_list', {'queue': 'queue_get_battle_list'}),
   ('get_user_info', {'queue': 'queue_get_user_info'}),
],)

数据分析的惊人发现

@app.task(name='get_battle_list')
def get_battle_list(openid, plat_id=None, after_time=0, update_time=None):
   # 判断是否已经取过用户战绩列表信息
   if settings.DataRedis.get(rediskeys.user_battle_list(openid)):
       return True

   if not plat_id:
       try:
           # 提取用户信息
           us = handles.get_user_info_handles(openid)
           plat_id=us['plat_id']
       except Exception as e:
           print 'can not get user plat_id', openid, traceback.format_exc()
           return False
   # 提取战绩列表
   battle_list = handles.get_battle_list_handle(openid, plat_id, after_time=0, update_time=None)

   # 为每一场战斗创建异步获取详情任务
   for room_id in battle_list:
       if not settings.DataRedis.get(rediskeys.user_battle(openid, room_id)):
           get_battle_info.delay(openid, plat_id, room_id)

   return True

在收集和处理了高达20万条用户信息之后,我们对其展开深度分析。研究表明,用户平均每天在该平台上花费超过两小时的时间,绝大部分人则停留超过一小时,还有部分人连续使用长达8小时之久。这些精确且详实的数据让我们能够更为深入地了解用户的行为规律,帮助我们逐步揭示出用户行为的深层机制。

游戏高峰时段的揭示

from tasks.all import get_battle_list

my_openid = 'oODfo0oIErZI2xxx9xPlVyQbRPgY'
my_platid = '0'

get_battle_list.delay(my_openid, my_platid, after_time=0, update_time=None)

分析显示,晚上10点是玩家的游戏活跃高峰期,这让我们对于用户的游戏行为有了更深入的了解。此时游戏界犹如巅峰时刻,种种事物皆呈现至臻之境。

游戏本质的反思

# 启动获取用户详情worker
celery -A tasks.all worker -c 5 --queue=queue_get_user_info --loglevel=info -n get_user_info@%h

# 启动获取战绩列表worker
celery -A tasks.all worker -c 5 --queue=queue_get_battle_list --loglevel=info -n get_battle_list@%h

# 启动获取战绩详情worker
celery -A tasks.all worker -c 30 --queue=queue_get_battle_info --loglevel=info -n get_battle_info@%h

在本次实践中,通过深入挖掘,我们成功收集了大量游戏数据并深入分析了其内在奥秘。游戏不仅仅是简单的消遣工具,它还生动地展现出人与人之间的行为和心理互动。本次数据采集主要得力于微信游戏频道对匿名玩家数据的公开披露,这为我们提供了宝贵的研究素材。基于此,我们有能力进一步剖析其他热门游戏,例如《王者荣耀》等的数据,对于此类研究感兴趣的人士可以尝试进行探索。

celery flower -A tasks.all --broker=redis://:$REDIS_PASS@$REDIS_HOST:$REDIS_PORT/10

绝地求生大神枪配