前言
最近公司各種系統(tǒng)有一些小改動,閑置幾分鐘就得重新登錄,然后每次登錄得:打開手機→查看驗證碼短信→在電腦上手動輸入,實在是太影響效率(心情)。為了更好地搬磚(摸魚),利用一些小工具實現(xiàn)了手機驗證碼轉(zhuǎn)發(fā)并自動輸入。
一、整體流程
服務(wù)器設(shè)定weebhook——手機驗證碼自動轉(zhuǎn)發(fā)到服務(wù)器——電腦從服務(wù)器獲取驗證碼——自動輸入到當前窗口
二、實現(xiàn)步驟
1.服務(wù)器設(shè)置
我用的是虛擬機,Linux系統(tǒng)(CetnOS7.9),安裝寶塔面板、httpd服務(wù)等操作就不一一展示了,百度都有。安裝好寶塔面板,寶塔軟件商店里有一個webhook插件,下載好插件,添加webhook:
編輯腳本(這里把驗證碼存到index頁面,linux系統(tǒng)要記得裝httpd):
#!/bin/bash
echo ""
#輸出當前時間
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
if [ "$1" = "" ]; then
echo "code is empty"
exit 1
else
FILENAME="/var/www/html/index.html"
echo "$1" > "$FILENAME"
echo "$1 code saved successfully as $FILENAME"
exit 1
fi
記住webhook地址:
要注意它給的示例鏈接里面包含空格和中文字符,復制下來后自己改一下,可以先測試,看看日志情況
到此接收驗證碼的webhook設(shè)置好了,按原計劃,電腦端獲取驗證碼也是使用webhook的,但是這個插件非常坑爹,訪問webhook后,無論是否設(shè)置返回值永遠是一個狀態(tài)碼,類似這樣:
也就是說,無論webhook腳本怎么寫,電腦收到的永遠是“{“code”: 1}”這么一串字符,上寶塔論壇查了下,好多年前就有人提出這個問題,官方也一直沒解決。好吧,那就換一條路,我把驗證碼存到服務(wù)器http首頁(/var/www/html/index.html)這個文件,電腦訪問該網(wǎng)址,就能獲得驗證碼了。當然用不用首頁無所謂,要用其它的html自己改一下就好。
2.手機驗證碼自動轉(zhuǎn)發(fā)
說到手機短信轉(zhuǎn)發(fā)當然是用SmsForwarder(短信轉(zhuǎn)發(fā)器)了,該軟件github項目地址:https://github.com/pppscn/SmsForwarder
軟件安裝、設(shè)置等操作就不詳細說了,官方文檔都有,這里直接說關(guān)鍵的:虛擬機網(wǎng)絡(luò)做端口映射、建立轉(zhuǎn)發(fā)通道、編輯轉(zhuǎn)發(fā)規(guī)則
2.1端口映射
(如果你服務(wù)器有公網(wǎng)地址的話就不需要這一步了。)
這里我的服務(wù)器是建立在虛擬機上的,相應(yīng)的上文生成的webhook地址其實是個192.168.3.1這樣開頭的私網(wǎng)地址,僅限于本地局域網(wǎng)訪問,但是手機軟件想使用webhook需要的是一個公網(wǎng)的地址,我這里用端口轉(zhuǎn)發(fā)的方式解決。我電腦連接的是路由器,登上路由器設(shè)置端口轉(zhuǎn)發(fā),將內(nèi)部端口(服務(wù)器寶塔面板端口)轉(zhuǎn)發(fā)到外部端口,比如我服務(wù)器寶塔面板地址為192.168.1.2:12345,路由器公網(wǎng)地址為12.34.56.78,設(shè)置好端口轉(zhuǎn)發(fā)后,在外網(wǎng)環(huán)境下使用就把webhook地址里面的192.168.1.2:12345換成12.34.56.78:12345即可。(外部端口可以隨意設(shè)置,最好不要跟內(nèi)部端口一致。如果你無法登路由器或者路由器不支持該功能的話,也可以使用DDNS的方式,要么就搞一臺云服務(wù)器)
2.2建立轉(zhuǎn)發(fā)通道
添加發(fā)送通道,使用webhook,請求方式用GET就行,webhook server這里換成你自己的webhook地址(注意要使用外網(wǎng)能訪問的地址),param變量可以不寫(寫了也沒事,下面消息模板里可以再寫一次param覆蓋掉)
2.3建立轉(zhuǎn)發(fā)規(guī)則
1.選擇剛才建立的轉(zhuǎn)發(fā)通道;
2.根據(jù)個人情況,選擇卡槽;
3.匹配字段這里,由于我不同的系統(tǒng)登錄短信的內(nèi)容不一樣,有的叫驗證碼,有的叫動態(tài)密碼啥的,這里選擇正則匹配,正則表達式可以后續(xù)接著完善;
4.自定義模板得開,因為寶塔的webhook傳入?yún)?shù)不支持中文字符,如果不開自定義模板,我們使用的param=[content],這里的[content]其實是軟件定義的模板,類似這樣:(來信手機號)12345678910【通道名稱】(短信內(nèi)容)(時間)2024-03-01 11:07:29(手機型號)Honor 10,當這么一串內(nèi)容傳入webhook里,會導致webhook訪問失敗。
后期查詢軟件wiki文檔,發(fā)現(xiàn)可以把[content]改成[org_content]來解決,要么我們就直接自定義模板,只選擇{短信內(nèi)容}就行。
5.最后,添加正則替換內(nèi)容,由于短信內(nèi)容含有中文字符,我們就在這里把內(nèi)容給處理一下,只上傳驗證碼,把其它的內(nèi)容刪掉。驗證碼一般是6位數(shù)字,直接使用^(.)(\d{6}).$===$2就好。
3.電腦端獲取驗證碼
直接訪問服務(wù)器網(wǎng)站就能獲取到驗證碼了,由于我是將驗證碼放到服務(wù)器網(wǎng)站首頁,先到Linux里面調(diào)整一下http的端口。
vi /etc/httpd/conf/httpd.conf
將Listen 80改成任意端口(例如33333)
此時訪問192.168.1.2:33333就能看到如下內(nèi)容:
4.自動輸入驗證碼
電腦獲取到手機驗證碼以后,總不能每次都手動去復制粘貼吧,用一個小腳本就能解決:
@echo off
setlocal
curl -s 192.168.1.2:33333 | clip
endlocal
保存為bat文件運行即可,作用是獲取驗證碼并將驗證碼復制到剪貼板,此時Ctrl+V就可以輸入驗證碼啦。
雖然可以不用看手機了,但是每次登錄都得運行一次腳本,還是覺得麻煩。
可以借助一些快捷工具軟件,Mac有Alfred,Windows有utools或者quicker。我用的quicker,這玩意兒雖然沒有utools好看,但是容易上手。
使用quicker創(chuàng)建一個組合動作,只需要添加兩個動作:
4.1第一個動作:運行腳本
動作內(nèi)容多種方式大家自行選擇
(1)運行bat文件:
(2)quicker支持運行bat命令,直接運行命令:
(3)quicker還可以將輸出保存到變量里,所以我們可以不用clip命令了,使用一個內(nèi)置變量就行,腳本類型這里可以選擇隱藏窗口,就不用看到一閃而過的CMD黑框了:
不建議使用這個運行后延遲,多次測試后發(fā)現(xiàn)運行后延遲會導致一些莫名其妙的BUG,延遲建議加在后面的動作里。
4.2第二個動作,自動輸入
如果上面使用的是clip剪貼板的方式,這里的變量就選擇[clip_text],我使用的是內(nèi)置變量,所以選擇aaa。
需要注意的是延時選項,如果不加延時的話,可能導致腳本執(zhí)行太快,前一個動作還沒完就執(zhí)行了粘貼,結(jié)果就是粘貼了之前保存到剪貼板的錯誤內(nèi)容或空內(nèi)容。
三、運行效果
驗證碼登錄示范文章來源:http://www.zghlxwxcb.cn/news/detail-843903.html
其它
可以修改正則表達式或者添加多條轉(zhuǎn)發(fā)規(guī)則來匹配不通的短信內(nèi)容,文中的正則已經(jīng)能匹配大部分平臺的驗證碼短信,如果各位登錄的網(wǎng)站驗證碼短信內(nèi)容不同,可以自行完善規(guī)則。
關(guān)于quicker腳本,可以單獨為此動作設(shè)個快捷鍵。
寫在最后,其實大可不用這破寶塔插件,使用java或者python啟個web服務(wù)器就可以寫webhook了,比這簡單又好用多了哈哈哈文章來源地址http://www.zghlxwxcb.cn/news/detail-843903.html
到了這里,關(guān)于【利用寶塔WebHook插件、SmsForwarder(短信轉(zhuǎn)發(fā)器)、quicker實現(xiàn)電腦端自動輸入手機短信驗證碼登錄】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!