因為工作的原因,接觸了按鍵精靈。這令我回想起了大學時玩網遊,有人買了外掛掛機打怪,明白了以前的外掛製作的方法。
按鍵精靈是對系統腳本語言的封裝,讓很多不懂編程的人,通過閱讀漢字就能開發一些輔助腳本。除了遊戲,還能做自動化辦公。簡而言之,腳本能替代人力的滑鼠和鍵盤操作。按鍵精靈官方為了顯得高大上,引進了一個國外概念,RPA(Robotic Process Automation),機器人流程自動化。
我在網上了解了一些相關內容,Windows有vbs,蘋果有AppleScript,Linux上Bash腳本,可以做同樣的事。按鍵精靈對於目前主流的平臺都有版本,Windows(vbs)、Mac(AppleScript)、Android、IOS。對於自動化來說,在灰色地帶是有很大市場的。比如網購裡的搶購,微信、QQ裡自動往群發營銷消息。大多數是減輕人的重複煩勞的體力活。
Web開發裡,有一個很出名的插件,油猴,英文名TamperMonkey。通過這個插件可以寫一些自定義腳本,開發方式是使用JavaScript調用瀏覽器的BOM和DOM。可以引入現有的類庫,比如jQuery。有公開的腳本倉庫,不少常用的網站能找到增強腳本。
比如以前很火的百度網盤下載工具,安裝之後,能在網盤資源原有的按鈕上增加一些額外的按鈕,提供腳本分析出的下載連結。使用IDM工具下載,不限速,與之相對的是,如果不開百度網盤VIP,它的客戶端會給你很低的速率,通常要下幾天。
油猴上有很多好玩的東西,比如有的博客網站會堆砌很多推薦、廣告,用一個腳本就能讓界面清爽。或者網站的背景色沒有藝術感,可以自己來調整。油猴的工作方式說到底和按鍵精靈是類似的,一個是調用瀏覽器接口,一個是作業系統提供的接口。
很多桌面應用程式是提供給人操作的,比如Office、微信。這些應用是沒有什麼開放接口的,如何操作呢?按鍵精靈上流行一款很好用的插件,大漠插件。通過進程注入的方式,讓你寫的工具能獲取到某個應用的數據信息。比如尺寸、滑鼠的形狀、滑鼠的位置。
按鍵精靈能模擬人的滑鼠和鍵盤操作,如果識別到固定的特徵就執行相應的操作,進而代替人。打個比方,網遊裡的角色有紅條和藍條,分別代表生命和魔法值。當角色掉血過多,紅條右邊會變成其他的顏色。只要定時檢測這個顏色不是紅色,就可以判斷是否需要加血。遊戲裡通常有快捷鍵,腳本自動觸發鍵盤快捷鍵能自動加血。掛機打怪類似,角色頭像的顏色通常和怪物腦袋顏色不一樣,可以通過顏色拿到對應的坐標,模擬滑鼠點擊操作,實現自動打怪。
除了找顏色,還有找圖,比對應用裡是否出現特定的圖像。更厲害的是文字識別,識別應用裡出現的文字,這個更高效。能拿來處理複雜的邏輯。
從某種角度來說,按鍵精靈屬於軟體中的hacking範疇。不少人靠它賺錢,做一些摸稜兩可的事。手機上自動搶紅包,自動搶購,自動回復都有它的身影。它並不需要去破解應用的協議,了解應用app的底層開發技術。所見即所得,通過分析應用的操作,界面長啥樣就能做出不錯的工具。從時間成本上來說,它需要的時間比去破解一款應用短很多,使用的腳本語言方便上手,這成了不少羊毛黨的利器。
目前很多app採用了加殼混淆技術,流量使用PIN證書加密,要破解實屬不易。但是按鍵精靈的手法卻是模擬一個正常用戶的操作,讓開發者防止這一手法的難度加大。對開發者而言,需要識別用戶操作的頻率、行為,判斷當前操作的主體是人還是腳本。從我所了解的情況,目前國內大多數應用並沒有成熟的框架來應對這種操作。
上手極快的腳本語言,有興趣就學一下吧,一兩天就掌握。