什麼是部落格同步發文呢?這個服務是整合性的應用,只需一套介面,使用者即可透過僅一套的介面,就能發表文章至各大部落格,而免去一一登入與發文的動作,這就是一種同步化的服務。對使用者來說,其最大好處就是可以不受單一的網站限制,同時在各處提供 Blog Service 網站分享自己,並且與各處的朋友進行聯繫與分享,僅需下列的東西即可辦到:
- 同步發文至各大 Blog 站台
- 訂閱自己各大站的 RSS,可觀察回應文章的狀況
前陣子用 PHP 實作這等東西出來,這陣子想要順手整理一些實作筆記,當時甚至想寫成 C 或 C++ 版本!最後,發現還現要珍惜生命啊!時間還是不適合這樣浪費掉!以下的紀錄是用於封閉性的部落格系統,對於公開化的,即可改採用 XML-RPC 的實作方式,在此就不多提 XML-RPC 。
基本背景:
- HTTP
- Referer
- Cookie
- HTML
- Regular expression
- Javascript
- PHP
函式庫:
- curl
環境協助:
- Firefox
- Firebug
- Web Developer
- Wireshark
流程概念:
- 模擬登入
- 模擬發文
主體流程:
- 連到 Blog 網站
- 連到登入頁面,收集登入所需資料
- 送出登入所需資料
- 連到文章發文,收集發文所需資料
- 發表文章,收工
大致上的流程,用來收集 Cookie ,說穿了,就是跟瀏覽器逛網頁一樣!唯一需留意的,在瀏覽器上的一個 click 動作,背後極可能不是一步!這些還包括煩人的 javascript 等,因此,偶爾需要使用Wireshark 軟體,收集一下封包,看看封包內到底塞了什麼資料,另外,本實作主要使用 curl 這函式庫,除了可以送出 HTTP-REFERER 的偽裝術外,最最重要的就是收集 Cookie 的動作!各大網站整體上還不少是使用 Cookie 來完成整個帳號登入的流程,若沒有 Cookie 那可是寸步難行。
如果有意將以開發好的 PHP 程式,轉換成 C 或 C++ ,整體上的關鍵就只是 curl,這真的是好物!
最後,則是開發完這項服務的心得:沒事還是不要碰。實在是這些客製化的東西,當對方網站的登入流程、網頁內容或相關格式改變,那之前實作的產品就會變成廢物了,唯一能做的,除了不定期地更新外,就是使用 Regular expression 來達到彈性化,只是,這項服務比較像用來練功啦。
相關投影片:以PHP-cURL模擬瀏覽器行為