從前幾天微信最新版本 6.6.1 的更新開始,微信小程序游戲“跳一跳”似乎在一夜之間風(fēng)靡了朋友圈。
它甚至比五六年前的飛機(jī)大戰(zhàn)游戲都火爆,這種小游戲的火爆不僅僅是因為有魔性、有意思,更重要的是可以進(jìn)行好友 PK!
“跳一跳”的小游戲推出后,很多準(zhǔn)備奮發(fā)向上的同學(xué),這個假期的美好愿景被毀了。
為了多跳幾步,以及朋友圈的排名,
大家在整個假期都是這樣的:
就這樣跳啊跳...
擠地鐵跳,蹲馬桶跳,乘電梯跳,
靜默的每 1 秒都不能浪費(fèi)
在辦公室,還要時刻警覺后面...
說好的工作呢...我控制不住我自己??!
可是很多人費(fèi)盡心思跳了一下午
也沒超過 100 分
但排行榜里四分之三的人都超過三位數(shù)了……
真是扎心了……
今天小編來告訴你,如何才能獲取高分,如何才能占據(jù)朋友圈榜首?
游戲攻略拿高分
普通版本的高分秘籍是這樣的:
如果你每次都能挑到各自的正中間的話,可以 + 2 分,如果連著跳到中間會 + 4、+6、+8、+10……
跳到污水井蓋上面,停留 2 秒,等到下水道聲音響起直接 + 5 分
跳到魔方上面,停留 2 秒,等到魔方轉(zhuǎn)正會直接 + 10 分
跳到音樂盒上面,停留 2 秒,等到音樂響起會直接 + 30 分
跳到便利店,停留 2 秒,等到便利店開門會直接 + 15 分
以上是針對普通用戶,但對咱們程序猿來說用這套太 Low 了,接下來要說的是如何從技術(shù)層面去實現(xiàn)高分:
技術(shù)手段實現(xiàn)高分
通過 Python 手段
在 Github 上面已經(jīng)有人用 Python 來玩跳一跳這個游戲了,想多少分就有多少分。
GitHub 地址:https://github.com/wangshub/wechat_jump_game
步驟:
安卓手機(jī)打開 USB 調(diào)試,設(shè)置》開發(fā)者選項》USB 調(diào)試。
電腦與手機(jī) USB 線連接,確保執(zhí)行 adb devices 可以找到設(shè)備 id。
界面轉(zhuǎn)至微信跳一跳游戲,點(diǎn)擊開始游戲。
運(yùn)行 python wechat_junp_auto.py,如果手機(jī)界面顯示 USB 授權(quán),請點(diǎn)擊確認(rèn)。
很有趣!簡單點(diǎn)說就是:用電腦幫你玩微信跳一跳,全自動,不用手動。效果:
這里梳理一份稍微完整一點(diǎn)的操作步驟,以 Mac 的為例,Win 的思路是一樣的。
另外,這里用的是安卓手機(jī),iOS 也差不多,不過要下載一個 5.5GB 的 Xcode。
1、下載程序,打開下面的鏈接,點(diǎn)右側(cè) clone or download,再點(diǎn) download zip。
2、解壓 zip 文檔,再把文件夾挪到桌面,打開文件夾,你會看到很多東東:
3、打開 mac 系統(tǒng)自帶的“終端”,這是一個命令行應(yīng)用,win 用 cmd 就可以了吧。
4、通過終端進(jìn)入文件夾,命令行如下:
~/Decktop/wechat_jump_game-master
5、安裝 pip,在終端輸入 sudo easy_install pip 再回車,可能要輸入密碼。
6、安裝各種依賴程序,在終端輸入 pip install -r requirements.txt 再回車,系統(tǒng)會自動安裝。
requirements.txt 就是文件夾里的一個 txt 文檔,里面寫著會自動安裝哪些程序。
pip 就是第 5 步安裝的程序,如果沒安裝,pip install -r requirements.txt 將無法執(zhí)行。
7、安裝 adb,打開下面的鏈接查看,有 3 種方法,建議用第二種,是英文,如果你不懂英文可以百度中文教程。
https://stackoverflow.com/questions/31374085/installing-adb-on-mac-os-x
8、打開安卓手機(jī)的設(shè)置 - 開發(fā)者選項 - USB 調(diào)試(如果沒有開發(fā)者選項,可百度打開開發(fā)者選項的方法),用 USB 線連接手機(jī)和電腦,手機(jī)可能會彈出對話框,點(diǎn)同意。
如果出現(xiàn)運(yùn)行腳本后小人不跳的情況,請檢查是否有打開“USB 調(diào)試(安全模式)”,記得順便打開 USB 模擬點(diǎn)擊。
9、在終端輸入 adb devices,如果看到下面這種信息,說明 adb 已正確安裝,也說明電腦成功檢測到手機(jī)。
如果你系統(tǒng)是 Win10 或 Win8 可能需要先設(shè)置一下“禁用強(qiáng)制驅(qū)動程序簽名”。
不然會出現(xiàn)下面的“文件的哈希值不在指定目錄中”安裝不上 adb 驅(qū)動的問題,網(wǎng)上有教程請自行學(xué)習(xí)。
10、打開微信跳一跳點(diǎn)開始,在終端輸入 python wechat_jump_auto.py 點(diǎn)回車,游戲就會自動開始~ 請根據(jù)手機(jī)分辨率運(yùn)行相應(yīng)的 *.py 文件。
注意:
我跳了很多次,最后都會掉下盒子,暫時最多只能跳到 1800+ 分,不能一直跳下去。
分辨率不同,配置文件也不一樣,具體看 config 這個文件夾。
別刷太高分,有人刷到 4000,結(jié)果分?jǐn)?shù)被微信清零。
實驗結(jié)果:
只要有耐心,你就是王者
下面分析一下代碼,Main 部分有一個 While 循環(huán),只要你不終止,它會一直重復(fù)操作。
Main部分代碼里面主要調(diào)用的自定義函數(shù)有三個,還有一個 time.sleep 是為了延遲一下:
pull_screenshot() #獲取圖像
find_piece_and_board(im) #根據(jù)圖像獲取兩個點(diǎn)的坐標(biāo)值
jump(math.sqrt((board_x - piece_x) ** 2 + (board_y - piece_y) ** 2))#根據(jù)兩點(diǎn)距離和手機(jī)像素計算按壓時間并 JUMP
pull_screenshot()
這個函數(shù)主要是利用 adb 來獲取圖像,這里順便說一下“adb”,adb 是連接 Android 手機(jī)與 PC 端的橋梁,可以讓用戶在電腦上對手機(jī)進(jìn)行全面的操作。
借助 adb 工具,我們可以管理設(shè)備,還可以進(jìn)行如安裝軟件、系統(tǒng)升級、運(yùn)行 Shell 命令等等操作。如“pull”就是獲取設(shè)備中的文件,想更多了解 ADB 請自行學(xué)習(xí)~
find_piece_and_board()
根據(jù)圖像獲取當(dāng)前小人位置和落點(diǎn)的坐標(biāo)系(piece_x, piece_y, board_x, board_y),這個是這個腳本中的核心部分。
jump
根據(jù)設(shè)定的“長按的時間系數(shù)”計算需要的按壓時間,這個系數(shù)是根據(jù)手機(jī)分辨率推出來的,按壓時間設(shè)定不小于 200ms,核心命令是 adb 的“input swipe”。
“input swipe”模擬的是手指在屏幕上的滑動事件,如果兩個點(diǎn)坐標(biāo)不變化就成了長按了。
代碼中四個變量的設(shè)置是:“swipe_x1,swipe_y1,swipe_x2,swipe_y2 = 320,410,320,410”,所以是模擬的長按,其實滑動也是可以的。
偽造 POST 請求刷分
除了可以用 Python 實現(xiàn)高分,還有網(wǎng)友爆料還可以直接偽造 POST 請求刷分,直接改分?jǐn)?shù)。
昨日,V2EX 網(wǎng)站上一篇題為《微信跳一跳 可以直接更改分?jǐn)?shù), POST 請求沒有校驗… 》的文章獲得大量曝光,帖中指出微信小程序存在漏洞,跳一跳小游戲可以直接改分?jǐn)?shù)。
用戶朱鵬飛根據(jù)帖子的指引,發(fā)現(xiàn)甚至連微信小程序、小游戲的源代碼都可以直接下載,只需要知道 appid 和版本號,就可以直接構(gòu)造 URL 下載后綴為 wxapkg 的源碼包,不需要任何驗證。
據(jù)微信公眾號“小專欄平臺”消息,截自 1 月 1 日 23:50,微信官方已經(jīng)修復(fù)了這個漏洞。不過,據(jù)說一些老版本的微信還是可以抓包獲取包地址。
最后一個微信已經(jīng)修復(fù) Bug(部分版本沒有修復(fù)),但只要利用好前面兩個攻略,再配合對節(jié)奏的把握,登上朋友圈前幾完全不在話下。
話不多說,趕緊去玩吧?。?!