這個頁面的程式碼沒跑起來。

直接從資料夾裡開啟 index.html,瀏覽器會攔下 JavaScript 模組,於是你選好一個連結名稱之後,頁面不會有任何反應。改用 http 把這個資料夾提供出去:

powershell -ExecutionPolicy Bypass -File serve.ps1

然後開啟 http://localhost:8080/。

文字與檔案分享 — 從你的瀏覽器直達對方瀏覽器,不上傳

分享只活在這個開著的分頁裡。讀的人從你的瀏覽器直接取得加密內容,關掉分頁就結束——任何伺服器上都不留一點東西。

語言: 繁體中文
檢視原始碼
你的分享的文字與檔案不會上傳。這裡根本沒有伺服器。

你在這裡分享的內容,經端對端加密的 WebRTC 通道,從你的瀏覽器去往每位讀者的瀏覽器,不去任何別處。唯一牽涉的伺服器——名稱寫在本頁的 Content-Security-Policy 裡,原始碼在儲存庫中——把兩個瀏覽器互相引介之後就退到一旁:它什麼也不存,內容也從不經過它。沒有紀錄,沒有帳號。關掉這個分頁,分享在所有地方同時結束,包括讀者仍開著的頁面。

即時檢查: 檢查中…

離線: 檢查中…

分享時打開開發人員工具,盯著「網路」面板。你會看到一條通往引介伺服器的 WebSocket,只載著幾 KB 的連線協商——而無論你打了多少字、附了多少檔案,沒有哪條請求帶走其中一個位元組。

1 寫下來,或附上檔案

Markdown 檔案走和文字同一條直連通道,每個最大 200 MB。讀者看到清單,只有開口要,檔案才會傳給他。

2 給連結取名

連結名稱 名稱就是位址,也是唯一的秘密:短到能隔著房間喊出來;私密的東西,配個沒人猜得中的名稱。

一次性——草稿不留在這台裝置上 草稿只留在這個瀏覽器裡,下次打開還在——勾選一次性就哪裡都不留。

3 分享出去

哪裡都不存任何東西

文字和檔案加密後從這個分頁直達每位讀者的分頁。唯一牽涉的伺服器只負責引介兩個瀏覽器,永遠看不到它們交換了什麼。關掉這個分頁,分享結束,讀者開著的頁面也隨之清空——不過別人已經複製或下載的東西歸他。

以 Markdown 檢視

如何不向任何地方上傳就分享文字與檔案

  1. 寫下文字,或附上檔案。編輯器就是分享本身:讀者連上時裡面是什麼,他拿到的就是什麼;此後每次修改都隨著你的鍵入即時抵達已連線的讀者。檔案走同一條通道,每個最大 200 MB;讀者看到清單,只下載自己要的那份——沒人的頻寬會耗在不想要的檔案上。
  2. 文字配得上排版,就打開 Markdown。就一個開關。標題、粗體、清單、程式碼、連結隨著鍵入在編輯器旁邊即時轉譯;讀者預設看到排好版的樣子,還有一個切回原文的按鈕。轉譯器隨頁面一起送達並跳脫一切:無論誰寫的,分享的文字都無法在讀者的機器上變成指令碼。
  3. 給連結取名,或者就用建議。名稱就是位址:brave-otter-42 可以隔著房間喊、在電話裡唸、從白板上抄。它也是唯一的秘密:私密的東西要嘛取個沒人猜得到的名稱,要嘛靠私密開關。別人正用著的名稱會被拒絕;你一停,你的名稱就重新空出來。
  4. 決定放誰進來。私密是預設:每位讀者都會被請自報家門——名字、暗號、任何你認得出的東西——你看到那則訊息,旁邊是「讓他讀」和「請回」兩個按鈕。自我介紹走直連通道,連引介伺服器都不知道是誰敲的門。取消勾選就是公開分享,知道名稱的誰都能讀。
  5. 開始分享,別關分頁。分頁就是伺服器:它開著、醒著,分享就在;多一刻都沒有。闔上筆電螢幕同樣會終結它。複製連結,或者乾脆把名稱說出去——讀者在本頁網址末尾敲上 #名稱 就行。
  6. 在另一頭:先同意,再敲門。打開連結的人會得知有人在分享,被告知直連會讓雙方看到彼此的網路位址,只有自己選擇時才會連線。遇到私密分享,就自報家門等你放行。他拿到的內容隨你的編輯即時變化,你關掉分頁就消失。

說得更細的版本

如何不上傳就在裝置間分享文字與檔案 把文字或檔案經直連加密通道從一個瀏覽器送到另一個——不用寄信給自己,不留聊天紀錄,不需要帳號,也沒有哪台伺服器留著副本。

常見問題

有任何東西被上傳到任何地方嗎?

沒有。文字和檔案經加密 WebRTC 通道,從你的瀏覽器直達每位讀者的瀏覽器。唯一牽涉的伺服器只運送引介——幾 KB 的連線協商——從不運送內容。它那裡沒有可外洩、可調取、可遺失的東西:你的位元組它一個都不拿,你一斷線,房間就不復存在。

那這個工具為什麼還要和伺服器說話,偏偏還是在這個網站上?

因為兩個瀏覽器無法自己找到彼此:必須有個東西把輸入 brave-otter-42 的人和用這個名稱分享的人對上,並在兩者之間傳遞連線提議。這個東西就是引介伺服器,本頁唯一的網路相依,名稱寫在它的 Content-Security-Policy 裡,和頁面發布在同一個儲存庫。它是能辦成這件事的最小伺服器:什麼都不存,什麼都不讀,兩個瀏覽器一握上直連通道就退到一旁。

那台伺服器究竟能看到什麼?

某個連結名稱正在使用、分享方和讀者何時連線何時離開、他們的 IP 位址,以及雙方交換的加密連線握手。看不到文字,看不到檔案,看不到名稱和大小,看不到私密分享裡誰被放行,也看不到誰在自我介紹裡寫了什麼——這一切都走端對端加密的直連通道,根本不經過伺服器。運行這台伺服器的 Cloudflare 會把每次連線的日誌保留七天:連結名稱、位址和時間。除此之外,分享結束後什麼都不剩。

我關掉分頁會發生什麼?

分享在所有地方同時結束。連結一兩秒內失效;頁面還開著的讀者會看到自己的副本消失,附一句分享已結束的提示。這不是向哪台伺服器提交刪除申請——根本不存在要刪的伺服器副本。分頁是分享存在過的唯一地方,關掉它就是全部的收尾。

讀者能留下我分享的東西嗎?

分享開著的時候,能——分享本來就是這麼回事。讀者可以複製文字、下載檔案,拿走的就是他的了,和你用任何別的方式親手交給他沒有兩樣。結束分享保證的是未來:新來的人拿不到了,開著的頁面也不再顯示。沒有工具能收回已經送達的東西,這個頁面不假裝可以。

私密模式是什麼?

就是預設。每位到來的讀者都會得知分享是私密的,並被請自報家門;你看到那則訊息——「是我,站立會議上的 Alice」——旁邊是放行與請回的按鈕,你拍板之前什麼都不會送出。自我介紹走的是本就加密的直連通道,所以誰敲了門、你怎麼決定,伺服器永遠不知道。分享前取消勾選,就是公開分享。

為什麼讀者會看到我的 IP 位址?

因為連線是貨真價實的直連,而直連跑在兩個位址之間:每一端必然知道另一端,跟打電話一個道理。讀者在任何連線存在之前就被提醒,只有自己選擇時才連線;在那之前,你甚至不知道他打開過連結。如果這筆交換不適合某次分享,替代方案是經伺服器中轉的服務——交換的方向正好相反。

檔案能有多大,速度怎麼樣?

每個檔案最大 200 MB,類型不限;速度就是兩條連線裡較慢的那條——中間沒有伺服器來限速或計量。同一 Wi-Fi 下的兩台機器按區域網路速度傳,位元組出不了這棟樓。讀者按需取件,所以附上大檔案不花任何代價,直到真有人來要。

離線能用嗎?

老實說:一半。編輯器能——頁面照常載入,草稿還在,Markdown 照常轉譯,寫和儲存完全不需要網路。分享不能,也不可能:搆到另一個人的瀏覽器本身就是網路行為,引介還得靠引介伺服器。這是本站唯一一個任務在離線時根本不可能完成的工具,暗示別的說法都是不誠實。

要是我們連不上呢?

大多數瀏覽器對經引介後都能直連;少數不行,通常是有一頭在行動網路業者的共用位址網路裡,或者躲在嚴苛的公司網路後面。這個頁面絕不會悄悄切到中轉——那會不聲不響地改變這個工具是什麼——而是二十秒後明說直連沒有建立,並向讀者提供一條中轉:由 Cloudflare 營運,在兩個瀏覽器之間只轉送加密後的位元組,讀不了內容,因為金鑰從不離開兩端。讀者在自己的頁面上、被告知中轉能看到什麼之後——兩邊的位址,直連本來也會看到——才親自選它,那裡同樣什麼都不存。你這一邊什麼都沒變:你的瀏覽器仍然只傳給那一位讀者,就像對方用著 VPN 時一樣。

誰都能分享任何東西,轉譯 Markdown 還安全嗎?

這個問題正是轉譯器是本頁原始碼裡的八十行、而不是一個程式庫的原因。任何標籤產出之前,每個字元都先被跳脫;能產出的只有一組固定的無害標籤;連結只認 http、https 和 mailto——javascript: 連結只會留成一行死文字。無論誰寫的,分享的文字都無法在你的機器上變成指令碼,而那八十行你自己就能讀。

兩個人能用同一個名稱分享嗎?

不能同時。每個名稱只有一個活著的分享,由引介伺服器強制執行:後來的會被拒絕,請他另選名稱。分享一結束,名稱立刻空出——這也意味著存下來的連結只和背後的分享一樣新鮮:同一個名稱,下週可能屬於別人。把連結當成屬於某個時刻的東西,而不是屬於某個人的。

免費嗎?要帳號嗎?

免費;沒有帳號,沒有註冊,也沒有值得一提的限制——每次分享最多十六位讀者同時在線。網站靠廣告維持;廣告拿不到這個頁面分享的任何東西,而引介伺服器恰恰因為什麼都不存、幾乎什麼都不做,才輕輕鬆鬆待在免費方案裡。