限次瀏覽、閱後即焚:Mork 開站的起點

2020 年前後的短網址服務,做的事情其實都一樣,把一條又長又醜的網址換成一條短的,然後告訴你被點了幾次,功能差異多半在統計報表做得漂不漂亮、能不能自訂網域,服務之間互相抄,抄到最後大家長得都差不多,其實現在也是,Mork 也被兩個長得很像的短網址服務 L 與 M 開頭的短網址抄襲,完全原封不動的被複製親手打的服務描述,但這是之後的事情了,當時台灣最大的是 Risu。

一個沒有人做的需求

短網址的預設行為是永久有效,貼出去之後那條連結會一直活著,這對行銷投放來說是對的,畢竟你希望越多人點越好,可是私下傳東西給人的時候,需求剛好相反,於是開始有了時間鎖。

傳一份文件給對方確認、把一張截圖丟到群組裡問一句、給人看一段還沒公開的東西,這些場景的共通點是「看過就沒事了」,但連結無法確保多少人看過,它躺在對話紀錄裡,躺在別人的瀏覽紀錄裡,只要還沒過期,那條連結還是打得開,大部分人的處理方式是不處理,反正也沒出事,而真的在意的人只能選擇不用短網址。

團隊那時候的判斷是,這不是沒有需求,是沒有人做,於是 Mork 開站的第一個功能不是縮網址,是閱後即焚,以點閱次數作為鎖定依據,確保內容被傳遞的次數限制。

不只是「只能看一次」

閱後即焚聽起來像是看完就毀掉,但實際做下去會發現,只給一次太硬了,對方手滑關掉分頁、網路斷一下重新整理、或是想回頭再確認一次,連結就沒了,那不叫保護,那叫難用。

所以做成可以設定的次數,從 1 次到 1000 次都行,1 次就是最嚴格的閱後即焚,其他數字則是「我知道大概會有幾個人看,多的我不想給」,另外還可以搭配時間,從 1 分鐘到 30 天,兩個條件哪一個先到就先失效。

次數用完之後連結不是變成 404,而是明確告訴對方這個連結已經用完了,這個差別在私下分享的情境很重要,對方會知道是自己來晚了,而不是以為你給錯網址。

難的是「同一個人」

次數限制真正麻煩的地方,不是扣次數,是決定什麼情況要扣。

如果照請求數算,同一個人重新整理三次就用掉三次額度,那個功能等於壞的,可是要分辨「同一個人」,最直覺的作法是要對方登入,而 Mork 從第一天就決定不需要註冊,這兩件事是衝突的。

最後的做法是給每一個瀏覽器一組隨機的識別碼,存在自己的工作階段裡,計數的時候先查這條連結有沒有這組識別碼的紀錄,有就不再計,這件事沒有辦法做到完美,換一台裝置、清掉瀏覽器資料就是新的人,但它換來的是不需要帳號,而對一個匿名分享的服務來說,那個取捨是划算的。

機器人不能算

還有一個一開始沒想到的問題,當把一條連結貼進通訊軟體或社群平台,部分平台會有 Preview 機制,也就是在你點開之前,伺服器就會先幫你看一次,抓取頁面資料,並產生預覽用的縮圖跟標題,這是正常行為,但如果那一次也算進次數裡,一條只能看一次的連結,在還沒有任何人點開之前就已經被燒掉了,有密碼保護的頁面還好,但沒有密碼保護的頁面問題就來了。

所以判定為機器人的請求完全不計數,那些請求照樣拿得到內容,只是不會動到額度,這條規則現在看起來理所當然,但它是被使用者回報「我的連結還沒給人就失效了」才補上的。

不計數

同一個人再看一次
工作階段裡的識別碼比對得上,重新整理、回頭再確認都不扣額度。

機器人
通訊軟體與社群平台為了產生預覽會先抓一次,那一次算進去的話,連結在還沒有人點開之前就被燒掉了。

計數

第一次來的人
沒有比對到識別碼,才建立一筆瀏覽紀錄,額度減一。

額度歸零之後
連結失效,但不是回 404,而是明確說這個連結已經用完了。

分辨「同一個人」最直覺的作法是要對方登入,而 Mork 從第一天就決定不需要註冊。識別碼是那個取捨的結果:換一台裝置或清掉瀏覽器資料就會被當成新的人,換來的是全程不需要帳號。

後來的樣子

服務的同質性大家都雷同,盡可能在 UI/UX 上盡最大的努力,盡可能把服務做得更加直覺,功能完善的同時,保護機制是 Mork 最大的優勢,不定期找資安團隊討論架構、改進,讓短網址服務服務不僅僅只是縮網址這麼簡單,也是一個受保護的圖片、影片、音訊分享平台,讓分享變得更加簡單。

在分享圖片、照片之前,還可以使用強的線上圖片編輯器處理過再建立圖片短網址,影片也是一樣,這也是與其他平台不一樣的特點之一,影片同樣的強大的線上剪輯工具,線上處理過後直接變成影片短網址,分享真的可以很簡單。

← 回到技術筆記