2009年1月25日 星期日

[PHP] 客製化部落格同步發文實作筆記 - 模擬瀏覽器行為

什麼是部落格同步發文呢?這個服務是整合性的應用,只需一套介面,使用者即可透過僅一套的介面,就能發表文章至各大部落格,而免去一一登入與發文的動作,這就是一種同步化的服務。對使用者來說,其最大好處就是可以不受單一的網站限制,同時在各處提供 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模擬瀏覽器行為


2 則留言:

  1. 這軟體要怎麼才可以有丫,去那抓或買??
    我想要...
    謝謝

    版主回覆:(04/14/2009 05:26:59 AM)


    請您再等等一會, 聽說有個軟體 NUWeb 即將提供這個服務, 可以把文章很隨手地發表到各大部落格囉! 有興趣也可以 Google 這個 NUWeb 關鍵字看看, 裡頭有個叫 NUBlog 的服務, 可以達到上述提的效果囉!

    回覆刪除
  2. ...> . <... (感動)有高手也在玩

    先前小弟無事也在摸索這塊
    也弄了Wireshark 在那邊拆半天的 @@

    哈哈...

    版主回覆:(09/28/2009 10:53:06 PM)


    隨著 API 的興起,應該越來越不需要這種動作了 XD

    回覆刪除