起步最近直播答題火熱,群里也經(jīng)常看到比拼微信小程序《頭腦王者》。我比較笨,憑純答題只到了黑金段位。鑒于本周剛剛點(diǎn)亮了收集抓包的技能,于是想試著通過(guò)這個(gè)來(lái)做一個(gè)輔助工具。抓包我使用的是fiddler抓的,網(wǎng)上 ...
最近直播答題火熱,群里也經(jīng)??吹奖绕次⑿判〕绦颉额^腦王者》。我比較笨,憑純答題只到了黑金段位。鑒于本周剛剛點(diǎn)亮了收集抓包的技能,于是想試著通過(guò)這個(gè)來(lái)做一個(gè)輔助工具。
我使用的是 fiddler
抓的,網(wǎng)上關(guān)于抓app包的教程很多,可自行查閱,這里不贅述。根據(jù)抓包發(fā)現(xiàn)出題目的接口:
數(shù)據(jù)格式是一個(gè) json 字符串,如下所示:
{"data":{"quiz":"我國(guó)的根本大法指的是?","options":["刑事訴訟法","刑法","婚姻法","憲法"],"num":3,"school":"理科","type":"地理","typeID":9,"contributor":"孫悅悅","partner":0,"endTime":1516447448,"curTime":1516447433,"myBuff":{}},"errcode":0}
解決了題目的獲取,接下來(lái)就是想辦法把題目傳遞到其他程序,利用 FiddlerScript
就可以了:
點(diǎn)擊 FiddlerScript
然后選擇 OnbeforeResponse
進(jìn)入該函數(shù)內(nèi),寫下如下代碼:
這部分就是將題目發(fā)到自己寫的一個(gè)程序上:
if (oSession.fullUrl.Contains("question.hortor.net/question/bat/findQuiz"))
{
//把內(nèi)容通過(guò)ajax http發(fā)送其它地方
var _xhr = new ActiveXObject('Microsoft.XMLHTTP');
var url = 'http://localhost:8000/api/brain_king/';
//不需要返回值所以設(shè)置為空回調(diào)
_xhr.onreadystatechange = function() {}
_xhr.open('POST', url, true);
_xhr.setRequestHeader("Content-Type", "application/json");
_xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
_xhr.send(oSession.GetResponseBodyAsString());
}
得到問(wèn)題后如何答題就見仁見智了,最簡(jiǎn)單的一個(gè)方式就是把問(wèn)題提交到百度上,進(jìn)行詞頻統(tǒng)計(jì),大多數(shù)情況下詞頻多的為正確答案,于是我及其簡(jiǎn)單的做了處理:
class BrainKing(generics.GenericAPIView):
def post(self, request):
question_dict = request.data.get("data")
question_text = question_dict["quiz"]
choices = question_dict["options"]
content = session.get('http://www.baidu.com/s?wd=' + question_text, timeout=2).text
for choice in choices:
print(choice + " : " + content.count(choice))
return Response("")
用這個(gè)上分確實(shí)很快,不過(guò)缺點(diǎn)也是比較明顯的,帶一些干擾詞就不行了,但總體上王者還是比較輕松的:
我有個(gè)朋友真的靠純答題上的王者,令人敬佩。最后提醒一下,游戲而已,不要為了攀比傷了和氣
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)