Check醬是一個通用網頁內容監控工具,可以監控網頁內容變化,並且傳送異動到微信
微軟Edge | 谷歌Chrome |
---|---|
點以上圖示進入商店頁面或直接在商店搜尋「Check醬」即可
詳細版,近2小時
Docker鏡像安裝指令請參閱後文雲端架設一節
Check醬是方糖氣球出品的網頁內容監控工具,它包含一個Edge/Chrome瀏覽器插件和可以自行架設的雲端。
基於瀏覽器插件,它透過視覺化選擇器理論上可以監控網頁上的任意內容(文字)、除了瀏覽器通知,還可以配合Server醬將異動推送到微信或手機。
Check醬的原理是,透過瀏覽器插件後台開啟網頁進行監測,從而完全模擬使用者的真實行為,可以監控絕大部分複雜的動態網頁,需要登入的各種後台頁面,並且(在絕大多數情況下)自動延續登入態。
除了支援網頁內容(Dom)的監測,也支援HTTP狀態(透過GET監測)、JSON和RSS方式。
配合可以自行架設的雲端,可以將監控任務同步到伺服器,這樣當瀏覽器和電腦關掉以後,監控任務依然可以定時運作。
插件可以獨立使用,只是關掉後定時監測任務不執行。
目前Check醬正在內測,尚未上架Edge商店,只能以手工方式載入
下載插件ZIP套件(Github下載位址,無需註冊),解壓縮為目錄(後文稱為A)。
開啟Edge的插件頁面,開啟「開發者模式」,點選「Load Unpacked」,選擇上邊解壓縮得到的目錄A。
成功載入的話,就可以看到Check醬介面了。如果失敗,通常是因為解壓縮時多了一層目錄導致的,可以試試看重新選擇A目錄的下一層目錄
安裝插件後,開啟要監控的網頁,在網頁上點選右鍵,可以看到「定位監測對象」一項。
點擊後,開始初始化視覺化選擇器。
移動滑鼠可以看到高亮區域,放到要監控的文字上點選滑鼠左鍵。
注意,選擇區域必須包含文本,否則會返回空。有很多文字是印在圖片上的,這種也會返回空。
將轉向到新增頁面。
可以修改名稱、設定監控間隔時間、延遲、最大重試次數。在儲存之前,最好點擊CSS选择器路径
一欄後的测试
按鈕進行測試。
如果提示“檢測內容為空”,表示有問題。再次點擊進行觀察:
如果發現頁面開啟後favicon沒有出來就關了,可以增加「延遲讀取」的秒數;如果開啟後還是回傳空,那麼剛才自動產生的選擇器路徑可能不正確。
可以更換為瀏覽器自動產生的,方法如下:
① 在要偵測的文字上點右鍵,選擇「inspect/審查元素」
② 這時候會自動開啟開發者工具,並自動選取來源碼中元素的對應行。在高亮的行上點選右鍵,選擇「複製/Copy」→ “複製選擇器/Copy selector」
③ 將複製到的剪貼簿的路徑填入「CSS選擇器路徑」一行後,再次點選「測試」按鈕進行測試。
測試通過後,點選「提交」儲存監測點。
在新增和修改監測點時,填入Sendkey即可將訊息推送到Server醬。
登入Server醬官網,進入「Key&API」,點選「複製」按鈕即可。
登入Server醬官網,進入「通道設定」,選擇要推送的通道,並按頁面上的說明進行設定。可以將訊息推送到「PushDeer」和各種群機器人。
如果以上通道無法滿足你的需要,可以選擇「自訂」通道,發送自訂的http請求。此方式可以相容於絕大部分通知介面。
點選監控點清單右上方的向上和向下箭頭可以匯入和匯出全部監控點。
點選監控點清單中的「剪貼簿」,可以將目前監控點的設定匯出到剪貼簿。
導出數據類似:
checkchan://title=Server%E9%85%B1%E5%AE%98%E6%96%B9%E7%BD%91%E7%AB%99%E7%8A%B6%E6%80%81&url=https%3A%2F%2Fsct.ftqq.com&type=get&code=200&rss_field=title&delay=3&retry=10
複製以上字元後,在Check醬瀏覽器插件介面透過Ctrl+V貼上,會自動辨識並跳到「新增監測點」介面。
有些任務只需要在特定的時間段執行,為了節省資源,我們增加了「監控週期限制」功能。例如某動畫每週五上午十點更新,那麼我們可以將「監控週期限制」設定如下:
這樣其他時段就不再啟動監測。對於無法預知事件段的任務,請使用預設的「每分鐘」即可。
注意在「監測週期限制」之上,還有「監控間隔時間」。
如果「監測週期限制」 為每分鐘,而「監控間隔時間」為60分鐘,那麼每分鐘都會嘗試監測,而一旦監測成功一次,那麼下次監測將是60分鐘後。
同時,因為執行監控任務本身也耗費時間,所以「監控間隔時間」為1分鐘時,往往每隔一分鐘(即每兩分鐘)才會執行一次任務。
最新的版本支援了一個Selector擴充語法:由於底層透過document.querySelectorAll
實現,因此會傳回符合的全部元素於一個陣列。當這些元素屬於同一個父節點我們可以用:nth-of-type(1)
或:nth-child(1)
來指定數組中的某一項。
但如果這些元素不屬於同一個父節點,那麼以上方法就會失效。這裡加入了一個selector@n 的語法,讓我們可以從Selector 傳回的陣列中指定某一個元素。如.booklist .item@0
將回傳document.querySelectorAll(.booklist .item)[0]
。
@語法除了使用在DOM selector上,還可以用來指定RSS 監控結果。預設情況下,RSS 將傳回整個Feed的第一篇文章,你可以用過在Feed url 後邊加上@1 ,將其指定為監測第二篇文章(依然是從0開始計數)。
Selector的最下一級回傳一個元素,但有時候我們需要監測這個元素的某個屬性值。例如監測一個連結的href
。為了解決這個問題,我們擴展了selector 語法,讓使用者可以透過element%attribute 的方式來取得元素的某個屬性值。如: article#post-180 > div > div > p > a%href
。當%
和@
同時使用時, %
應緊接元素後,如: article#post-180 > div > div > p > a%href@0
。
為了更清楚的了解定時任務的執行情況,你可以開啟「開發者工具」(F12)在Console
標籤頁中可以看到任務產生的日誌。
錯誤訊息也會在這裡以紅色高亮的行顯示,遇到Bug時提供日誌錯誤截圖可以幫助我們更快的定位到問題。
上架商店後,可以自動升級,在此之前需要手動升級。升級方式為下載zip套件解壓縮後覆寫原有文件,再在瀏覽器的插件管理面板中「reload」一下。
新版鏡像已經將雲端和遠端桌面版本集成,只需一次安裝都可以使用。
️ 特別說明:因為雲端的網路、環境都和本機不同,所以並不保證本機能運作的任務都能在雲端運作成功,一些複雜網頁和有較多動態效果的網頁可能會失敗。
架設自架版雲端需要技術基礎,非技術用戶建議購買我們的官方版雲端(將在內測完成後發布)
需要docker環境。如果你沒有雲端伺服器,可以看看騰訊雲30~50元首單的特價伺服器。
點此進入工具介面
登入伺服器(假設其IP為IPB),在要安裝的目錄下新建目錄data
,並使其可寫入:
mkdir data && chmod 0755 data
新建一個docker-compose.yml
文件,將下邊的內容依提示調整後貼上儲存:
version : ' 3 '
services :
chrome :
image : easychen/checkchan:latest
volumes :
- " ./data:/checkchan/data "
environment :
- " CKC_PASSWD=<这里是远程桌面的密码,写一个你自己想的> "
- " VDEBUG=OFF "
- " VNC=ON "
# - "WIN_WIDTH=414"
# - "WIN_HEIGHT=896"
# - "XVFB_WHD=500x896x16"
- " API_KEY=<这里是云端的API KEY,写一个你自己想的> "
- " ERROR_IMAGE=NORMAL " # NONE,NORMAL,FULL
# - "SNAP_URL_BASE=<开启截图在这里写服务器地址(结尾不用加/),不开留空>..."
# - "SNAP_FULL=1"
- " TZ=Asia/Chongqing "
# - "WEBHOOK_URL=http://..." # 云端 Webhook地址,不需要则不用设置
# - "WEBHOOK_FORMAT=json" # 云端 Webhook POST 编码,默认是 Form
ports :
- " 5900:5900 "
- " 8080:8080 "
- " 8088:80 "
將其中<这里是远程桌面的密码,写一个你自己想的>
和<这里是云端的API KEY,写一个你自己想的>
換成別人不知道的密碼(下文稱密碼C和D)。注意不要包含$
字符,替換完後也不再有兩邊的尖括號<>
。
如果不希望啟動遠端桌面,請將VNC=ON
改為VNC=OFF
。
保證Docker使用者對此目錄有寫入權限,並在同一目錄下執行以下命令:
docker-compose up -d
如提示docker服務未安裝/找不到/未啟動,可在docker-compose 前加sudo 再試
等待初始化完成後,請造訪http://$BBB:8080
( 將$BBB替換為IP B),看到NoVNC Web介面說明容器已啟動。
服務所在的連接埠為:
你也可以將docker-compose
中的參數傳給docker 來啟動:
docker run -d -p 8088:80 -p 8080:8080 -p 5900:5900 -v ${PWD} /data:/checkchan/data -e API_KEY=123 -e VDEBUG=OFF -e VNC=ON -e SNAP_URL_BASE=http://localhost:8088 -e CKC_PASSWD=123 -e TZ=Asia/Chongqing easychen/checkchan:latest
請將上述指令中的123替換為你想要設定的密碼、將SNAP_URL_BASE
換成伺服器的外網IP(如果想透過手機查看截圖)。
只有支援Docker的群暉型號才能安裝Check醬,除了可以直接透過命令列安裝,也可以參考GUI安裝教學。
Volume
和環境變數可以參考以上的docker/compose設定。
Check醬雲端鏡像更新後,你可以將正在運行的雲端服務升級到最新版。方式如下:
首先停現有的容器:
透過docker-compose 啟動的運作:
docker-compose down
透過docker 直接啟動的運行docker ps
查詢到容器id,透過docker stop 容器id
停止。
然後運行docker pull 拉取最新版:
docker pull easychen/checkchan:latest
完成後再啟動服務即可。
點選插件右上方選單中的云端服务
。
在服务器地址
一欄輸入http://$BBB:8088
(將$BBB替換為IP B,這裡的URL不用加key參數);在API_KEY
一欄輸入密碼C。
點選儲存,連線成功後,配置完成。
設定雲端以後會回到列表頁,每行最右邊會多出來一個「電腦」圖標,點擊後會變成「雲端」圖標,任務將改為在雲端執行。
點選右上角「雲端+箭頭」的按鈕,可以主動同步任務到雲端。
Check醬也會每十分鐘自動同步一次。
Check醬自架雲端支援將網頁(dom)類型任務截圖,可以透過給鏡像傳遞環境變數來開啟:
可參考上文的docker-compser.yml
。新增環境變數後重啟服務即可。
注意
Check醬自架雲端內建了動態頁面RSS上行用的介面:
http://$ip:$port/rss/upload?key=$api_key
http://$ip:$port/image/rss.xml?key=$api_key
Check醬自架雲端內建了Cookie同步用的介面:
http://$ip:$port/cookie/sync?key=$api_key
Check醬雲端任務的原理是將cookie同步到雲端,然後用瀏覽器查看,本質和使用者操作一樣。但因為出口IP可能是機房和資料中心,所以頻率太高也有被風控的可能。如果將雲端部署在家裡,則和在家用電腦存取效果一樣。
通常來講,出現本地任務可以執行,雲端不能執行的問題,是因為兩者網路環境、瀏覽器軟體有差異,例如:
由於伺服器記憶體通常沒大家電腦大,所以很多在本地執行OK的任務同步到雲端後會因為「延遲讀取」秒數太小中途停止而失敗。如果遇到類似情況,請嘗試增加「延遲讀取」。
如果這樣也不行,往往是因為雲端無頭瀏覽器顯示網頁和本地存在差異導致,我們為這種情況生成了最近一次失敗的任務的截圖,可以在「雲端服務」選單下看到。
點擊“失敗截圖”按鈕即可看到。注意:需要只用最新的鏡像,並傳遞ERROR_IMAGE=NORMAL
環境變數。如果希望截取完整網頁的圖片,可以傳遞ERROR_IMAGE=FULL
。
如果任務失敗又沒有截圖,表示該任務不是因為CSS選擇器未命中而失敗,嘗試增加「延遲讀取」可能解決。
這個頁面也能看到雲端任務日誌,這裡的日誌不包含手動點選「監測」按鈕觸發的任務。如果沒有可以執行的任務(任務是定時觸發的),那麼日誌也可能為空。
除了自架雲端,我們還在鏡像中整合了遠端桌面模式。它讓你可以透過VNC連接伺服器,像使用本機瀏覽器一樣使用。
遠端桌面版本之前為一個獨立鏡像,現在已經整合到easychen/checkchan 中,因此你可以直接使用。
服務啟動後,可透過VNC 用戶端軟體進行連線使用。
在遠端桌面中,可以直接連接同一個容器內的雲端,伺服器位址填入http://localhost
,API KEY按上邊YML 設定的輸入即可。
可以新增環境變量,修改螢幕寬高限制,使其在手機上更好用:
- WIN_WIDTH=414
- WIN_HEIGHT=896
- XVFB_WHD=500x896x16
一個加到docker 命令中的範例:
docker run -d -p 5900:5900 -v ${PWD} /data:/checkchan/data -e CKC_PASSWD=123 -e WIN_WIDTH=414 -e WIN_HEIGHT=896 -e XVFB_WHD=500x896x16 easychen/checkchan:latest
容器日常消耗在300M~500M。記憶體較大的運作環境會比較穩定,如果遇到問題可嘗試加大記憶體。
使用同一個鏡像中整合的雲端可以對雲端任務進行視覺化調試,將YML 檔案中的VDEBUG
設定為ON
,再重新啟動容器即可看到雲端監測網頁的詳細流程。
environment :
- " CKC_PASSWD=123 "
- " VDEBUG=ON "