教妳用Python玩微信。
本項目源代碼:yangyiLTS/微信_jump_game_iOS。
目前現有的iOS逐跳輔助需要macOS環境下的WebDriverAgentRunner。現在介紹的方法是在Windows環境下物理實現的,既不需要macOS,也不需要越獄。
第壹效應
操作環境&;工具
Windows中的Python 3.6
Python枕頭庫
局域網環境
iToools Airplayer
樹莓派或arduino(本文使用樹莓派)
SG90轉向器
杜邦線、紙板
壹塊小海綿
橙子或其他多汁水果(可選)
基本思路是利用iOS自帶的Airplay服務,將遊戲畫面投射到電腦上。使用枕頭庫抓取電腦屏幕,獲得遊戲畫面。分析圖片,計算跳躍距離,乘以時間系數,得到按壓時間。按壓時間發送給樹莓派,樹莓派控制舵機點擊手機屏幕。原則&;步驟
舵機和控制器部分
Raspbian Jessie(OS:rasp bian Jessie)連接局域網,servo_control.py下載到rasp bian Jessie。在舵機擺臂上貼壹根杜邦絲,將舵機固定在紙板上,如圖所示:
拿壹塊小海綿,大概10mm*10mm*5mm,不用太精確。在海綿中間挖壹個小洞。大概是這樣的:
海綿用水浸濕,放在手機屏幕“再來壹次”的位置。在杜邦線的另壹端,插著橘子。要觸發電容屏,需要在屏幕上形成電場。我試著接了幹電池的負極,效果並不理想。最後,我不得不從我的室友那裏拿了壹個橘子。當然也可以壹直握著或者握著電線。)
舵機接樹莓派,電源5v(04號腳,06號腳),舵機控制線接gpio 18(12號腳)。
需要根據實際安裝位置調整轉向器的高低位置(範圍:2.5~12.5)。
伺服向下= 3.8伺服向上= 5
最終效果
窗口部分
下載Airplayer(不安裝,不綁定)
配置Airplayer,並將畫質調整到最高水平。在iPhone上啟動Airplay,然後就可以在電腦上看到iPhone屏幕了。遊戲運行時,需要Airplayer全屏顯示。
安裝枕頭庫,本文使用枕頭庫的ImageGrab截圖,截圖代碼為:
im = ImageGrab.grab((654,0,1264,1080)) im.save('a.png ',' png ')
下載微信_ jump _ auto _ IOs _ win.py我的顯示器分辨率是1920*1080,手機是iPhone7。如果使用不同的設備,需要改變時間系數等參數。
因為Airplay在傳輸的時候會對畫面進行壓縮,所以得到的遊戲畫面會有色差。我修改了原算法的壹些參數來增加顏色容差,並在測試中取得了較好的準確率。
微信_jump_auto_iOS_Win.py計算完跳轉距離後,會調用socket庫向樹莓派發送跳轉時間,其中ip地址需要修改為實際樹莓派的ip地址。
ip_addr = 'rasp_ip '
運行打開遊戲畫面,在Airplayer窗口全屏樹莓派上運行servo_control.py?,監聽9999端口,等待Win的計算結果。Windows運行微信_jump_auto_iOS_Win.py海綿,可以在“重試”位置自動重啟,之後會壹直自動刷題&;其他的
因為是物理點擊屏幕,所以會有壹些操作上的錯誤。操作誤差由時間常數誤差、轉向器動作時間、杜邦線觸點插入海綿的深度等引起。但是目前的算法在壹種情況下會有誤差疊加的問題。
z形路徑誤差累積過程
轉向器的擺角和時間系數沒有絕對值,需要慢慢嘗試。目前使用的時間系數是2.43。
可以用Arduino+pyfirmata組合來控制舵機,成本相對較低,不需要網絡傳輸計算結果。因為我的arduino前幾天給了個女票,所以我還沒有用過arduino的方案。
跳200+次後,這個遊戲的盒子會變得很小(比如題圖),這是普通人類無法企及的。直到研究了外掛,我才知道手工考高分有多難。我們不要刷標記了,不會有朋友的。