Check醬Check醬是一個通用網頁內容監控工具,可以監測網頁內容變化,並發送異動到微信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選擇器路徑」一行後,再次點擊「測試」按鈕進行測試。測試通過後,點擊「提交」保存監測點。通過Server醬推送到微信和其他設備在添加和修改監測點時,填入Sendkey即可將消息推送到Server醬。如何獲得 SendKey登錄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 擴展語法通過@指定數組元素最新的版本支持瞭一個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中封裝瞭Chrome瀏覽器,可以通過VNC和Web界面像在電腦上一樣使用。⚠️ 特別說明:因為雲端的網絡、環境都和本機不同,所以並不保證本機能運行的任務都能在雲端運行成功,一些復雜網頁和有較多動態效果的網頁可能失敗。安裝架設自架版雲端需要技術基礎,非技術用戶建議購買我們的官方版雲端(將在內測完成後發佈)需要docker環境。如果你沒有雲服務器,可以看看騰訊雲30~50元首單的特價服務器。一鍵安裝命令點此進入工具界面通過 Docker-compose 啟動登錄服務器(假設其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界面說明容器已經啟動。服務所在的端口為:雲端:8088遠程桌面(VNC): 5900遠程桌面的Web界面(NoVNC): 8080通過 Docker 啟動你也可以將 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)類型任務進行截圖,可以通過給鏡像傳遞環境變量來開啟:SNAP_URL_BASE=<開啟截圖在這裡寫服務器地址,不開留空> #如 http://ip.com/SNAP_FULL=1 #完整網頁長圖可參考上文的docker-compser.yml。添加環境變量後重啟服務即可。註意截圖功能需要較大的內存,部分服務器可能會報錯雲端網絡和本地不同,可能會超時失敗,請適當增加延時,並將取消完整截圖RSS上行接口Check醬自架雲端內置瞭動態頁面RSS上行用的接口:RSS上行地址為: http://$ip:$port/rss/upload?key=$api_keyRSS Feed地址為:http://$ip:$port/image/rss.xml?key=$api_key多瀏覽器Cookie同步接口Check醬自架雲端內置瞭Cookie同步用的接口:Cookie同步URL為: http://$ip:$port/cookie/sync?key=$api_key配對密碼: 自行設定,同步Cookie的兩個瀏覽器中必須一致同步方向: 一個發送一個接收,一般電腦上的發送、服務器上遠程桌面裡的接收同步頻率:發送或者接收間隔時間雲端任務的安全性Check醬雲端任務的原理是將cookie同步到雲端,然後用瀏覽器查看,本質和用戶操作一樣。但因為出口IP可能是機房和數據中心,頻次太高也有被風控的可能。如果將雲端部署在傢裡,則和在傢用電腦訪問效果一樣。雲端錯誤排查通常來講,出現本地任務可以執行,雲端不能執行的問題,是因為兩者網絡環境、瀏覽器軟件存在差異,比如:頁面結構每次都會變動:比如一些網站的首頁,建議進入分類列表頁面選擇監控點電腦網絡和雲端網絡不同:在瀏覽器中可以訪問的內容,在數據中心可能訪問不到CDN更新延遲:電腦和雲端CDN節點刷新未完成,會造成一邊可用一邊不可用,等待更新完成後再監控瀏覽器插件改變瞭網頁結構:比如本地通過 AdBlock 過濾瞭廣告,但雲端沒有,造成結構不同,監測失敗由於服務器內存通常沒大傢電腦大,所以很多在本地執行OK的任務同步到雲端後會因為「延遲讀取」秒數太小中途停止而失敗。如果遇到類似情況,請嘗試增加「延遲讀取」。如果這樣也不行,往往是因為雲端無頭瀏覽器顯示網頁和本地存在差異導致,我們為這種情況生成瞭最近一次失敗的任務的截圖,可以在「雲端服務」菜單下看到。點擊「失敗截圖」按鈕即可看到。註意:需要隻用最新的鏡像,並傳遞ERROR_IMAGE=NORMAL 環境變量。如果希望截取完整網頁的圖片,可以傳遞ERROR_IMAGE=FULL。如果任務失敗又沒有截圖,說明該任務不是因為CSS選擇器未命中而失敗,嘗試增加「延遲讀取」可能解決。這個頁面也能看到雲端任務日志,這裡的日志不包含手動點擊「監測」按鈕觸發的任務。如果沒有可以執行的任務(任務是定時觸發的),那麼日志亦可能為空。遠程桌面版的使用除瞭自架雲端,我們還在鏡像中集成瞭遠程桌面模式。它讓你可以通過VNC連接服務器,像使用本地瀏覽器一樣使用。遠程桌面版本之前為一個獨立鏡像,現在已經整合到 easychen/checkchan 中,因此你可以直接使用。通過 Web 界面使用Web界面: http:///$BBB:8080密碼: 123 (可自行修改命令調整)通過 VNC 連接使用服務啟動後,可以通過 VNC 客戶端軟件進行連接使用。連接地址: 架設服務的IP:5900密碼: 123 (可自行修改命令調整)連接雲端在遠程桌面中,可以直接連接同一個容器內的雲端,服務器地址填 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"
本文出自快速备案,转载时请注明出处及相应链接。
本文永久链接: https://www.175ku.com/41851.html