2014年6月26日 星期四

讓您的瀏覽器也能自動工作

您可能聽過所謂的Office巨集,或者您早已經在使用它來處理日常的重複性編輯工作了!Office巨集可以讓我們透過錄製的方式,將文件的手動操作變成為可修改並重複利用的巨集程式,並且在特定的時間或狀態下可再次執行產生需要的結果,這類附加在MS Office的程式碼我們稱為VBA (Visual Basic for Applications),因此Office巨集也可以稱為VBA巨集,它是我們在MS Office文件處理自動化上的利器。https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5y130720tAMZxAqwOiptTDjI_5PX5-J0tKznYHbb57nOexrf-QJBEBHtk__IjuhvtgnDi4cB4pu5WV2tLvz6hpjVVb6n91k61TQUq-omWzIN1JJl_eHN_iI9CK2NbbyZaiPmZrF6Yrhvi/s1600/imacro.jpg
然而隨著網際網路以及手持設備的流行,大量的程式以及服務被移往雲端,也包含微軟的Office,這些以往僅能在PC端執行的程式,現在我們也可以透過瀏覽器在不同的設備上執行,記得嗎?以前,這些文件編輯作業可是需要找到一台裝有Office的PC,並且能夠讀取到要修改的文件才能打開並開始文件編輯的工作,而現在,只要一台可上網的隨身設備,我們就能隨時隨地、即時處理相關的文件。
因此,「瀏覽器」扮演的角色在我們的生活中顯得愈來愈重要,它無所不在,在任何有需要連上網路的場合我們都會想到它,那麼,既然Office有所謂巨集功能可以讓我們減少重複性的工作,那更常使用的瀏覽器為什麼會沒有?
實際上是有的,iMacros是世界上第一套以瀏覽器為主的巨集程式,我們可以利用錄製的方式,產生一組巨集讓它來重複執行日常的上網動作,也可以自行修改或編寫,創造開發出不同的網路應用。

iMacros可以作什麼?:

對於一般的使用者來說,iMacros可以協助我們完成一些重複的工作,例如表單的填寫、抓圖、定期檢查網站狀態、自動上傳或下傳某些檔案、或者按時張貼一些文章或回覆等等,但對於進階的應用程式開發者來說,這些基本功能是遠遠不夠的,我們會希望作到:
  • 修改並補強iMacros所產生的巨集程式
  • 可以擷取一些難度較高的網站上的資料。(例如大量採用AJAXFlash等技術的網站)
  • 不需開啟瀏覽器,直接利用外部程式(如Shell或PHP.net)來自動啟動iMacros巨集程式執行。
  • 以iMacros巨集模擬使用者的上網行為,自動在網路上擷取所需要的資訊。(網路機器人)
  由於iMacros可以達到自動化控制瀏覽器行為的特性,因此它可以協助程式開發人員更方便的開發出各式各樣不同目的的網路機器人或網路蜘蛛,以便在網路上自動化的執行任務、或者搜集資訊等等,下面我將一步步介紹iMacros的安裝及操作,以及示範如何錄製巨集,未來我會在進階篇介紹如何態動的產生巨集,讓iMacros擁有能夠因應不同網路環境而有不同的自動化動作與因應策略。

iMacros各版本比較:

IMacros是由iOpus公司所開發製作,共有三種版本:免費版Free、標準版Standard、企業版Enterprise,其中它所提供的免費版是以外掛的方式安裝到瀏覽器中作為附加功能的一部份,它支援目前市面上大部份的瀏覽器:IEChrome和Firefox,在下面的例子中我以免費版本搭配Firefox瀏覽器來作示範介紹,而其它版本的瀏覽器除了外掛的安裝方式不同外,在iMacros的使用操作上都是大同小異。
iMacros功能
免費版
標準版
企業版

Free
Standard
Enterprise

Playback




Manual iMacro Playback
check
check
check

Playback Unencrypted Macros
check
check
check

Playback Encrypted Macros


check

iMacros Playback via API


check

Create Custom Passwords for Encrypted Macros


check

Scripting / Recording




Macro Recording
check
check
check

Macro Editing (Unencrypted Macros)
check
check
check

Macro Editing (Encrypted Macros)


check

Internet Explorer: Automate via API


check

Firefox: Automate via API


check

Chrome: Automate via API


check

Password Encryption
check
check
check

Popup Manager
check
check
check

Support Flash, Silverlight, Java, Flex

check
check

Image Search / Recognition

check
check

DirectScreen

check
check

Automation & Testing




Website Response Time Measurement
check
check
check

Use of Variables
check
check
check

Command Line Interface

check
check

Task Scheduling

check
check

Batch File Support

check
check

Runs in Background (Tray)

check
check

Scripting Interface (API)


check

Windows Scripting Host Support (API)


check

MS Office, Excel VBA Scripting


check

MS .NET Support (VB.NET, C#, J#, ASP.NET) (API)


check

API Supports All Scripting/Programming Languages


check

Data Input




Use CSV as input to iMacros
check
check
check

Read data from text files as input to iMacros
check
check
check

Read data from databases (API)


check

Read / Write XML files (API)


check

Web Page Data Extraction




Extract Webpage Data
check
check
check

Save data as CSV file
check
check
check

Use of iMacros API


check

Service / Support




Expert Technical Support

check
check


如果您只需要單純的錄製巨集、簡單的修改、再進行播放以重複進行錄製的動作,那麼免費版本便已經很足夠了,付費版本最主要的差異在於:支援了多項API巨集加密、自動化執行以及第三方程式支援(ASP.net、VBA巨集)等,這些付費功能可以作到相當強大且高度自動化的應用程式,但在我會在往後的知識文件中,另外介紹另一種方式,讓iMacros透過線上動態產生巨集檔的方式,讓免費版本也能擁有類似的自動化以及與外部程式串連的功能。

下載與安裝iMacros:


首先,我們到http://imacros.net/download頁面,找到最下方的iMacros Free Versions區段,再下載適合您瀏覽器版本的iMacros外掛;在這裏,因為我將以Firefox作示範,所以我選擇iMacros for Firefox的外掛。(如左側)


    安裝之後,您會發現多出一個iMacros按鈕,按了它之後便會出現iMacros panel:




開始錄製巨集:

    在iMacros的面板上,選擇第二個TAB「記錄」,您會發現有好幾個按鈕,當您按下最上方的「記錄」按鈕便會開始錄製;我打算錄製的工作是:進入Gmail,將最新的一封郵件(第一封)打開,然後將整個網頁另存到硬碟上。
    首先,我們按下錄製鍵。
    此時,會出現小視窗詢問您要不要關閉所有其它的分頁,若您選擇是,則會自動加入關閉所有分頁的程式碼到錄製的巨集開頭,當然它也會自動關閉目前所有的分頁;iMacros會如此詢問的原因是目前的瀏覽器多會自動開啟之前結束時的所有頁面,因此,為了避免錄製的巨集在執行時會一併打開太多的網頁,一開始便關閉其它不需要的頁面是不錯的選擇,您在此可以視需要選擇是或否,差別只在於巨集的開頭是否會多出一行關閉所有頁面的程式碼。
我先進入了Gmail信箱

開啟最上方的email

再按右鍵選擇另存新檔儲存在D:\temp下。
在錄製過程中,iMacros自動記錄了每次的點擊與鍵盤輸入、URL的變動、表單的項目、按下的按鍵以及儲存的畫面;最後我們按下「停止」鍵,結束整個錄製過程。
「記錄」按鈕下方的「儲存」按鈕可將目前的巨集儲存在本機電腦,方便我們往後叫用;在此我們將剛剛錄製的巨集取名為LastGmailSave
我們來試run一下剛剛所錄製的巨集,看看能否重複執行剛剛的動作;我們點擊兩下剛剛儲存的巨集LastGmailSave,便會發現瀏覽器開始自動重複剛剛的步驟了。
但意外的是,iMacros進入到Gmail後便停止了,並沒有開啟第一封email的內容,因此,我們打開LastGmailSave的巨集內容,看看可否找出失敗原因:





我們注意到TAG POS=2 TYPE=B ATTR=TXT:iOS<SP>8<SP>beta<SP>2<SP>is<SP>now<SP>available.這行,看其內容大致就可猜測到iMacros是抓取email的主旨元件而非第一封email的位置,因為第一封郵件的內容隨時都可能不同,因此,我們需要修改iMacros的錄製行為讓它改用位置的方式來判斷,才能正確的抓取第一封email。我們點選面板上的Record options按鈕,看一下設定錄製時的物件參考方式:
  1. ”Select the best record mode automatically”:是指由程式自動選擇最合適的錄製方式,不過,看來在錄製類似Gmail有動態內容的網頁時它無法正確判斷。
  2. ”Experimental event recording  mode”:這是最近才加入的新錄製功能,它以偵測事件方式來錄製,可以輔助以往使用物件標簽偵測的肓點,例如以下的事件:
    Drag & Drop(拖拉)、Sliders(捲軸)、Tricky date control日曆工具框、Ajax drop&down boxes(Ajax式的拖曳盒)
  3. “Conventional recording mode”:以網頁上的物件標簽來判斷
  4. “Use X/Y position”:使用網頁X/Y軸相對的網置來判斷,此方式對於內容經常會變  動的網頁相當合適。
我們選擇最後一項“Use X/Y position”之後再錄製一次,這次便可成功的播放剛剛錄製的動作了!當您發現所錄製的巨集無法順利的重複執行時,其實很多時候都與滑鼠的點選位置有關,因為很多的網頁內容是動態的,經常在下一個時刻網頁內容就已經變動了,如果我們單純的只使用X/Y軸位置或者抓取固定某個網頁元件的方法來操控網頁動作,往往過了一段時間便錄製的巨集便會失效無法執行了,因此,我們必須要針對不同的網頁找到合適的錄製方法。

瞭解iMacros指令:

我們在錄製好的巨集上按下右鍵,透過編輯功能會發現它有各式各樣的指令,且這些指令可能會隨著iMacros的版本或瀏覽器不同而有所改變,下方我簡要介紹幾個基本的指令,其它詳細的指令列表及更清楚的說明可參考這裏:http://wiki.imacros.net/Main_Page
我們以下列的巨集作為範例來說明:






01~03行是注釋,只要是由 符號開頭的文字,這一整行iMacros都會認定為注釋而不予執行。
04行是讓iMacros等待240秒的時間,讓網頁可以完整的被載入。
05行是讓iMacros忽略任何的錯誤,因此在程式在執行過程中不會因發生錯誤而停下來;如果您設定為NO,那麼iMacros在碰到錯誤時,會彈出一個視窗,直到您關閉此視窗後,程式才會繼續執行;這個功能多用在程式開發階段的除錯使用。
06行,當你的巨集需要從網站匯入資料時,iMacros會將資料顯示在一個彈出視窗中,方便您檢視比對。
07行,如果你的巨集程式不需要下載圖片檔案,那麼可以在此設定,以減少網頁下載的時間,還可以節省頻寬。
08行,此指令是用來清除cookie,清除cookie可以讓執行環境更單純,也可避免cookie的內容被iMacros程式所使用;但如果你希望讓巨集程式使用目前的cookie來登入各網站,那麼就要小心避免清除了cookie內容。
09行,目前的瀏覽器都有支援tab功能,讓我們在同一個瀏覽器中就可以開啟多個網站並利用tab來切換,而此行是告訴iMacros程式使用第一個tab的頁面。
10行,告訴iMacros要關閉除了第一個tab的其它頁面。   






讓iMacros自動執行:

    當我們錄製好了巨集,並且在點擊它們後也都可以正常的執行之後,那麼接下來,我們會碰到一個問題:難道每次都要手動開啟瀏覽器,再click這些巨集嗎?要怎麼讓這些巨集自己自動執行呢?    可以的,透過DOS command和windows 7系統工具中的工作排程器,我們就可以將這些iMacros巨集在指定的時間自動執行。

    第一步:加入書籤

        首先,我們將剛剛建立的巨集,在它的上方按右鍵,選擇添加到書籤。
您會看到有兩種書籤型式可選擇,如果您是用FireFox或IE用第一種就可以了,如果是Chrome,就依其建議選擇第二種;    其實待會兒需要用到的是紅圈的部份,我們將URL中的值反白選取,按CTRL+C複製到系統剪貼簿中。


   









    第二步:使用DOS command

    我們開啟一個DOS命令視窗,輸入瀏覽器執行檔的執行路徑(可在桌面上的瀏覽器圖示上按右鍵選擇內容的資訊中看到),後面再貼上剛剛複製到系統剪貼簿中的URL內容(按CTRL+V),OK後按ENTER鍵,便會看到瀏覽器被開啟並且開始執行指定的巨集。




    第三步:將剛剛的DOS command放在工作排程器中定時執行

    在第二步測試成功之後,您便可以將該指令寫成一個bat批次檔,放在windows的工作排程器中讓它在指定的時刻來執行。

結語:

    透過基本的iMacros巨集的錄製與稍加修改,我們就可以利用它來替我們解決大部份的需求,例如,我們可以將一些新聞網站每天的重要文章內容自動的轉寄到我們的信箱中、傳送網頁簡訊SMS、自動下載當天頭幾條新聞並發送到個人信箱、或者每天定時到Facebook上打卡、張貼文章,如果您放心的話,甚至於例行的銀行轉帳作業也可以透過iMacros來進行。
    不過,如果您的目的是要利用iMacros進行更複雜的行為,例如,自動搜集網路上某些特定的資料,然後匯整到自已的資料庫、監控某個線上交易網站上某個商品的價格並進行即時的警訊通知、或者定時在某個二手拍賣網站上進行搜尋,如果有某件特定商品達到適當的價格,則自動下標並購買…,這些行為,可透過iMacros加上第三方程式的輔助來進行,我會在往後的知識文件中以PHP為例專文介紹。