C#開發(fā)答題贏錢游戲(自動答題器)
一、前言
現(xiàn)在最火的直播游戲,那就是答題贏錢直播了,如百萬英雄、芝士超人、花椒直播、沖頂大會等等,這些游戲的玩法都很簡單,答對12題即可瓜分獎金了。玩法雖然簡單,但是要能完全答對12題難度還是挺高的,畢竟要非常廣的知識面!
二、怎么做自動答題
要能自動答題,肯定是要能知道題目及答案了。題目可以從直播界面獲取,方法就是OCR或者搞到數(shù)據(jù)接口了………嘿嘿,都說了簡單教你,所以O(shè)CR或者分析數(shù)據(jù)接口這些復(fù)雜的操作,我肯定不教你了(我也不會啊^_%)……
幸好,現(xiàn)在市面上有一些非常有技術(shù)“逼格”的公司都在趁答題熱度,推出了答題助手之類的APP軟件,比如百度的《簡單搜索》、搜狗的《旺仔答題》、阿里UC的答題助手等等……它們都實現(xiàn)了答題功能,但是,由于它們只是輔助的助手,它們并不會自動幫你答題,只是會分析出題目,然后用AI與大數(shù)據(jù)分析出可能性較高的答案項!所以并不能保證100%的正確率!雖然不能保證100%正確率,但有時“運氣好”(AI也要運氣?哈哈…現(xiàn)在的AI還是有點LOW了…)還是能完全答對12題的!
三、教你做自動答題器
上面的幾個助手中,我用了百度的《簡單搜索》APP,因為它支持多家的答題游戲!為了保證人家的APP的使用量,還是厚道點直接使用它的APP吧,不要偷人家的接口數(shù)據(jù),但不“偷”接口數(shù)據(jù)我們要怎么從它的APP里獲取得到題目和答案數(shù)據(jù)呢?
用最古老但又最有效的方法,我們搭個HTTP代理,這樣APP的HTTP請求都會優(yōu)先經(jīng)過我們代理,不用任何“暴力”,我們就光明正大的“偷窺”到了“簡單搜索”的接口數(shù)據(jù)!
搭HTTP代理服務(wù)并且能對請求會話及數(shù)據(jù)進(jìn)行分析處理的,肯定是用開發(fā)與測試都愛用的強(qiáng)大的Fiddler軟件了!
電腦下載安裝好Fiddler,并且開啟允許遠(yuǎn)程訪問功能,如下圖:
由于百度簡單助手的接口請求是采用了HTTPS方式,為了能直接在Fiddler里分析出接口數(shù)據(jù),我們還要開啟HTTPS的解碼功能,如下圖:
開啟后會在你本地電腦安裝一個調(diào)試證書,你接受安裝就可以了(這調(diào)試證書的作用就是會替換掉APP請求交互用的證書)。藍(lán)色箭頭那個選項,隨便你選了。
弄好上面的后,就進(jìn)入我們最核心的一步了,“偷窺到數(shù)據(jù)后自動向手機(jī)提交答案”!,利用Fiddler的 Script 功能,就能非常的輕松做到,如下圖:
Fiddler里捕獲的所有會話請求都會執(zhí)行Script的代碼,所以利用這一功能,我們可在Script 實現(xiàn)“答案偷窺”功能,當(dāng)請求會話接收到遠(yuǎn)程服務(wù)端的數(shù)據(jù)返回響應(yīng)后OnBeforeResponse函數(shù)會被調(diào)用,因此我們可在這函數(shù)里增加我們想要做的功能代碼,完整代碼如下:
static function GetTextLength(text : String) : int{
return System.Text.Encoding.GetEncoding("gb2312").GetByteCount(text);
}
static function GetItemValue(text : String, key : String) : String{
var pattern = key + "\":\"?([^\",}]+)\"?";
var m = Regex.Match(text, pattern);
var v = m.Success ? m.Groups[1].Value : null;
FiddlerObject.log(key + " >>>>" + v);
return v;
}
static var questionId : String = "";
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
if(oSession.url.IndexOf("secr.baidu.com/nv/answer.sock") >= 0){
var text = oSession.GetResponseBodyAsString();
FiddlerObject.log(oSession.url);
FiddlerObject.log(text);
var title = GetItemValue(text, "text");
var step = GetItemValue(text, "step");
//step=2時才表示是最終認(rèn)為正確率最高的答案,有時題目出現(xiàn)復(fù)活卡文字時表示百度的OCR出現(xiàn)識別錯了 :(
if(title != null && title.IndexOf("復(fù)活卡") == -1 && "2" == step){
var app = GetItemValue(text, "app");
var qId = app + "_" + GetItemValue(text, "questionId");
//答案(0-2)
var r = GetItemValue(text, "result");
//flag用于處理只提交一次答案
var flag = qId != questionId;
if(r != null && flag){
questionId = qId;
FiddlerObject.log(questionId + ">>選擇答案:" + (char)(65 + int.Parse(r)));
var x = 0, y = 0;
//計算題目長度,部分APP的題目顯示換行時導(dǎo)致答題項的坐標(biāo)值跟隨改變
var len = GetTextLength(title);
//取得手機(jī)APP里答題項的位置坐標(biāo)(不同屏幕的手機(jī)坐標(biāo)值不一樣)
if(app == "huajiao"){
if(r == "0"){
x = 540;
y = 720;
}else if(r == "1"){
x = 540;
y = 880;
}else if(r == "2"){
x = 603;
y = 1040;
}
var m = len / 28;
y = y + (m * 100);
}else if(app == "xiguashipin"){
if(r == "0"){
x = 565;
y = 690;
}else if(r == "1"){
x = 565;
y = 850;
}else if(r == "2"){
x = 565;
y = 1020;
}
//var m = len % 36;
//y = y + (m * 80);
}else if(app == "chongdingdahui"){
if(r == "0"){
x = 550;
y = 552;
}else if(r == "1"){
x = 550;
y = 690;
}else if(r == "2"){
x = 550;
y = 830;
}
var m = len / 36;
y = y + (m * 100);
}else if(app == "zhishichaoren"){
if(r == "0"){
x = 558;
y = 509;
}else if(r == "1"){
x = 558;
y = 686;
}else if(r == "2"){
x = 558;
y = 845;
}
var m = len / 29;
y = y + (m * 70);
}
if(x != 0){
FiddlerObject.log(String.Format("已傳送答案>>>>{0} * {1}", x, y));
//調(diào)用adb命令用于向手機(jī)發(fā)送點擊命令
var startInfo = new System.Diagnostics.ProcessStartInfo("adb", String.Format("shell input tap {0} {1}",x, y));
startInfo.CreateNoWindow = false;
System.Diagnostics.Process.Start(startInfo);
}
}
}
}
}
代碼實現(xiàn)很簡單,上面代碼的注釋,一看就懂,但有一點就是,不同手機(jī)上面的X,Y坐標(biāo)值可能要改動,上面只是我手機(jī)(1920x1080)的適配坐標(biāo)值。
四:開始自動答題之旅吧
A、我們首先要將上面的《簡單搜索》APP跑起來并且還要讓它通過我們上面的Fiddler代理,因為《簡單搜索》是APP,所以我們就讓它運行在手機(jī)里或者安卓模擬器里,再設(shè)置一下手機(jī)或者模擬器的WIFI代理即可。
B、運行答題APP的手機(jī)還要開啟USB調(diào)試功能,并且用USB線連接上剛才開啟Fiddler代理的電腦,運行adb deivices命令能找到連接的手機(jī)就表示正常。
C、答案開始前先進(jìn)入《簡單搜索》對應(yīng)的答題游戲的題目區(qū)頁面,比如“百萬英雄”,再開啟對應(yīng)答題游戲APP。
經(jīng)過以上步驟后,就讓電腦自動幫你答題吧:)
,當(dāng)然,答案是否準(zhǔn)確就要看百度的AI了:),有時還是能成功的,如我這次的闖關(guān),拿到了4元喲。。
五、后話
其實這類游戲,娛樂一下就好,不要沉迷在里面,想在里面“贏”大錢是不可能的,畢竟這里面肯定存在貓膩的。如為考慮運營成本,比如A場說提供300W獎金,不管最終有多少真人闖關(guān)成功,都會加總獎金10%的機(jī)器人(虛擬人),這樣保證最后真人每人拿的獎金最高不會到10塊錢,比如有5W真人成功闖關(guān)(實際真的能有這么多真人能完全答對12題?),每人最高可分得獎金只有8.6塊左右,這樣實際成本只有42W多。用42W的實際成本去做一個300W噱頭的營銷運營,是非常值得的!
總結(jié)
以上所述是小編給大家介紹的C#開發(fā)答題贏錢游戲(自動答題器),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對我們網(wǎng)站的支持!
上一篇:C#實現(xiàn)JSON解析器MojoUnityJson功能(簡單且高效)
欄 目:C#教程
下一篇:C# TSC打印二維碼和條形碼的實現(xiàn)方法
本文標(biāo)題:C#開發(fā)答題贏錢游戲(自動答題器)
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/5282.html
您可能感興趣的文章
- 01-10C#調(diào)用WebService實例開發(fā)
- 01-10實現(xiàn)ASP.NET無刷新下載并提示下載完成的開發(fā)思路
- 01-10C#開發(fā)中的垃圾回收機(jī)制簡析
- 01-10C#微信開發(fā)(服務(wù)器配置)
- 01-10結(jié)合Visual C#開發(fā)環(huán)境講解C#中事件的訂閱和取消訂閱
- 01-10C#開發(fā)Android百度地圖手機(jī)應(yīng)用程序(多地圖展示)
- 01-10C#微信公眾平臺開發(fā)之高級群發(fā)接口
- 01-10C#微信公眾平臺開發(fā)之a(chǎn)ccess
- 01-10C#在Unity游戲開發(fā)中進(jìn)行多線程編程的方法
- 01-10C#微信開發(fā)之微信公眾號標(biāo)簽管理功能


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文


