我是如何次次《頭腦王者》獲得滿分的

前言

最近答題類的應(yīng)用實(shí)在是太火了,什么沖頂大會(huì)、百萬英雄啊汰翠,動(dòng)不動(dòng)就幾十上百萬的獎(jiǎng)金锈拨,著實(shí)讓人看著很是眼紅...然后本弱雞學(xué)疏才淺...題目全靠蒙砌庄,便不湊什么熱鬧了。之后沒過幾日有個(gè)小程序倒是在辦公室里面火了一把,就是這次需要拿來開刀的《頭腦王者》娄昆,其實(shí)也是個(gè)答題的小程序佩微,所以還是不擅長就是了。雖然我不擅長答題萌焰,但我好歹是個(gè)程序員呀喊衫,所以我走上了一條程序員的通頂之路...

成果

每輪游戲需要答5題,全對(duì)并且快速作答才能拿到滿分杆怕,滿分是1200分族购。有了這種戰(zhàn)績,世界第一不是夢陵珍!當(dāng)然玩游戲是為了樂趣寝杖,本弱雞只是出于興趣使然,這種答題類的游戲還是自己玩比較有意思互纯。

準(zhǔn)備工作

在開始寫這種游戲的輔助之前先思考幾個(gè)問題瑟幕。

如何偽造接口請(qǐng)求?
如何實(shí)現(xiàn)精準(zhǔn)答題留潦?
如何完成自動(dòng)答題只盹?
如何偽造接口請(qǐng)求?

首先小程序的接口請(qǐng)求都是基于HTTPS的兔院,具體捕獲Https的方式我這邊還是采用Anyproxy去捕獲殖卑,需要安裝對(duì)應(yīng)的Https證書才可以。之前的文章也有提及坊萝,這里再贅述一遍孵稽。

本文采用的Anyproxy,使用其他的代理工具也是一樣的十偶。

1. 安裝node.js
2. npm i -g anyproxy
3. anyproxy-ca // 生成證書
4. anyproxy -i // 以代理https的方式啟動(dòng)
// 然后手機(jī)端配置代理的IP及PORT菩鲜,默認(rèn)端口為8001,
// Anyproxy的WebService的默認(rèn)端口為8002惦积,這里可以查看到接口
// 手機(jī)端配置代理以后需要下載證書并信任接校,
// 蘋果端的可以在手機(jī)的Safiri里面輸入xxx.xxx.xxx.xxx:8002/fetchCrtFile的方式下載到證書
// 高版本的iOS可能需要在兩處地方信任。

配置完以后狮崩,打開游戲就能抓取到頭腦王者對(duì)應(yīng)的請(qǐng)求包了蛛勉。我先模擬了一次好友對(duì)戰(zhàn),然后需要分析了哪些包是需要的厉亏。這里我就直接把一些重要的接口給貼出來了

login接口(登錄接口董习,這里重要的信息是uid和token)
intoRoom接口 (進(jìn)入房間的接口)
beginFight接口 (開始對(duì)戰(zhàn)接口)
findQuiz接口 (找題目接口)
choose接口 (答題接口)
getResults接口 (獲取比賽結(jié)果的接口)
leaveRoom接口 (離開房間接口)

先從接口看一下,這是一個(gè)非常順暢的游戲流程爱只,但是拿到這些接口我就可以開始為所欲為了嗎皿淋?顯然是不可能的招刹,如果每個(gè)人都能有權(quán)限肆意使用別人的接口的話,豈不是可以很輕松的做到DDoS攻擊或者很輕松地獲取到自己想要的信息了嗎窝趣?對(duì)于一家有經(jīng)驗(yàn)的公司來說顯然是不會(huì)犯這種錯(cuò)誤的疯暑,那么我隨便拿一個(gè)接口來稍作分析。

上圖是天梯排位匹配接口哑舒,從Body中可以看到需要傳給服務(wù)端matchId妇拯、npcId、uid洗鸵、t越锈、sign五個(gè)參數(shù),這5個(gè)參數(shù)都是必須的膘滨,只有有一個(gè)參數(shù)出錯(cuò)甘凭,那請(qǐng)求就無法成功,前四個(gè)其實(shí)好理解火邓,關(guān)鍵是第五個(gè)簽名參數(shù)sign丹弱,是怎么來的呢?
這里就需要用到逆向工程了...簡單的描述就是...拿到小程序中頭腦王者壓縮后的源碼铲咨,并分析出其中的加密規(guī)則躲胳,篇幅有限,這里就直接描述其加密規(guī)則了纤勒。

sign的生成規(guī)則:Body內(nèi)所有的參數(shù)(除去sign)+ token(login接口獲扰髌弧)并按照key值排序以后對(duì)齊進(jìn)行MD5加密,
比如uid=111, t=222踊东, token=333北滥,那么加密前子串應(yīng)為t=222token=333uid=111
既然sign也有了,那其實(shí)就很簡單了闸翅,然后我就用node寫一個(gè)簡單的client去做偽造了接口請(qǐng)求。

如何實(shí)現(xiàn)精準(zhǔn)答題菊霜?

目前也有許多沖頂大會(huì)坚冀、百萬英雄的輔助,他們的思路是答題的時(shí)候快速識(shí)別到題目并進(jìn)行快速的搜索題目進(jìn)行輔助答題鉴逞,但對(duì)于這款游戲记某,如果想實(shí)現(xiàn)精準(zhǔn)的答題的話,最好的辦法就是匹配題庫构捡,那么問題就是題庫怎么來液南?當(dāng)然是通過爬蟲去爬取的了,OK...來讓我們找一找題庫的接口勾徽!顯然這是不可能的滑凉!要是對(duì)外開放了題庫的接口,這個(gè)游戲也太容易被攻破了把。但是從上述的一步中畅姊,其實(shí)我們已經(jīng)實(shí)現(xiàn)了開房模擬對(duì)戰(zhàn)了咒钟,那么是不是可以一直開房間一直對(duì)戰(zhàn)的方式獲取到題庫呢?所以我這里采用的就是這種思路若未。

success是腳本自動(dòng)答題打?qū)Φ念}目(一共5題)朱嘴,total是總共的題庫數(shù)量。從這個(gè)規(guī)拇趾希可以看出來萍嬉,正確率已經(jīng)是極高的了,說明題庫的數(shù)量應(yīng)該估計(jì)只有17000左右的范圍隙疚,但是由于剩下的題庫仍然在補(bǔ)充且最后的10%會(huì)需要較大的成本才能覆蓋到壤追,其實(shí)題庫做到這一步已經(jīng)足夠了,80%+的滿分概率...幾乎已經(jīng)是無人匹敵了吧甚淡?
如何實(shí)現(xiàn)自動(dòng)答題大诸?
自動(dòng)答題的方案有兩種:

類似跳一跳游戲,通過截屏=>OCR讀取題目=>匹配題庫=>模擬點(diǎn)擊答案

Anyproxy代理贯卦,寫rule文件修改請(qǐng)求资柔,捕獲findQuiz請(qǐng)求接口,server重新發(fā)起請(qǐng)求并等待數(shù)據(jù)返回=>判斷返回的題目是否已經(jīng)存在于數(shù)據(jù)庫=>匹配答案直接作答或返回題目

本弱雞在這里使用的就是第二種方案(具體實(shí)現(xiàn)就不贅述了撵割,大家可以直接看源碼)

總結(jié)

不太善于寫文章贿堰,上述很多步驟都簡單帶過了,在這里只是簡單地描述了一下過程啡彬,然后我會(huì)開源這部分的代碼羹与,寫得有些簡陋希望各位大佬們不要嘲笑(由于在寫Anyproxy的rule的時(shí)候沒法使用babel,所以我用require取代了import)庶灿。最后希望大家能給與我一點(diǎn)支持及肯定纵搁,給點(diǎn)star吧...只要10個(gè)不過分吧!有好心能請(qǐng)我喝杯咖啡那就萬分感謝了往踢。>.<

項(xiàng)目地址GitHub: 頭腦王者輔助

本文作者:lyh2668
原文地址:我是如何次次《頭腦王者》獲得滿分的-實(shí)戰(zhàn)教程-小程序社區(qū)-微信小程序-微信小程序開發(fā)社區(qū)-小程序開發(fā)論壇-微信小程序聯(lián)盟

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腾誉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子峻呕,更是在濱河造成了極大的恐慌利职,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘦癌,死亡現(xiàn)場離奇詭異猪贪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)讯私,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門热押,熙熙樓的掌柜王于貴愁眉苦臉地迎上來西傀,“玉大人,你說我怎么就攤上這事楞黄〕仄啵” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵鬼廓,是天一觀的道長肿仑。 經(jīng)常有香客問我,道長碎税,這世上最難降的妖魔是什么尤慰? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮雷蹂,結(jié)果婚禮上伟端,老公的妹妹穿的比我還像新娘。我一直安慰自己匪煌,他們只是感情好责蝠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著萎庭,像睡著了一般霜医。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驳规,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天肴敛,我揣著相機(jī)與錄音,去河邊找鬼吗购。 笑死医男,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的捻勉。 我是一名探鬼主播镀梭,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼踱启!你這毒婦竟也來了丰辣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤禽捆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后飘哨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胚想,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年芽隆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浊服。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片统屈。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖牙躺,靈堂內(nèi)的尸體忽然破棺而出愁憔,到底是詐尸還是另有隱情,我是刑警寧澤孽拷,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布吨掌,位于F島的核電站,受9級(jí)特大地震影響脓恕,放射性物質(zhì)發(fā)生泄漏膜宋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一炼幔、第九天 我趴在偏房一處隱蔽的房頂上張望秋茫。 院中可真熱鬧,春花似錦乃秀、人聲如沸肛著。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枢贿。三九已至,卻和暖如春抬吟,著一層夾襖步出監(jiān)牢的瞬間萨咕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國打工火本, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留危队,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓钙畔,卻偏偏與公主長得像茫陆,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子擎析,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容