什麼是部落格同步發文呢?這個服務是整合性的應用,只需一套介面,使用者即可透過僅一套的介面,就能發表文章至各大部落格,而免去一一登入與發文的動作,這就是一種同步化的服務。對使用者來說,其最大好處就是可以不受單一的網站限制,同時在各處提供 Blog Service 網站分享自己,並且與各處的朋友進行聯繫與分享,僅需下列的東西即可辦到:

  1. 同步發文至各大 Blog 站台
  2. 訂閱自己各大站的 RSS,可觀察回應文章的狀況

前陣子用 PHP 實作這等東西出來,這陣子想要順手整理一些實作筆記,當時甚至想寫成 C 或 C++ 版本!最後,發現還現要珍惜生命啊!時間還是不適合這樣浪費掉!以下的紀錄是用於封閉性的部落格系統,對於公開化的,即可改採用 XML-RPC 的實作方式,在此就不多提 XML-RPC 。

基本背景:

  • HTTP
    • Referer
  • Cookie
  • HTML
  • Regular expression
  • Javascript
  • PHP

函式庫:

  • curl

環境協助:

  • Firefox
    • Firebug
    • Web Developer
  • Wireshark

流程概念:

  1. 模擬登入
  2. 模擬發文

主體流程:

  1. 連到 Blog 網站
  2. 連到登入頁面,收集登入所需資料
  3. 送出登入所需資料
  4. 連到文章發文,收集發文所需資料
  5. 發表文章,收工

大致上的流程,用來收集 Cookie ,說穿了,就是跟瀏覽器逛網頁一樣!唯一需留意的,在瀏覽器上的一個 click 動作,背後極可能不是一步!這些還包括煩人的 javascript 等,因此,偶爾需要使用Wireshark 軟體,收集一下封包,看看封包內到底塞了什麼資料,另外,本實作主要使用 curl 這函式庫,除了可以送出 HTTP-REFERER 的偽裝術外,最最重要的就是收集 Cookie 的動作!各大網站整體上還不少是使用 Cookie 來完成整個帳號登入的流程,若沒有 Cookie 那可是寸步難行。

如果有意將以開發好的 PHP 程式,轉換成 C 或 C++ ,整體上的關鍵就只是 curl,這真的是好物!

最後,則是開發完這項服務的心得:沒事還是不要碰。實在是這些客製化的東西,當對方網站的登入流程、網頁內容或相關格式改變,那之前實作的產品就會變成廢物了,唯一能做的,除了不定期地更新外,就是使用 Regular expression 來達到彈性化,只是,這項服務比較像用來練功啦。

相關投影片:以PHP-cURL模擬瀏覽器行為


全站熱搜

changyy 發表在 痞客邦 留言(2) 人氣()