GoogleBack Machine

Posted by tjwei on 星期日, 1月 06, 2008 with No comments
像是壞狗這類的寄人籬下型 Ajax 應用,一個大問題是無法儲存。
比方向是壞狗不道德,儲存搜尋出來的結果,或者編輯常用關鍵字清單。壞狗疊疊樂中,如果那些列表能夠讓使用者自行修改多好。又如果能夠定期紀錄排名,然後追蹤,不是能夠更有用嗎?
理論上既然能夠利用別人的服務來自動讀取資訊,那應該也可以利用別人的服務來自動儲存資訊吧,但這樣其實多半代表這個服務有一些安全上的疑慮,主要原因有三個:
  1. 大多數的服務提供者並不希望自己的儲存空間被他人自由利用。畢竟不是慈善事業。
  2. 就算提供了給使用者儲存的空間,這個私人空間如果能夠被壞狗這類網頁寫入,那這已經算是 XSS 的漏洞了。
  3. 就算真的能利用某種方式,在某個空間中自動儲存東西(不管是公開或私人空間),那麼別人也可能用相同的方式來破壞或者干擾我儲存的資料。
所以其實仔細想一下,好像除了利用 cookie 或者利用 Google Gear 之外,別無他法。但兩個方式都不完美,前者儲存量太少了,後者要另外加裝軟體。
在繼續這個主題之前,我們先看一個服務,Wayback Machine 。這個服務主要是自動將整個 Internet 做備份。但有個缺點,就是新的資料無法很快更新,他只提供六個月之前的資料,而且更新的頻率你也無法控制。
另外有一個服務叫做 Hanzo:Web,就是讓你自己客制化的 Wayback Machine,你可以自己定義多久抓一次,要抓哪些網頁。不過這個服務會提供多久還不清楚,而且也抓不到 script 生成的動態資料。
現在我們可以利用 Mashup 來 DIY 一個 Wayback Machine,而且能抓到 Script 生成的資料。
其實很簡單,我用 Openkapow 寫了一個機器人,你只要利用下列的網址http://service.openkapow.com/weijr/googleback.rss?URL=http://slashdot.org
就能產生一個包含 slashdot.org 網頁內容生成的 RSS。
把slashdot.org 換成其他的網址,就能變成其他的網頁內容。
好吧,但是這樣並沒有辦法儲存舊網頁啊?這就是 Mashup 的精神了,接下來,你用 Google Reader 來訂閱這個 RSS, Google Reader 自動幫你把舊的 feed 存檔。接著再利用 Google Reader 提供的分享功能,產生 feed(配合 c=xxxxxx的參數,可以讀取舊的資料)。再利用 google feed API,就能造出一個 Google Back Machine了。

Remark
  1. 這樣只能替單一的網頁做備份,但 OpenKapow 有 Crawl 的功能,技術上你可以砍站,或者做個 Sitemap 來備份 Sitemap 中的連結。但雖然 Openkapow 遵守機器人協定,這個還是太有侵略性了,所以自己寫比較好。
  2. Google Reader 的 feed 會過濾掉一些 html語法的東西,所以要完整的網頁資訊,最好先將 html 語法編碼成安全的文字。
  3. Openkapow 似乎不支援 Ajax ,但支援許多script 語法。如果你要儲存動態產生的資料,可以特別的寫些網頁,然後利用 script 產生一些內容。最後再用 Openkapow 抓取動態內容。
回到壞狗疊疊樂的例子。如果我想要每個星期紀錄一次「話題女王」的排名,那麼直接利用上面的 GoogleBack Machine 法,似乎不錯。但是壞狗因為用到了 Ajax,所以 OpenKapow 其實無法正確的生成內容。
理論上,我可以用 OpenKapow 做一個和壞狗疊疊樂相同的功能的機器人,產生報表,然後用 Google Reader 紀錄。配合 GoogleBack 的概念,我可以利用壞狗的名單 script,產生一個 google url 搜尋列表,然後用 OpenKapow 機器人去抓這些 Google 搜尋結果就可以了。這樣我只需要維護一份清單。
至於名單的紀錄就比較麻煩,但是我可以利用 Kapow,產生包含名單的 feed,然後讓使用者訂閱這些 feed。最後再用 Cookie 紀錄使用者的 Google Reader feed 網址就可以了。這樣還能支援無限 Undo 的名單編輯。
Hanzo:web 還有 Google 筆記本也可以做類似的運用。
Categories: ,