微信跳一跳高分辅助踩坑
舊博文,搬到 csdn
原文:http://rebootcat.com/2018/01/08/wechat_jump_hack/
最近挺火的微信跳一跳
最近新版微信的『跳一跳』小程序著實火了一把,也把小程序這個概念再次推波助瀾了一波,看來以后小程序這個入口會有大作為。
張小龍:一個好的 APP 應該是用完即走的。
這句話對用戶來說是個好消息,對其他創業者來說卻可能會招來惡語相向。現在這個時代的步伐越來越快,大家好像都很忙,時間越來越珍貴。如果以后微信真的把小程序這個入口做好了,我覺得對于用戶來說,是件好事,當然前提是做好了,比如安全性啥的,比如不會被外掛啥的!
現在中午,吃完飯沒事大家都會高呼 “來一波!來一波!”,就是微信小游戲『坦克大戰』,3V3 玩得不亦樂乎!
廢話不多說,看著別人微信跳一跳幾百分那么高的分,感覺坐不住了,為了裝逼,所以有了這篇博文!
林夕水共是我,這是目前能讓好友看到的最高分
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Kaw92Kg2-1599141572052)(/images/bi.png)]
踩完所有坑寫的一個簡單的說明
說明一
說明:本人的原始目的雖然是為了裝逼,但其實是本著一起探討技術、一起學習、一起 hack 的心態來折騰這些的。所以對于某些人在某寶上花錢買外掛來刷分的行為表示不齒,不要為了裝逼而裝逼!
其實剛開始知道有外掛刷分的時候,并且朋友圈也有轉了好幾篇關于微信跳一跳可以輔助刷分的文章時,我當時的表情就是,“哦,高分原來是這樣”,然后一臉不屑,你是否也跟我一樣的表情當時?
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Gb3PNTzJ-1599141572058)(/images/wechatsoso.png)]
可是,如果是你去做,哪怕按部就班的來做,你能做好嗎?
這就是 “眼高手低”,其實很多時候,你看到的和你做過的是兩回事。前幾天翻出羅振宇2016年跨年演講,他講到他想做『得到』APP 的初衷就是希望做一個翰林院,可以把好的東西告訴身為皇帝的我們,因為我們不知道什么好什么不好,我們好多時候需要的是粗暴的對待,需要你直接告訴我結果,哪些是好的不就完了嗎?這種有別于類似微博、今日頭條這種根據你的口味來推薦的 “母愛算法”,也就是 “父愛算法”。
話沒錯,我也同意,但忽略了一個東西,每個人的接受能力不同,而且知識這種東西往往不是結果,更多的是過程,過程中獲得的東西可能比結果更有價值和意義。用到這里,你看到了那么多篇揭秘跳一跳外掛的文章,你就懂了嗎?你就可以不屑一顧了嗎?
你以為不過如此,其實中間的波折可能把你弄成一個傻逼!所謂:
絕知此事要躬行
說明二
- 我的技能:C++、Python等
- 我的設備:Mac Pro && iPhone 7Plus
寫這篇博文之前沒有接觸過安卓、IOS 開發,所以 Debug 移動設備上的程序(游戲、APP),相對來說會感覺困難一點。所以折騰這個跳一跳,真的還是挺折騰的!
開始吧
過程中可能會有很多問題,當時也沒來得及做記錄,所以僅記錄一些能想起來的問題吧!
安裝 WDA
首先,可以先大概看一下教你用 Python 來玩微信跳一跳
這篇文章,作者(@神器的戰士)很厲害,他已經把跳一跳輔助 wechat_jump_game 傳到 github 上了,話不多說,按照 Wiki 里的步驟開干。
由于我的設備是 MacOs + iPhone ,故第一步是得安裝一個 WebDriverAgent,這個東西我簡單理解就是一個 WebServer 驅動,可以遠程控制 IOS 設備。類似于安卓里的 ADB 工具。可以參考這篇文章:iOS 真機如何安裝 WebDriverAgent。
照著操作,沒毛病!當然前提是你得安裝好了 xcode,沒有的話直接在 AppStore 里搜索 xcode 就行。然后后面就是一路的坑。
- 什么是證書?
- 什么是蘋果開發者賬號?
- 有沒有免費的蘋果開發者賬號?
- 賬號和證書啥關系?
- 免費的證書和收費的證書一樣嗎?
- …
由于是 IOS 開發小白,這些概念都不懂,所以走了很多彎路,因為照著 iOS 真機如何安裝 WebDriverAgent 這篇文章中的步驟操作,預料之中沒有那么容易就成功。后來有網友說其實不用開發者賬號,有個證書就行,某寶上買一個就行,然后就去某寶上搜索了半天,完全不懂,最后花 19 元買了一個證書,如下圖:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DYZkNdCh-1599141572060)(/images/taobao.png)]
懷著忐忑的心,導入項目中,測試,然后果然也沒通過!當然這里反復試了很多次,Google 了很多次,試過了很多能搜到的辦法,依然沒通過!看來是必須花 99$ 去買一個個人開發者賬號了,不然這次裝不了這個逼了,心中有點涼了半截了!因為我不想花幾百塊錢就為了裝一次逼!
然后依然是 Google,偶然發現說 “其實真機調試不必花錢買個人開發者賬號的,現在 xcode 已經很開放了,可以使用個人的賬號(也就是你的 AppleID)升級為免費開發者賬號”。沒說的,低頭就是干!
我使用了用來登錄手機的 AppleID 做簽名,然后依然是不通過,這里就不放圖了。你得自己去親自操作,自己去踩坑。到這里,心涼的差不多了!離我裝逼的目標越來越遠了!
感謝偉大的 Google,讓我看到了這篇文章 【新功能】免99美金開發者賬號真機調試測試教程,有啥說的呢?跟著干啊!
這里強烈建議重新申請一個 AppleID,單獨用來做這個操作,因為后面需要用到 AppleID 的密碼,為了安全,不要使用用來登錄手機的那個 AppleID。我就傻逼的用了自己登錄手機的 AppleID,后來要用這個 AppleID 登錄軟件,執行一些操作,才發現這樣不安全,所以趕緊重新申請了個新的 AppleID,然后重新更改了原來 AppleID 的密碼。囧!
這里要注意,只需要兩個文件就行了,不用跟著做到最后。
- 申請ios測試證書(p12)
- 申請ios描述文件(mobileprovision)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sZNApPvS-1599141572064)(/images/p12.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mGZdFwLL-1599141572066)(/images/mobile.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-D4FGdOh7-1599141572070)(/images/p12mobile.png)]
到這里,可以很開心繼續之前的操作了,拿到項目中,導入進行證書簽名,然后又他么失敗了,GG!!
好吧,最后試了一下,需要更改 WebDriverAgentRunner Bundle Identifiler,隨便加個后綴,比如我加了 “.s6”:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oNJgfXQA-1599141572073)(/images/s6.png)]
WebDriverAgentLib 的 Bundle Identifiler不用更改。
所以最終的 xocde 中關鍵地方有以下幾處:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4WV6QEve-1599141572074)(/images/corea.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PeYqfdQy-1599141572076)(/images/core2.png)]
然后插上數據線,開始編譯測試。這里可能會碰到很多問題,不過別著急,慢慢來,一個個解決。
碰到的問題現在回過頭來已經沒辦法復現了,所以只能說,別著急,按照步驟來,碰到問題多 Google,反正最終編譯安裝成功后是這個樣子的:
2018-01-09 00:57:01.343909+0800 WebDriverAgentRunner-Runner[858:330642] +[CATransaction synchronize] called within transaction
2018-01-09 00:57:01.367036+0800 WebDriverAgentRunner-Runner[858:330642] Running tests...
2018-01-09 00:57:02.340279+0800 WebDriverAgentRunner-Runner[858:330642] Continuing to run tests in the background with task ID 1
Test Suite 'All tests' started at 2018-01-09 00:57:03.064
Test Suite 'WebDriverAgentRunner.xctest' started at 2018-01-09 00:57:03.065
Test Suite 'UITestingUITests' started at 2018-01-09 00:57:03.066
Test Case '-[UITestingUITests testRunner]' started.t = 0.00s Start Test at 2018-01-09 00:57:03.067t = 0.00s Set Up
2018-01-09 00:57:03.098235+0800 WebDriverAgentRunner-Runner[858:330642] Built at Jan 8 2018 17:00:55
2018-01-09 00:57:03.131709+0800 WebDriverAgentRunner-Runner[858:330642] ServerURLHere->http://192.168.0.101:8100<-ServerURLHere
這是通過如下操作看到的:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pecTbikL-1599141572079)(/images/console.png)]
其中比較關鍵的控制臺日志是:
ServerURLHere->http://192.168.0.101:8100<-ServerURLHere
192.168.0.101 就是 iPhone 設備的 ip 地址了。另外,手機上會有一個 WebDriverAgent App安裝上。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CtvvYoUw-1599141572081)(/images/iphoneweb.png)]
到這里基本可以證明 WebDriverAgent 安裝成功了。為了進一步驗證,可以參考iOS 真機如何安裝 WebDriverAgent中關于端口轉發一節。其中:
brew install imobiledevice
可能會出現下面的問題:
# brew install imobiledevice
Error: No available formula with the name "imobiledevice"
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
==> Searching local taps...
This similarly named formula was found:
libimobiledevice ?
To install it, run:brew install libimobiledevice ?
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.
按照提示來:
brew install libimobiledevice
成功后,執行命令:
iproxy 8100 8100
然后訪問:
http://localhost:8100/status
如果看到類似下面的 json 輸出說明 WDA 運行成功了:
{"value" : {"state" : "success","os" : {"name" : "iOS","version" : "11.2.1"},"ios" : {"simulatorVersion" : "11.2.1","ip" : "192.168.0.101"},"build" : {"time" : "Jan 8 2018 17:00:58"}},"sessionId" : "7E3A6F32-F529-4C42-9C65-3EF92FD993C6","status" : 0
}
幾番波折,終于安裝好了 WDA,這過程中就可能碰到很多問題,就有可能讓你放棄!好在我運氣還不錯,走到了這里,但這離裝逼還很遠!
跳一跳輔助上場
真機安裝 WDA 可謂一波三折,好在現在終于可以玩游戲了。
廢話不多說,當然首先下載 wechat_jump_game:
git clone https://github.com/wangshub/wechat_jump_game
cd wechat_jump_game
這里推薦用虛擬環境(Virtualenv && python3 )來管理,不然你會碰到很多問題:
virtualenv venv
source venv/bin/active
然后執行:
pip install -r requirements.txt
如果這一步碰到了安裝問題,解決就好。
接下來,就是見證奇跡的時刻:
確保以下事情:
- WDA 運行成功
- 啟動 iproxy 8100 8100 命令
- 手機頁面到微信跳一跳開始界面
然后運行(當然前提還是跟著項目 Wiki 去做):
python3 wechat_jump_auto_iOS.py
你會很開心的!!!
這里要注意的事情:
- config.json 中參數 “press_coefficient” 設置成 1.32 跳一跳精確度較高(only for iPhone 7Plus)
- 可以先跑一下手動版的,再上自動版的
這里有個動圖可以看一下
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gbz5jSx5-1599141572084)(http://o8fj2jbwb.bkt.clouddn.com/wechat.gif)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-z8sOyArS-1599141572096)(/images/bi2.png)]
后續
輕輕松松跑到900多分后,高興后,想向我女朋友裝個逼,結果一問,她說你是 81 分啊,我一臉懵逼,然后跑到 github 上才看到,原來大家早就在討論了,有可能被騰訊反作弊了,或者分數異常沒有提交成功。好吧,后來試了一些辦法,目前能成功保存到排行榜上的分數是 659 分。
總的來說,為了成功裝逼,需要程序做的一件事就是盡量模擬真人,具體來說:
- WDA 工具按壓屏幕的點不要固定,盡量有個隨機偏移
具體來說是修改 jump 函數:
s.tap_hold(random.uniform(100, 400), random.uniform(100, 400), press_time)
- 每跳一次延時一段時間,不要固定,盡量有隨機偏移
具體來說,main 函數 while 循環中:
time.sleep(random.uniform(1, 2.2))
- 不要連續跳,可以跳記下,停一段時間再跳
具體可以參考 wechat_jump_auto.py 這個腳本,這個腳本是對于 Android 設備的。
def main():i, next_rest, next_rest_time = (0, random.randrange(3, 10),random.randrange(5, 10))while True:pull_screenshot()im = Image.open("/images/1.png")# 獲取棋子和 board 的位置piece_x, piece_y, board_x, board_y = find_piece_and_board(im)ts = int(time.time())print(ts, piece_x, piece_y, board_x, board_y)if piece_x == 0:returnset_button_position(im)distance = math.sqrt((board_x - piece_x) ** 2 + (board_y - piece_y) ** 2)jump(distance)save_debug_creenshot(ts, im, piece_x, piece_y, board_x, board_y)backup_screenshot(ts)im.close()i += 1#這里設置跳幾下停幾秒,防止 banif i == next_rest:print('已經連續打了 {} 下,休息 {}s'.format(i, next_rest_time))for j in range(next_rest_time):print("程序將在 {}s 后繼續".format(next_rest_time - j))time.sleep(1)print('\n繼續')i, next_rest, next_rest_time = (0, random.randrange(10, 30),random.randrange(10, 20))print('下一次連續跳 {} 休息,下一次將休息 {}s'.format(next_rest, next_rest_time))# 為了保證截圖的時候應落穩了,多延遲一會兒,隨機值防 banprint("\n")time.sleep(random.uniform(1, 2.2))
- 最好不要超過 1000 分,適可而止,逼裝成功就行了
- 跑到一段時間,小人總會掉落,而且兩個棋盤越近,跳躍精確度越低,算法可以再改進
- …
裝逼的意義思考
逼應該是裝成功了,還是挺開心的呢!
我覺得某件事有個點能吸引到你,讓你投入其中做一些探索、研究,這是一件很好的事情。因為畢竟是因為有趣吸引了你啊,事情就是因為讓你感到有趣,才讓你有了動力!
另外,回顧整個過程,其實也不難,甚至很簡單,但簡單的事情不是每個人都可以做到!告誡自己,不要眼高手低,很多事沒有想像中那么讓你不屑一顧!
這讓我又想起了開頭提到的老羅的話,確實,知識這個東西,更多的是過程中你的收獲和體驗,那些才是你珍貴的財富!
說到這,我想起了一個問題,怎樣來定義一個人?比如你自己,假如哪天你突然失憶了,忘記了以前發生過的所有事情。那么對于你身邊的人來說,你還是你嗎?
這個答案估計很不一樣,我覺得是:你已經不是你了,那些稱之為 “你” 的符號、烙印早已消失,那是時間的雕刻啊!每個時間點上時間對你的雕刻,那些才構成了一個個你,如果抹掉所有這些雕刻,你早已不是你了。
可見,過程顯得多么重要!
后記
繼續刷分,目前能讓好友能看到的最高分是 659,看能不能接近 1000 分!
洗洗睡吧,現在都凌晨 02:20 了!逼不停,探索不停!
參考
- 教你用 Python 來玩微信跳一跳
- wechat_jump_game
- iOS 真機如何安裝 WebDriverAgent
- 新功能】免99美金開發者賬號真機調試測試教程
- 微信跳一跳-最新可用技(zuo)巧(bi)!
總結
以上是生活随笔為你收集整理的微信跳一跳高分辅助踩坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用docker制作hexo镜像
- 下一篇: 辩证看待 iostat