這是什麼
abox.tools 是一堆小工具,每個只做一件事。把照片改個尺寸,把影片裁一段,把兩個 PDF 合起來,看看一個 QR Code 裡到底裝了什麼。現在有 44 個,旁邊還有一批指南,講的是這些工具對應的工作。
不尋常的不是它們做什麼,而是在哪裡做。每一個都完全在你的瀏覽器裡跑,用你自己的硬體,用瀏覽器本來就帶的那套編解碼器。你開啟的東西不會被傳到任何地方。這些頁面背後也沒有一臺伺服器可以接收:整個網站就是一堆靜態檔案,工具則是放在旁邊的普通 JavaScript 模組。
產品就是這些。這一頁剩下的內容講的是,為什麼值得這麼做,以及做這件事的是誰。
誰在做
一個人,獨自在加拿大安大略省。這不是公司。沒有團隊,沒有投資方,沒有母公司,也沒有被誰收購的打算。信件寄到 [email protected],收信的就是寫程式碼的那個人。這個地址適合談什麼、不適合談什麼,寫在聯絡頁上。
網站是有意不署名釋出的。這是個小專案,不是個人品牌。這裡值得信的不是頁尾的一個名字,而是任何人都能讀的程式碼,以及任何人開啟開發者工具三十秒就能驗的頁面行為。這兩樣能核實,名字不能。
為什麼這麼做
做這類工具的常規辦法是:把檔案傳上去,在伺服器上處理,再把結果發回來。這樣更省事,什麼裝置上都能用,幾乎每一個「免費線上轉換器」都這麼做。
這也意味著把自己的檔案交給一個陌生人。傳個表情包無所謂。護照掃描檔、醫學影像、簽了字的合同、後設資料裡帶著家庭住址的照片,就不是無所謂了。檔案一旦到了別人機器上,它的去向就取決於對方的規矩和對方的可靠程度,而這兩樣你都查不了。那種網站的隱私政策是一句承諾,不是一道閘門。
瀏覽器已經好到用不著這句承諾了。它能讀寫 JPEG、PNG 和 WebP,能拆開影片容器並解碼,能算檔案的雜湊,能讀 QR Code,也能寫 PDF。既然工作能在你自己的機器上做完,「他們會不會留下我的檔案」就不再是一個關於誰的動機的問題,而變成一個關於程式碼到底能做什麼的問題。後面這個問題,你自己就能回答。
道理就這些,另有一篇指南把它講透了:往網站上傳檔案安全嗎?
別信,去驗
上面每一句話都是寫來給人驗的。按費勁程度從低到高,有四種辦法。
- 把網斷掉。隨便開啟一個工具頁,斷開連線,照樣用。它照樣能用,因為裡面從來就沒有聯網這一步。要是一個工具把你的檔案送出去處理,這時候就停住了。
- 盯著網路看。開啟開發者工具,切到「網路」,處理一個檔案。沒有任何一條請求帶著你的檔案、它的縮圖、它的檔名,或者它內容裡的哪怕一個位元組。你會看到的是頁面本身、頁面的指令碼、廣告和訪問統計。
- 讀讀頁面給自己定的規矩。每一頁都帶著一份
Content-Security-Policy,把它被允許連的地址一個不落地列了出來,其中沒有一個屬於本站。就算程式碼裡有錯,也沒法把檔案送到哪裡去,因為瀏覽器會拒掉那個連線。 - 讀程式碼。程式碼全部公開,沒有構建步驟,也沒有打包器:儲存庫裡是什麼,瀏覽器跑的就逐位元組是什麼。每個工具都有一份 README 講它怎麼工作,每個工具頁也點名了先讀哪幾個檔案最划算。
「不聯網」只有一個刻意留下的例外,而且在它自己的頁面上講得很細:文字共享要把文字從你的一臺裝置挪到另一臺,沒有網就辦不成。它只開一條連線,通向一個什麼都不存的中轉點,而那個中轉點被告知的只有一件事:有兩個瀏覽器想認識一下。
工具怎麼做,怎麼驗
一個工具是在它能處理真實檔案的時候上線的,不是在它能處理開發時手邊那個檔案的時候。具體做法是在瀏覽器裡手動餵它一些難纏的輸入:你想剪的那一處正好沒有關鍵幀的影片,容器寫得略有偏差的手機 HEIC,字型只嵌了一部分的 PDF。人們手上真正有的就是這些檔案,而寫出這個缺陷的人自己寫的測試,恰恰找不出它們。
下面還有一整套自動測試,兩頭都蓋到:產生網站的那個產生器,和瀏覽器執行的那些模組。每次改動都跑一遍,測試沒過就什麼都不會發布。同一段工作出現在多個工具裡的地方,比如有好幾個工具都要讀 MP4,會有測試盯著這幾份副本是不是還對得上,免得修好一處,另幾處卻悄悄錯著。
指南也按同一把尺子寫。裡面的截圖不是畫的也不是擺拍的,是指令碼從已經構建好的網站上抓的。所以指南裡的圖,就是那個頁面今天的真實樣子。
錢從哪來
廣告,加上覺得這些工具有用的人的捐助。整個盈利模式就這些,而它包含什麼、不包含什麼,值得說清楚。
這裡沒有東西賣。不用註冊,沒有帳號,沒有上面壓著付費版的免費版,沒有要花錢去掉的水印,沒有檔案大小上限,沒有每日次數限制,也沒有留一手的功能。網站上有的,就是全部。
你的檔案不在這筆買賣裡。廣告是 Google 的,訪問統計用的是 Google Analytics,這兩樣都不會被告知你開啟了什麼、做出了什麼、它叫什麼名字、有多大。這些資訊壓根不會交到那兩個指令碼手裡,就算其中一個想發,頁面的安全策略也會拒掉。那兩樣究竟收集了什麼、各自怎麼關掉,寫在隱私頁上。把兩樣都攔掉,所有工具照常能用。
工具不是為廣告寫的。這裡沒有哪個工具是因為某個關鍵詞值錢才存在的,也沒有哪個為了多賣幾次曝光而被故意做慢、做繁瑣、拆成更多頁。接下來做什麼是攤在明面上爭論的,在 ROADMAP.md 裡,一個想法一段,包括好幾個看起來理所當然的提議為什麼被否掉。
語言
網站有十五種語言。每一種都是真的翻譯,不是機器過一遍就撂在那裡:工具名、說明、指南,連地址本身都翻了。一個頁面只有在那種語言真的寫出來之後,才會被列進那種語言。還在做的語言仍然能讀,但不進網站地圖,也不進語言切換器,免得把人請到一個一半是英文的頁面上。
來信用英文回。對一個這麼大點的專案來說,這是唯一誠實的說法。
本站不會做的事
- 讓你註冊帳號,或者向你要信箱地址。
- 上傳、儲存、檢視或者留下你在這裡開啟的檔案。
- 在結果上打水印,或者把某個功能留給付費版。
- 給一個用不著聯網的工具加上聯網這一步。
- 在工具頁上說一些儲存庫裡的程式碼並不會做的事。
要是你發現上面哪一條真的發生了,那既是一個缺陷,也是一句被打破的承諾,值得告訴我一聲。聯絡頁是最快的路。