微信电竞和王者营地爬取经验总结

一、首先是微信电竞,就是微信小程序里面的,本来看这是一个小程序,感觉应该很好爬。但是在实际爬取的时候,出现了一些问题,最终没有爬取成功,主要总结自己在爬取过程中所做的事情和策略。

首先因为是小程序,所以第一个方法是用fiddler抓取请求,这个过程顺利,很快就找到了拉取信息的请求链接。

"https://game.weixin.qq.com/cgi-bin/videoareawap/gametag?session_id="+session_id

其中session_id是一段时间内,每次请求都不会变的。所以直接通过fiddler抓取就可以了,然后formdata是: {"is_preview":False,"game_app_id":"wx95a3a4d7c627e07d","data_type":0,"page_idx":0,"target_video_id":0}

通过这个请求,很顺利的就拿到了数据:

所要抓取的数据内容都是视频,所以所有信息都在这里可以获取到。然后就是要找分页的方式。结果在这里卡住,因为没有在返回也找到任何翻页的字段,重复请求的时候发现请求的数据是相同的。所以只能考虑实现翻页机制有几种可能。(1)本身是没有翻页机制的,每次请求都是相当于一次刷新,后台记录请求状态,自动刷新推送新的内容给前端。(2)前端通过另外一条请求,刷新数据,然后再次请求,得到新的数据。

简而言之就是前端肯定会有一条请求是告诉后台要刷新数据的,通过这个逻辑,我找到前端向后台请求的所有url,逐一进行分析。

"https://game.weixin.qq.com/cgi-bin/videoareawap/videolist?session_id="+session_id

第一个是这个,解析之后发现这是将视频信息打包向后台请求的,并不知道这是什么操作。请求之后并没有刷新请求数据。

"https://game.weixin.qq.com/cgi-bin/comm/videostat?session_id="+session_id

第二个是这个,上面的请求是向后端发送多条视频信息,这条请求则是发送单条视频信息。依然不知道有什么卵用。


https://game.weixin.qq.com/cgi-bin/comm/pagestat?op=batch&session_id="+session_id

formdata 是:#msg ="GameId=wx95a3a4d7c627e07d&SceneId=3&UIArea=304&PositionId=1&ActionId=3&SsId=1089&GiftId=0&GeneralID=wx95a3a4d7c627e07d&VideoQuality=0&Type=13&TypeId=1&VideoID="+str(videoid)+"&Time=0&Videotime="+str(videotime)+"&depth=0&AnchorType=0&Device=2&ClientVersion=6703&ConnectType=0&SourceID=0&sdkVersion=2404&DeviceBrand=HONOR&DeviceModel=KNT-AL20&ExternInfo=%7B%7D&extVersion=0&devInfo=&Abt=0"

第三条是这个,这条可能行最大,因为有pagestat这个关键字,重点研究了一下这个请求,通过拼接等方法尝试之后,发现依然不行。

还有其他请求,但明确知道其用途,不单独理出。

       所以感觉此方法行不通,就想尝试用新的方法。希望能够获取小程序前端源码进行分析。而小程序前端前端源码是经过编译之后上线的,同时如何获取小程序源码,就成了问题。经过百度发现,还真有方法。

       简单点说,小程序源文件其实就存在手机里面,但是这个目录正常进入是找不到的。基本所有手机都会将系统目录设置成不可见,用root 也不行。所以就考虑可以使用手机模拟器的方式进行查询。

       这里使用了夜神手机模拟器,


模拟登陆微信之后,点开微信电竞小程序,但是程序没有打开,总是闪退,程序没有运行成功。然后我再进入

/data/data/com.tencent.mm/MicroMsg/{一串16进制字符}/appbrand/pkg/

这个目录,过然发现有xxxx.wxapkg文件。

然后就是想办法拷贝出来,用夜神自带的文件管理器拷贝,总会出现权限问题,按照网上说法通过qq文件管理系统传输发现也无法拿到。然后再找其他途径,最后发现,用re文件管理器(分两种,要选择蓝色的确定带root权限的那种),通过root权限配合qq就能够拿到文件,



拷贝出来之后,就要做反编译的事情。

       网上只有一个大神写了一套微信反编译的工具,看了一下,部分网友反编译之后过然成功了,所以我把代码clone下来进行尝试。




结果是出现报错,然后我通过报错信息去找对应文件的内容。连$gwx都没有找到,请教身边前端同事,他们也没办法找出问题所在。

       但是好在有目录生成。


        把这个目录拷贝下来,放到微信web开发者工具中运行。然后出现报错,


请教前端同事,是不是一个小程序可能存在多个源文件,同事回答说是的。

然后问题就回到了最开始的微信电竞运行没有运行起来的问题,猜测可能就是因为没有加载到更多的源文件倒是启动失败。

至此,能尝试的爬取策略都尝试过了,考虑到就算爬下来,整个视频资讯内容也才1800+条,所以决定放弃爬取。


二、然后就是爬取王者营地的资讯。手机app的,这个爬取的时候,比我想象的又要顺利很多,同样是使用fiddler,抓取请求,查看返回内容。


https://ssl.kohsocialapp.qq.com:10001/game/listinfov2

首先通过这个链接,可以获取文章列表,

而formdata 直接抄取:

{"gameId":"20001","pos1":1,"page":page,"feedNum":"0","type":"25818","cChannelId":"3","cClientVersionCode":"2018122401","cClientVersionName":"3.41.202","cCurrentGameId":"20001","cDeviceCPU":"armeabi-v7a$armeabi","cDeviceId":"8c8aa874108e85574768a5c85d8fbcfcc24c061d","cDeviceImei":"862537035682515","cDeviceMac":"02:00:00:00:00:00","cDeviceMem":"55505","cDeviceModel":"KNT-AL20","cDeviceNet":"WIFI","cDevicePPI":"640","cDeviceSP":"中国联通","cDeviceScreenHeight":"2416","cDeviceScreenWidth":"1440","cGameId":"20001","cGzip":"1","cRand":"1546950860974","cSystem":"android","cSystemVersionCode":"26","cSystemVersionName":"8.0.0","gameAreaId":"0","gameId":"20001","gameServerId":"0","gameUserSex":"0","token":"9F8xsuAW","userId":"541905524"}

就可以了,很容易看到里面的相关信息所代表的意思,通过page进行翻页操作,模拟请求之后,过然获取到了文章列表。然后就是单页面数据请求

视频在文章列表里就能够请求到vid,title,阅读量,评论量和喜欢数,所以很简单的就请求到了所有的数据。文章则可以通过url:

https://ssl.kohsocialapp.qq.com:10001/game/detailinfov3

请求获取到数据,

Data则是:

{"gameId":"20001","apiVersion":"1","recommendId":"","pos":"2","algoType":"","pos1":"1","pos2":"0","iInfoId":iInfoId,"type":"25818","goPickComment":"0","taskId":"","cChannelId":"3","cClientVersionCode":"2018122401","cClientVersionName":"3.41.202","cCurrentGameId":"20001","cDeviceCPU":"armeabi-v7a%24armeabi","cDeviceId":"5502acf8109e4a66a4e443912ace3821014b0ca9","cDeviceImei":"868695033078799","cDeviceMac":"02:00:00:00:00:00","cDeviceMem":"113917","cDeviceModel":"MI

8

UD","cDeviceNet":"WIFIi","cDevicePPI":"440","cDeviceSP":"中国联通","cDeviceScreenHeight":"2028","cDeviceScreenWidth":"1080","cGameId":"20001","cGzip":"1","cRand":"1547003489109","cSystem":"android","cSystemVersionCode":"28","cSystemVersionName":"9","gameAreaId":"3","gameId":"20001","gameOpenId":"owanlssxkyCn-iJMttt7KG0jZObs","gameServerId":"3181","gameUserSex":"1","token":"HzzdRrGA","userId":"491132695"}


通过iInfoid就能拿到全部数据。


三、下面就是分析则么通过vid获取腾讯视频具体内容。

'https://av.video.qq.com/getinfo?callback=JsonpCallBack&&charge=0&defaultfmt=auto&otype=json&guid=c05f836b267c173e684cec6410185d3b&platform=70201&sdtfrom=v1104&defnpayver=0&appVer=3.3.128&host=v.qq.com&ehost=https%3A%2F%2Fv.qq.com%2F&_rnd=1507969615&spwm=4&vid={}&_qv_rmt=ZHrqJgF6A10991DBb%3D&_qv_rmt2=y%2FlweBl0157665zsQ%3D&_1507969615506='.format(vid)

起始url请求,返回一堆json数据,里面的keyid,preurl,vkey,都是拼接视频源地址的信息。通过这部分信息,最后拼接之后,链接即可获取视频播放源码。

顺利爬取到数据。


四、查找获取王者荣耀玩家段位信息的方式

       由于英雄联盟开放了玩家游戏段位查询接口,所以英雄联盟玩家的段位信息很容易拿到。而王者荣耀则在这方面并没有做开放。我想了几个策略方式。

[if !supportLists](1)     [endif]通过官网web看是否能够拿到数据。

[if !supportLists](2)     [endif]王者荣耀小程序能够拿到玩家自己的游戏数据

[if !supportLists](3)     [endif]王者营地有一个用户搜索的方式查询

[if !supportLists](4)     [endif]通过王者荣耀游戏客户端获取数据。


第一个方法,通过王者荣耀官网获取数据,发现其是需要有登陆态的,登陆之后才能获取自己的段位数据,而且不能查询其他人。我把这个结果告诉马里奥,马里奥说不行。他需要的是直接获取其他人的段位信息。

然后去看微信小程序的,需要拿到用户的code,马里奥说这个更不要想,太难了。遂放弃。

然后准备通过王者荣耀游戏客户端获取,结果发现根本抓不到fiddler请求啊~还把手机搞得不能够正常使用代理了。

最后一个方法,王者营地。

这个真的可以获取,但是呢,最后才发现,依然需要用户登陆,然后王者营地会给用户一个id,通过这个王者营地的用户id,王者营地app后台去请求到王者荣耀的数据库玩家段位数据。但是这个id是不会暴露给用户的,所以不会抓包的人根本不能知道自己的用户id是多少,同时没有登陆过王者营地app的用户,王者营地是拿不到用户数据的,同时王者营地时可以将战绩设置成隐身的。

因此这多方限制,虽然我们可以通过搜索的方式拿到部分用户的段位信息,但是这种方式未免太过鸡肋。用处不大。


经验总结:

[if !supportLists]1.     [endif]虽然微信电竞最终没有爬取到数据,但是通过爬取的过程中,我找到了很多种爬取资讯的策略方法,总结了一些经验,

[if !supportLists]2.     [endif]王者营地虽然是个用户量很大的app,但是可以说完全没有做反爬工作。所有有时候爬起数据,不能还是有很多意想不到的收获。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,635评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,543评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,083评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,640评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,640评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,262评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,833评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,736评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,280评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,369评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,503评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,870评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,340评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,460评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,909评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,512评论 2 359

推荐阅读更多精彩内容

  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Se...
    chinariver阅读 5,627评论 1 49
  • 今天是2018年12月6号阴有小雪 昨晚下了一晚上的雪,早上起来先去凉台瞅瞅外面的天,感觉好冷,屋顶,树枝上都是雪...
    翟艺萌妈阅读 108评论 0 0
  • 看着镜子里油头垢面的自己,好想把镜子打破。其实,想打破的仅仅是现实而已。 ...
    萧飒的独白阅读 191评论 0 0
  • 又到旅游嗨翻天的节奏,一直比较推崇这种品质游。 它可以让我们在小范围,增强旅友们之间的交流,也便于与导游或者旅游线...
    雪韵_莲心阅读 790评论 10 29
  • 他是我的室友。其实他早已不是孩子,但我总拿他当孩子一样宠溺。不自觉地,想起了我和他相识的那天,11月17号。我去换...
    cxibei阅读 215评论 0 1