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

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

> 把文字或檔案經由直連加密通道從一個瀏覽器送到另一個。連結名稱說得出口，邊打字邊即時同步，逐一核准讀者——任何伺服器上永遠不存任何東西。免費，無須註冊。

本頁是一個完全在你的瀏覽器裡執行的互動式工具，地址是 https://abox.tools/zh-TW/share-text/。你交給它的任何內容都不會被上傳。下面是這個頁面用文字對該工具的全部說明；要使用它，請開啟這個地址。

## 你的分享的文字與檔案**不會上傳**。這裡根本沒有伺服器。

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

- ✗ 零儲存
- ✗ 無帳號
- ✓ 端對端加密
- ✓ 隨分頁結束
- ✓ 開放原始碼

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

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

## 說得更細的版本

[如何不上傳就在裝置間分享文字與檔案](https://abox.tools/zh-TW/guides/share-text-between-devices/): 把文字或檔案經直連加密通道從一個瀏覽器送到另一個——不用寄信給自己，不留聊天紀錄，不需要帳號，也沒有哪台伺服器留著副本。

## 工具箱裡還有

- [QR Code 與條碼產生](https://abox.tools/zh-TW/qr-barcode/): 打進去，就變成一個碼。產生過程不往外送任何東西。
- [QR Code 與條碼識讀](https://abox.tools/zh-TW/qr-barcode-reader/): 把鏡頭對準碼，或者把拍下來的圖丟進來。讀這件事只發生在這裡，別處都沒有。
- [雜湊與校驗和](https://abox.tools/zh-TW/hash-checksum/): 把下載來的檔案和釋出方公佈的那串數字對一下，不用把它發給任何人。
- [密碼與密碼短語產生器](https://abox.tools/zh-TW/password-generator/): 在這裡產生，由你自己的瀏覽器產生，不發往任何地方。什麼都不儲存，也沒有歷史記錄。

## 常見問題

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

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

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

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

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

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

### 我關掉分頁會發生什麼？

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

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

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

### 私密模式是什麼？

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

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

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

### 檔案能有多大，速度怎麼樣？

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

### 離線能用嗎？

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

### 要是我們連不上呢？

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

### 誰都能分享任何東西，轉譯 Markdown 還安全嗎？

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

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

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

### 免費嗎？要帳號嗎？

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

## 這條隱私承諾怎麼核實

- **內容只去往你的讀者，不去任何別處。** 文字和檔案走 WebRTC 資料通道：你的瀏覽器與每位讀者的瀏覽器之間一條直連的、DTLS 加密的連線。這條路上沒有伺服器。同一網路裡，位元組甚至出不了這棟樓——同一 Wi-Fi 下的兩台筆電，一切都在本機交接。唯一的例外是讀者所在網路無法直連、於是在自己的頁面上選擇了加密中轉：它轉送的是同樣的密文，讀不了。
- **引介伺服器是什麼，以及它能看到的一切。** 直連需要引介，所以這個頁面——全站僅此一頁——向我們的一台伺服器開一條 WebSocket。它把輸入連結名稱的人和用這個名稱分享的人對上，轉遞幾 KB 的協商，然後什麼都不留：從不寫入儲存，分享方一斷線，房間就不復存在。它能看到：某個名稱正在使用、誰何時來去、IP 位址。它看不到：文字、檔案、誰被放行、誰寫了什麼——連私密分享的敲門都走加密直連通道。它的全部原始碼就在儲存庫裡，與這個工具的原始碼相鄰。分享結束後留下來的只有一樣：運行這台伺服器的 Cloudflare 會把每次連線的日誌保留七天——連結名稱、位址和時間，從不含內容。
- **什麼都不存，所以關分頁就是刪除本身。** 分享只在你的分頁開著時存在。一關，新來的讀者什麼也找不到，正在讀的人會看到自己的副本消失——不過別人之前複製或下載的東西歸他，就像任何你親手遞出去的東西一樣。你敲的草稿只放在你自己瀏覽器的儲存空間裡，好讓下次還在，也只放在那裡；勾選一次性，哪裡都不放。
- **連結名稱是唯一的秘密，私密模式是那把鎖。** 知道或猜中名稱的人，就能打開背後的分享。所以建議名是三個隨機單字，所以敏感內容值得一個猜不中的名稱——或者用預設就開著的私密開關：每位到來的讀者都得經直連通道自報家門，你放行之前什麼也不會送出。
- **直連讓兩邊看見彼此的位址。** 點對點就是這個意思，而讀者在事情發生前就會知道：打開分享連結只是問引介伺服器有沒有人在分享；然後頁面明說，連線會讓雙方看到彼此的 IP 位址，並等待一次點擊。在那次點擊之前，分享方連讀者存在都不知道。
- **Google 載入了什麼，又拿不到什麼。** 廣告和統計指令碼來自 Google，贊助按鈕來自 Buy Me a Coffee。它們誰也拿不到文字、檔案、名稱和大小、誰連線過。例外是這個頁面自己的位址：讀者的連結裡帶著連結名稱，廣告指令碼會讀取這個位址。想保密的分享，應該打開私密開關。碰到內容的每一行程式碼都由本源提供，並且都在儲存庫裡。

**你可以自己核對。**上面這些不用你信。這個頁面是儲存庫裡的模板和配置產生出來的，構建指令碼你能讀，也能自己跑一遍，跑出來的結果就提交在 `dist` 分支上。拿實際發給你的內容，跟你自己從原始碼構建出來的結果對一遍就知道了： https://github.com/A-Box-of-Tools/website

最值得先讀的幾個檔案：`config/site.toml` 裡是 Content-Security-Policy，還有裝著交換雙方邏輯的 `src/main.js`——分享方的分頁和讀者的分頁是同一個檔案——以及 `src/markdown.js`：這個轉譯器處理的是線路另一頭傳來的文字，所以在輸出任何東西之前先跳脫一切。伺服器的全部原始碼是同一儲存庫裡的 `workers/rendezvous/worker.js`：每個連結名稱一個房間，除了開著的連線什麼都不持有。
