隱私權與 Cookie
本聲明涵蓋兩件不同的事物:您安裝的 FoxSDR 應用程式,以及本網站。兩者收集不同的資料,目的也不同,因此在下文分開說明 — 先說明應用程式,因為那是在您自己電腦上執行的部分。本聲明力求完整而非簡短:兩者儲存的每一個欄位都列在其中,包括大多數聲明都略去不提的欄位。
應用程式:它會傳送什麼
沒有帳號、沒有授權金鑰、不需啟用,而且 FoxSDR 絕不回報任何與您收聽內容有關的資訊。它自己主動發出的網路請求只有四種:更新檢查;匿名使用情況報告,以及應用程式開啟期間一個很小的「仍在執行」心跳訊號;發生故障後的當機或無回應報告;以及 — 只有在您開啟外掛商店或在其中按「立即檢查」時 — 對外掛程式目錄的請求。以下逐欄說明每一種請求,而每一種都可以關閉。共有三個開關控制它們:系統 → 更新、系統 → 使用情況報告與系統 → 診斷。沒有任何功能需要開啟其中任何一個,關閉任何一個也不會有任何東西來煩您。
留在您電腦上的內容
您的錄音 (包括音訊與原始 I/Q)、SSTV 與氣象衛星解碼器所建立的影像、解碼器所解出的一切、您的書籤、頻段規劃、設定、接收機位置以及已安裝的外掛程式,都是您自己磁碟上的檔案。沒有任何東西會上傳它們,您所調諧的任何頻率也不會離開您的電腦。
更新檢查
應用程式每次啟動時會詢問本網站一次是否有較新的版本。整個請求就是 GET /api/update?v= 後接您正在執行的版本 — 沒有識別碼、沒有安裝識別碼、沒有 Cookie,也沒有任何可以與之後的請求連結起來的東西。本伺服器不會為它寫入任何分析記錄:只有頁面瀏覽與檔案下載會被記錄,而更新端點兩者皆非。在系統 → 更新中將它關閉,應用程式就再也不會連線到這項服務。
除非您按下按鈕,否則不會下載或安裝任何東西。如果您按了,安裝程式會透過 HTTPS 從本網站下載,並在檔案被賦予任何程式都能執行的名稱之前,先將其 SHA-256 與伺服器公布的摘要值核對 — 而這次下載就是從本網站進行的一般下載,因此會和其他下載一樣被記錄,包括本聲明網站部分所說明的 IP 位址、大致位置、瀏覽器與作業系統。
使用情況報告
自 0.53.0 版起提供匿名使用情況報告,位於系統 → 使用情況報告。它預設為開啟,您可以將它關閉 — 取消勾選該方塊,報告就會立即停止。每次啟動會傳送一份報告,描述剛結束的工作階段,而以下就是它的全部內容:
| 傳送內容 | 範例 | 原因 |
|---|---|---|
| 安裝識別碼 | 32 個隨機十六進位字元 | 用來區分 100 位使用者與同一位使用者啟動 100 次。首次執行時在您的電腦上隨機產生,關閉報告時即刪除,而且絕不從您的硬體、網路或名稱衍生而來。 |
| 應用程式版本 | 0.99.39 | 了解使用者是否會更新。Android Alpha 版會將自己的組建回報為 0.98.1-android.4 — 在其所依據的版本號碼後加上 -android.N 尾碼,因此它的報告絕不會與 Windows 安裝程式的報告混淆。 |
| 作業系統 | Windows 10.0.22631、Linux 6.8.0 或 Android 14 | 了解實際使用的是哪些平台。作業系統及其組建、核心或版本號碼,絕不包含您電腦的名稱或使用者帳戶。Linux 組建 (0.99.39) 與 Android Alpha 版 (0.98.1-android.4) 在同一個開關下傳送相同的欄位。 |
| 架構 | x64 或 arm64 | 同上。 |
| 啟動次數 | 12 | 了解軟體是否被使用超過一次。 |
| 當機次數 | 1 | 了解它失敗的頻率。 |
| 工作階段長度 | 3600 秒 | 了解工作階段是以分鐘還是小時計。 |
| SDR 型號 | uhd b200 | 了解應優先支援哪些無線電。傳送前會去除序號。 |
| 使用過的解調器及使用時間 | WFM: 3000s | 了解哪些模式值得進一步投入。 |
| 開啟過的面板 | map, decoded | 了解哪些功能有人使用。 |
| 已安裝的外掛程式 | ADS-B 1.0.0 | 了解哪些解碼器值得進一步投入。 |
以上就是完整清單。它以 PRIVACY.md 的形式隨應用程式一起發布,並有自動化測試逐欄驗證傳送內容,因此若要新增欄位,必然會讓該測試失敗,並須同時更新這兩份文件。關閉報告會刪除安裝識別碼,因此日後若重新開啟,您會得到一個無法與舊識別碼連結的新識別碼。
報告會在啟動時傳送,描述已經結束的工作階段,絕不會在結束時傳送 — 因為在關閉時進行網路呼叫,可能讓使用者正要關閉的應用程式停住,而在結束時寫入的報告,偏偏會在最值得計算的那種事件中遺失。回應中的任何內容都不會被讀取或據以採取行動。
「仍在執行」心跳訊號
在應用程式啟動時送達的報告,只能說明誰啟動了它,永遠無法說明誰仍開著它。因此,在 FoxSDR 執行期間 — 而且只有在使用情況報告開啟時 — 它還會每五分鐘傳送一則非常小的訊息,其中只有三個欄位,別無其他:
| 傳送內容 | 範例 | 原因 |
|---|---|---|
| 安裝識別碼 | 與上述相同的 32 個十六進位字元 | 這樣來自同一份副本的十二次心跳訊號,只會算作一份執行中的副本,而不是十二份。 |
| 應用程式版本 | 0.99.39 | 這樣「目前執行中」的數字才能依版本細分。 |
| 心跳標記 | 1 | 告訴接收端這是心跳訊號,而不是工作階段報告。 |
工作階段的任何內容都不會一併傳送:沒有模式、沒有面板、沒有無線電型號、沒有持續時間、沒有計數器。心跳訊號寫入它自己的資料集,與工作階段報告分開存放,因此任何使用統計數字的意義都不會改變。同一個開關會同時停止兩者:沒有有效的安裝識別碼,傳送程式就拒絕啟動,而關閉使用情況報告會刪除該識別碼,因此關閉就代表完全沒有心跳訊號。若下一次心跳訊號到期時上一次仍在傳送中,就會略過,而不會排入佇列。
使用情況報告的去向
傳送到本專案在 https://telemetry.foxsdr.com 營運的 Cloudflare Worker,由它將上述計數器寫入 Cloudflare Workers Analytics Engine 資料集。Cloudflare 代表我們處理這些資料,並保存三個月,之後即不復存在。沒有其他人會收到這些資料,它們不會被出售、出租或分享,而從中讀出的唯一內容是彙總計數,透過下文所述、受密碼保護的同一個儀表板讀取。Worker 的原始碼隨應用程式一起公開,因此您可以閱讀接收端究竟做了什麼。當機報告不會送到這裡 — 它們會送到本網站自己的伺服器,詳見下文。
當機與無回應報告
如果 FoxSDR 當機或停止回應,它會在您自己的電腦上將描述該故障的報告寫入 %LOCALAPPDATA%\FoxSDR\crashes\,並在下次啟動時傳送報告的文字內容 — 絕不會在故障發生的當下傳送,因為剛發生故障的程式無法安全地開啟網路連線。報告會送到本網站的 POST /api/crash — 不會送到 Cloudflare,也不會送到任何第三方 — 而且是匿名的:沒有帳號、沒有授權金鑰,也沒有任何用來登入的東西。
控制開關是系統 → 診斷,它同時控制報告的寫入與傳送:關閉時不會寫入任何報告、不會建立任何目錄,也絕不會建立任何連線。它與使用情況報告是不同的開關。關閉使用情況報告並不會停止當機報告 — 只會讓報告中的安裝識別碼欄位變成空白,因為此時並不存在識別碼,而當機報告也絕不會自行產生識別碼 (請見下表最後一列)。在本版之前,上方的聲明寫錯了開關;軟體一直使用的都是「診斷」,現在兩者的說法已經一致。
以下就是一份報告的全部內容:
| 傳送內容 | 範例 | 原因 |
|---|---|---|
| 發生了什麼事 | crash 或 hang | 無回應與當機是不同的故障。 |
| 故障特徵碼 | cascade.exe+0x1a2b/adsb.dll | 將許多人回報的同一個故障歸為同一筆,讓同一個錯誤的一百份報告成為一件要修正的事,而不是一百件。 |
| 應用程式版本、commit 與組建 ID | 0.61.0, 28fa1c2 | 故障發生在哪一個組建中,以及哪些符號與之相符。 |
| 故障模組與偏移量 | cascade.exe, 0x1a2b | 程式是在哪裡出錯的。 |
| 作業系統與架構 | Windows 11、Linux 或 Android 14,x64 或 arm64 | 故障往往只發生在某一個平台上。Linux 或 Android 的報告攜帶相同的欄位;由於這兩個平台都不是以 MSVC 組建,堆疊框架中標示的是故障程式庫的 GNU 組建 ID,而不是 PDB ID。 |
| 屬於哪一種失敗 | access violation, 0xC0000005 | 報告本身的原因說明行與 Windows 例外代碼。尤其,正是這一項說明某個故障是被吸收的 — 應用程式撐過了它 — 而不是當機;少了它,兩者看起來完全一樣。只是一個代碼與一句固定的句子,絕不是內容。 |
| 已載入的外掛程式及其版本 | ADS-B 1.1.0 | 「只在載入 ADS-B 外掛程式時當機」是故障描述;「有時候會當機」則不是。 |
| 執行緒堆疊 | 每個框架 cascade.exe+0x1a2b | 堆疊就是故障本身。它只有模組名稱、組建 ID 與數字偏移量 — 沒有原始碼路徑、沒有變數、沒有記憶體內容。 |
| 工作階段記錄檔的結尾 | opened rtlsdr | The last lines the application logged, which is usually what it was doing when it failed. It is the application's own log: it records state changes — source opened, rate set, plugin started — never signal content, and never the name or path of a file you opened. It also carries what the radio driver said and what its libraries printed to the standard error stream. Before any line of it leaves your computer, the application's own lines as well as the driver's, it is scrubbed: serial numbers and the device-specific part of USB device identifiers are replaced by <stripped>, the account name in a file path by <user>, and anything in single quotes, such as the names you give patch nodes and speakers, by '<name>'; on any line that mentions hertz, a frequency, tuning, a centre, a range, an offset, a carrier, a preset or transmitting, every number is replaced by # unless it is marked as a sample rate, a time, a level, a size or a count, is a version, an identifier or an error code, or is part of a name such as R820T; and lines in which the USB driver lists the devices plugged into your computer are left out, with one line saying how many. |
| 情境註記 | mode: WFM, sampleRate: 2400000 | 應用程式附加的幾則鍵/值註記:模式、來源 (產生器、I/Q 檔案或真實無線電)、取樣率、是否已開啟裝置、已去除序號的 SDR 型號、應用程式已執行了多少秒,以及故障執行緒當時執行的是 FoxSDR 自己的程式碼還是無線電驅動程式的程式碼。sampleRate 是取樣率,不是調諧頻率。 |
| 安裝識別碼 | 32 個隨機十六進位字元,或空白 | 用於限制傳送速率,之後即丟棄:安裝識別碼不會被儲存。陷入當機循環的電腦不能淹沒伺服器,而分辨一部電腦與一百部電腦,是讀取它的唯一目的。它在這裡絕不會寫入磁碟。如果使用情況報告已關閉,它會以空白傳送 — 此時並不存在識別碼,而當機報告也絕不會產生識別碼。 |
Corrected in FoxSDR 0.99.33. Before 0.99.33 the scrubbing described above was applied only to the radio driver's lines, not to the application's own, and a few of the application's own lines could therefore reach a crash or freeze report carrying the frequency you had asked for or were transmitting on, a patch radio's label (which can include its serial number), the names you gave patch parts, the first line of text a decoder on the patch page had produced, and the list of USB devices the USB driver printed, including their serial numbers. That contradicted this notice. From 0.99.33 every line is scrubbed before it leaves your computer, and those log lines no longer contain those values in the first place.
當機報告不包含頻率、不包含任何解碼內容、不包含檔案路徑、不包含使用者名稱、不包含電腦名稱,也不包含位置。報告保存在本網站自己的伺服器上,與其他所有資料一樣位於受密碼保護的同一個儀表板之後,並在該故障最後一次出現後保存 90 天,然後刪除 — 與使用情況報告的保存期間同樣是三個月。任何一個故障的第一份報告會完整保存,此外,該故障每延續到一個新組建,就再多保存一份報告,最多三份;同一故障的其他所有報告只會計數,不會儲存。有一項自動化測試讓端點所接受的內容與它寫入磁碟的內容,雙向都必須符合上表,因此若要在任一方新增欄位,這張表也必須隨之變更。
在任何設定下都絕不會傳送完整的記憶體傾印。記憶體傾印是程式記憶體的副本,可能包含檔案名稱、視窗標題與接收到的訊號資料。它預設為關閉;如果您在「系統 → 診斷」中開啟它,會在文字報告旁邊寫入一個 .dmp,而且只存在本機,上傳程式只會開啟名為 crash-*.txt 與 hang-*.txt 的檔案,其他一概不開。
頻率限制。每部電腦每天最多五份報告,而同一個故障無論發生多少次,每天只傳送一次 — 這兩項限制都記錄在您自己的設定檔中,因此陷入當機循環的電腦會自行停止傳送,而不需要別人告訴它;傳送失敗的報告會在之後啟動時重試,最多三次,之後就不再理會。要把報告中的偏移量還原成函式名稱,需要該組建專屬的偵錯資料庫,而它只留在我們自己的電腦上,絕不會上傳到任何地方:解析是在本機進行,而不是在伺服器上。
應用程式絕不傳送的內容
- 您所調諧的頻率。一個人在收聽什麼,是這套軟體所知道最敏感的資訊,它絕不會被收集。在英國,攔截您未獲授權接收的訊息,或揭露其內容,屬於《無線電報法》(Wireless Telegraphy Act 2006) 第 48 條所定的罪行。
- 您所開啟檔案的名稱或路徑。錄音的檔案名稱是您自己的資料 — 它可能指出某項服務、某個地點或某個頻率。當 I/Q 檔案無法重新開啟時,記錄檔只會記下它未能重新開啟;名稱則留在螢幕上,而您本來就知道它。
- 任何解碼內容 — 呼叫器訊息、航空器、船舶、影像、衛星通訊。
- 您的位置,或您所接收的任何事物的位置 — 包括您設定的接收機位置,它絕不會在任何報告中傳送。詳見下文。
- 您的 IP 位址,或由它推得的任何位置。請求必然是從某個位址送達伺服器的,因為網際網路就是這樣運作的;使用情況端點不讀取任何連線資訊,也不寫入任何請求記錄。
- 硬體序號。無線電型號很有用;序號則能識別您的那一部無線電,因此會在傳送前移除。
- 您的姓名、您電腦的名稱、您的使用者帳戶,或任何檔案路徑。
- 完整的記憶體傾印。
接收機位置與 GPS
FoxSDR 需要知道接收機在哪裡,因為地圖與雷達幕上的每一個距離與方位都是從它量起的。您可以手動輸入、在地圖上點選,或從序列埠上的 GPS 接收器讀取。
位置留在您的電腦上。它儲存在您自己的設定檔中,絕不會被傳送 — 不在使用情況報告中、不在心跳訊號中、不在當機報告中,任何地方都沒有。從 GPS 讀取位置是由您發起的動作:您指定連接埠並按下「從 GPS 讀取位置」。連接埠只會被占用到取得第一個定位為止,而且最多 60 秒。診斷記錄檔會記錄連接埠名稱、鮑率、語句與衛星數目,以及任何錯誤 — 絕不記錄位置,也絕不記錄 NMEA 語句的文字。若連接埠欄位中的內容看起來不像連接埠,只會記錄它的種類與長度 (「a typed device path, 27 chars」),因此含有您使用者名稱的檔案路徑無法混進報告中。有兩項自動化測試確保這一點:一項針對記錄環形緩衝區,另一項針對實際應用程式所寫入的記錄檔。
外掛程式目錄
在您開啟外掛商店視窗時 (自 FoxSDR 0.99.16 起,為每個工作階段的第一次)、每當您在其中按立即檢查時,以及您選擇安裝某個項目時,才會連線到目錄。啟動時不會下載任何東西,視窗不會自行重新開啟,也沒有任何外掛程式會自行更新。目錄是發布在 GitHub 上的檔案 (raw.githubusercontent.com),因此這項請求會送達 GitHub 的伺服器,而它們 — 就像任何網路請求一樣 — 會看到請求的來源位址。請求中不會附帶任何屬於您的識別碼:沒有安裝識別碼、沒有 Cookie,也沒有任何可以與使用情況報告連結起來的東西。每一次下載都使用 HTTPS、有大小上限、遇到跨主機重新導向即拒絕,並在允許成為檔案之前,先對照目錄中公布的 sha256 進行驗證。來源是一項設定:您可以將它指向其他目錄,或指向您自己磁碟上的 index.json,這樣就完全不會發出任何網路請求。
衛星軌道根數
衛星外掛程式在載入期間,每十二小時會從其 satellite.cfg 中所列的來源下載一次軌道根數,讓資料保持最新。本網站在 GET /tle/all.tle 保存這些軌道根數的副本 — CelesTrak 的太空站、業餘與氣象群組,以及 NOAA 15、18 與 19,每十二小時在這裡更新一次 — 而且每當 satellite.cfg 中的所有來源都失敗時,Satellites 1.0.4 及更新版本會自動改用這個檔案,讓被 CelesTrak 拒絕的電腦仍然能夠追蹤。檔案中不必列出本網站,這項備援也會發生;檔案中若有一行 fallback-url none,就會關閉備援,而 refresh-hours 0 則會關閉所有下載。這項請求不攜帶任何識別碼、安裝識別碼或 Cookie,本伺服器也不會為它寫入任何分析記錄 — 與更新檢查一樣,只有頁面瀏覽與檔案下載會被記錄,而這個鏡像兩者皆非。軌道根數本身屬於 CelesTrak (celestrak.org),每一個回應也都會如此註明。
航空器登記資料查詢
選用的 Aircraft Info 外掛程式會顯示地圖上每架航空器的身分 — 註冊號、機型與營運者。應用程式本身絕不發出這項請求;是安裝該外掛程式才啟用了它。自 1.1.0 版起,外掛程式會先在 GET /api/aircraft/<address> 查詢本網站,而且只傳送航空器的六位十六進位 ICAO 位址 — 也就是航空器自己廣播的號碼 — 不附帶任何識別碼、安裝識別碼或 Cookie。每架航空器只查詢一次,答案保存在您自己的電腦上,因此不會再次查詢。只有當本網站不認識某架航空器或無法連線時,外掛程式才會像舊版一向的做法那樣,向免費的第三方服務 api.adsbdb.com 查詢。一部接收機所聽到的航空器集合,大致能透露它所在的位置,這也是這個外掛程式是選用的、並在安裝前事先說明的原因。
本伺服器針對查詢保存的內容:不保存任何單次請求的資料。不會寫入任何分析記錄,航空器位址與請求的來源位址也都不會被記錄。唯一的記錄是自伺服器上次啟動以來的五個累計總數 — 查詢、找到、未找到、格式錯誤與受速率限制 — 顯示在儀表板上。為了防止有人整批複製資料表,每個連線位址都有一個保存在記憶體中的查詢額度,做法與這裡的其他端點完全相同,而且絕不寫入磁碟;伺服器重新啟動時,或追蹤中的位址超過一萬個時 (以先發生者為準),這些額度就會被遺忘。
答案來自 OpenSky Network 航空器資料庫 (opensky-network.org):每架航空器的註冊號、機型代碼、製造商、型號,以及有記錄時的營運者。OpenSky 依現狀提供該資料庫,並請使用者引用:Matthias Schäfer、Martin Strohmeier、Vincent Lenders、Ivan Martinovic 與 Matthias Wilhelm,“Bringing Up OpenSky: A Large-scale ADS-B Sensor Network for Research”,載於 Proceedings of the 13th IEEE/ACM International Symposium on Information Processing in Sensor Networks (IPSN),2014 年 4 月。其中所記錄的登記所有人不會被複製到本網站,也不會由本網站提供,因為對私人航空器而言,那是一個人的姓名;只有營運者 — 航空公司、空軍或企業 — 會被複製與提供。
瀏覽器介面
FoxSDR 可以透過 HTTP 將介面提供給您自己網路上的其他電腦。它預設關閉,在您更改之前只綁定到您自己的電腦;綁定範圍超出本機時必須設定密碼,沒有密碼時會拒絕較廣的綁定,而不是將它開放。密碼以雜湊方式儲存 (PBKDF2-HMAC-SHA256),每當設定變更時工作階段就會撤銷。刻意不提供 TLS,因為應用程式沒有連結任何加密程式庫,也不會聲稱具備它無法提供的傳輸安全性 — 請在它前面加上反向代理或私人通道,並且絕對不要直接做連接埠轉送。您授予存取權的任何人,都能看到並控制接收機正在做的事。
從應用程式送出的功能建議
應用程式在主頁面上有一個「建議功能」方塊,您可以在其中輸入希望它做的事,然後按「傳送」。在您按下該按鈕之前,不會傳送任何東西,它絕不會自動傳送,而未能送達我們的建議也不會在背景排入佇列或重試 — 您輸入的內容會留在方塊中,只存在記憶體裡,等您再按一次「傳送」,而且絕不會寫入設定檔或記錄檔。以下就是一則建議的全部內容:
| 傳送內容 | 範例 | 原因 |
|---|---|---|
| 您輸入的內容 | Please add a squelch control to the FLEX decoder | 建議本身:10 到 100000 個字元。儲存前會移除控制字元;換行會保留。 |
| 聯絡方式 (若您有提供) | [email protected] 或呼號 | 選填,最多 120 個字元,以便我們提出後續問題。留白的話,這則建議就不含任何可以識別您的資訊。 |
| 應用程式版本 | 0.99.39 | 這則建議來自哪一個組建。 |
| 作業系統 | windows、linux 或 android | 由哪一個平台送出。 |
| 架構 | x64 或 arm64 | 同上。 |
| 結構描述編號 | 1 | 傳輸格式的版本,讓日後對格式的變更不會被誤認為上述任何欄位。 |
它會送到本網站的 POST /api/feature-request。您的 IP 位址只用於將傳送速率維持在合理範圍內,絕不會寫入磁碟 — 實際保存的記錄是您的訊息、您的聯絡地址 (若有提供)、應用程式版本、平台、架構,以及我們的查詢能從連線中判斷出來時的大致國家,除此之外別無其他。它由專案維護者在管理儀表板上閱讀,該儀表板與這裡的其他所有內容一樣受同一組密碼保護,並保存到從該儀表板刪除為止,或直到您提出要求為止。已處理的建議 — 已加入 FoxSDR,或以其他方式回覆 — 可能會在那裡封存而不是刪除,讓專案能夠追蹤大家要求過什麼、實際做了什麼;封存的建議仍會連同上列所有內容一起保存。如果您有提供聯絡地址並希望刪除這則建議,請寫信到下方的地址,並引用足夠的內容以便找到它。
從應用程式送出的錯誤回報與不喜歡的地方
應用程式在「建議功能」正下方有一個「回報錯誤 / 不喜歡」方塊,您可以在其中說明有東西故障,或有您不喜歡的地方,然後按「傳送」。它的運作方式與功能建議方塊完全相同:在您按下該按鈕之前,不會傳送任何東西,不會在背景排入佇列或重試,您輸入的內容只留在記憶體中 — 絕不會寫入設定檔,也絕不會寫入記錄檔。它不是當機報告,也不包含當機報告所包含的任何內容。以下就是一份回報的全部內容:
| 傳送內容 | 範例 | 原因 |
|---|---|---|
| 這是錯誤還是不喜歡 | bug 或 dislike | 您在方塊頂端所做的選擇:某個東西無法運作,或某個東西依設計運作,但您寧可它不要那樣。 |
| 您輸入的內容 | The waterfall freezes when I change the sample rate | 回報本身:10 到 100000 個字元。儲存前會移除控制字元;換行會保留。 |
| 聯絡方式 (若您有提供) | [email protected] 或呼號 | 選填,最多 120 個字元,以便我們提出後續問題。留白的話,這份回報就不含任何可以識別您的資訊。 |
| 應用程式版本 | 0.99.39 | 這份回報來自哪一個組建,以免再次追查已經修正的錯誤。 |
| 作業系統 | windows、linux 或 android | 由哪一個平台送出。 |
| 架構 | x64 或 arm64 | 同上。 |
| 結構描述編號 | 1 | 傳輸格式的版本,讓日後對格式的變更不會被誤認為上述任何欄位。 |
它會送到本網站的 POST /api/problem-report。您的 IP 位址只用於將傳送速率維持在合理範圍內,絕不會寫入磁碟 — 實際保存的記錄是這是錯誤還是不喜歡、您的訊息、您的聯絡地址 (若有提供)、應用程式版本、平台、架構,以及我們的查詢能從連線中判斷出來時的大致國家,除此之外別無其他。它由專案維護者在管理儀表板上閱讀,該儀表板與這裡的其他所有內容一樣受同一組密碼保護,而回報會保存到從該儀表板刪除為止,或直到您提出要求為止。已處理的回報 — 已在 FoxSDR 中修正,或以其他方式回覆 — 可能會在那裡封存而不是刪除;封存的回報仍會連同上列所有內容一起保存。如果您有提供聯絡地址並希望刪除這份回報,請寫信到下方的地址,並引用足夠的內容以便找到它。
網站:您造訪時會記錄什麼
無論您是否接受 Cookie,每一次頁面瀏覽與每一次下載都會寫入一筆記錄。這是第一方分析:資料留在提供本網站的伺服器上,不會與廣告聯播網分享,頁面上也沒有任何第三方指令碼。
| 記錄內容 | 來源 | 需要同意 |
|---|---|---|
| 日期與時間、所請求的頁面、HTTP 方法與通訊協定 | 請求本身 | 否 |
| 您的 IP 位址,以及其加鹽雜湊值 | 連線 | 否 |
| 大致位置:國家、地區、城市、郵遞區號範圍、時區,以及該城市的座標 — 而不是您的座標 | IP 位址,透過 ip-api.com 查詢 | 否 |
| 您的網路:網際網路服務供應商、組織、AS 編號,以及該位址是否為已知的 VPN、資料中心或行動網路 | 同一次查詢 | 否 |
| 瀏覽器及其版本、作業系統及其版本、裝置類型,以及該請求看起來是否為機器人 | User-Agent 標頭 | 否 |
是哪個頁面把您帶到這裡,以及連結上的任何行銷活動標記 (utm_source 等) | Referer 標頭與網址 | 否 |
| 偏好的語言 | Accept-Language 標頭 | 否 |
| 您下載了哪個檔案、其版本、傳送了多少位元組,以及傳輸是否完成 | 下載本身 | 否 |
| 螢幕與視窗大小、像素比、色彩深度 | 您的瀏覽器,由本頁面的指令碼回報 | 是 |
| CPU 核心數與大致的裝置記憶體 | 同一個指令碼 | 是 |
| 時區、語言清單、深色模式偏好、觸控支援、平台 | 同一個指令碼 | 是 |
| 連線類型、估計下行速度與往返時間 | 同一個指令碼 | 是 |
| 頁面顯示了多久、您捲動了多遠、點按了幾次,以及您按了哪些按鈕 | 同一個指令碼 | 是 |
刻意不做的事
- 不做瀏覽器指紋辨識:不探測 Canvas、音訊、字型或 WebGL,也不做任何試圖在您拒絕後重新識別您的事。
- 沒有第三方追蹤器、廣告像素、社群小工具或分析服務。本頁面上沒有任何內容是從其他網域載入的。
- 不會嘗試讀取您的剪貼簿、電池、相機、麥克風、已儲存的密碼或瀏覽記錄 — 這些都與下載頁面毫無關係。
- 您的資料不會被出售、出租或與任何人分享。伺服器唯一會針對您發出的對外請求,就是上述的 IP 位置查詢。
您發布的介面設計
本網站可以保存您選擇發布的 FoxSDR 介面設計(一個 .foxui 套件)。在您按下 Publish 之前不會傳送任何內容,傳送目標是 POST /api/gui/publish。保存的就是套件中的內容:設計本身、您輸入的名稱、版本與說明、您輸入的作者名稱(如有)、發布時間,以及一個隨機識別碼。您的 IP 位址只用於將發布頻率維持在合理範圍內,絕不會寫入磁碟。已發布的套件不會出現在任何清單中;任何擁有其連結的人都可以下載。它會一直保存,直到在管理後台被刪除,或直到您提出要求 — 請寫信到下方地址並附上它的連結。
如果您報名成為 Beta 測試人員
Beta 表單與最新消息訂閱,是本網站唯一會向您索取任何資料的地方(發布介面設計除外,見上文)。送出表單會儲存您的電子郵件地址,以及您選擇提供的下列任何項目:姓名或呼號、您的平台、您打算使用的無線電、您的備註,以及您自願測試的功能清單。除此之外,我們還會保存上文所述的同樣造訪情境 — 大致位置、網路、瀏覽器與作業系統 — 因為錯誤回報的解讀方式,會因為它來自哪種設定而大不相同。
- 地址只用於一件事:就 Beta 組建與測試項目與您聯絡。沒有電子報、沒有行銷,也絕不會提供給任何其他人。
- 在您確認之前,什麼都不會發生。報名後會寄出一封附有六位數驗證碼的電子郵件,您將它輸入頁面,以確認這個地址屬於您。驗證碼在 30 分鐘內有效,輸入錯誤五次即會被拒絕。在輸入之前,這筆資料不會起任何作用:您不在測試人員名單上、不會被計入,也不會再收到任何郵件。如果是別人輸入了您的地址,請忽略那封電子郵件,這筆資料就永遠不會生效 — 沒有需要取消訂閱的東西,您也不必採取任何行動。那一封信,就是一次報名唯一可能產生的自動郵件。
- 如果您曾寫信給我們,我們可能會邀請您。曾寫信給我們並留下地址的人 — 例如透過應用程式的建議功能方塊 — 可能會收到我們寄出的一封私人邀請,其中附有一個一次性連結,可開啟本網站的「確認」按鍵。這份邀請與未確認的報名一樣,以待處理資料的形式保存:除非您按下「確認」,否則您不是測試人員,也不會被計入;若您不予理會,我們也不會再寫信給您。待處理資料不會自行過期;在我們將它從名單中清除時,或在您提出要求時 (寄一封電子郵件到下方地址即可),它就會被刪除。
- 在您確認之後,您會收到私人管理連結,而當有需要您所提供之測試項目的組建推出時,我們就會寫信給您。那是一個人在寫信給您,而不是郵寄名單。如果您遺失了連結,我們可以為您重新核發一個:舊連結立即失效,新連結以郵件寄給您,我們會保存核發的時間以及郵件是否已寄出。
- 那些電子郵件會經過 Apple。
foxsdr.com的郵件由 Apple 的 iCloud 郵件服務傳遞,因此您的地址與郵件內容在送達您的途中會經過他們的伺服器,並適用他們作為我們郵件服務供應商的條款。除此之外,不會有任何關於您的資料傳送給他們。 - 它與分析資料分開保存。報名資料存放在它自己的檔案中,只有執行伺服器的帳戶能夠讀取;分析記錄只記下發生了一次報名,以及挑選了多少項功能,絕不記錄是誰。只要有地址進入分析記錄,一項自動化測試就會讓組建失敗。
- 使用已在名單上的地址再次報名,不會變更那筆資料。變更需要在您自己的測試者頁面上進行。取而代之的是,我們會向該地址寄出一封郵件:若已確認,內容是它的專屬連結;若尚未確認,則是一組新的驗證碼,而且每 15 分鐘最多寄出一次。
- 我們會保存寄給您的郵件副本。本網站寄給測試人員的每一則訊息 — 確認信,以及每一則關於組建的訊息 — 都會連同內文一起保存,讓我們能看到說了什麼、是否已送達。副本以您的內部 ID 歸檔,而不是您的地址,其中的個人部分 (驗證碼或確認連結,以及您自己的管理連結) 會在儲存前移除,因此保存的訊息絕不可能被用來冒充您。當您退出時,這些副本會與您的其餘資料一起刪除。
- 您與我們之間的訊息會被保存。測試人員入口中的「訊息」欄是您與 FoxSDR 開發者的對話:我們寫給您的內容和您的回覆,每則都附有寫下的時間,如果您有選擇,還會附上它所涉及的您的回報。對話以您的內部編號保存,而不是以您的電子郵件地址,只有您(憑您的私人連結)和我們看得到。我們也會記錄我們的訊息何時顯示在您的螢幕上,以便知道訊息已送達。頁面開啟時,它每隔幾秒詢問一次新訊息,所以訊息一寫好就會出現,同時告知您距上次使用頁面已過多久;在它持續詢問期間及之後半分鐘內,並且僅當您在最近五分鐘內使用過頁面時,伺服器才知道您在頁面上。這只保存在伺服器記憶體中,從不寫入紀錄。我們不會為每則訊息寄郵件:您不在時我們寫了訊息,您會收到一封簡短的郵件,告訴您有訊息在等您,郵件中有您的連結,但不含訊息本身。在那則訊息未讀期間,最長 12 小時內不會再寄這樣的郵件,距上一封不足半小時也不會寄;如果我們寫訊息時您在頁面上,但十分鐘後仍未看到該訊息,郵件就會在那時寄出。這封郵件的副本會依上文所述保存;您寫信時,不會寄出任何郵件。對話會一直保存,直到您退出或要求我們刪除,退出時會全部刪除。
- 保存到 Beta 測試計畫結束,或直到您提出要求為止。寄一封電子郵件到下方地址,即可將您移除並刪除資料 — 您不需要提出任何理由。
- 此處的法律依據是您的同意,由勾選方塊的方式表示;未勾選時,表單不會送出。
如果您訂閱電子郵件最新消息
最新消息頁面只要求一件事:您的電子郵件地址。保存它是為了在 FoxSDR 推出新版本時寄電子郵件給您,偶爾也會告訴您正在打造什麼。它不會用於其他任何用途,也絕不會提供給任何人。
- 在您確認之前,什麼都不會發生。訂閱後會寄出一封附有六位數驗證碼的電子郵件,讓您輸入頁面。在輸入之前,不會寄送任何其他郵件,而且一週內未確認的地址會被刪除 — 由伺服器上每天執行的程式碼處理。如果是別人輸入了您的地址,請忽略那封電子郵件。
- 每封電子郵件都附有一個連結,按一下就能將您從名單中移除。退出後,地址會從伺服器的檔案中刪除,我們為它保存的寄件副本也會一併刪除;不會保留任何與它有關的資料。
- 它是獨立的名單。最新消息訂閱者並不是 Beta 測試人員:地址保存在另一個檔案中,只有執行伺服器的帳戶能夠讀取,而且不會被計為或顯示為測試人員。如果您同時也是測試人員,每則訊息只會收到一次。
- 我們會保存寄給您的郵件副本,以內部 ID 而非您的地址歸檔,並移除驗證碼與取消訂閱連結,做法與測試人員完全相同。
- 那些電子郵件會經過 Apple,詳見上文測試人員部分的說明。
- 分析記錄只記下發生了一次訂閱,絕不記錄是誰。
- 法律依據是您的同意,由勾選方塊的方式表示;未勾選時,表單不會送出。
Cookie
| Cookie | 用途 | 期限 |
|---|---|---|
fox_consent | 記住您是接受還是拒絕,讓您只會被詢問一次 | 1 年 (接受) / 6 個月 (拒絕) |
fox_vid | 一個隨機識別碼,讓再次造訪時能被辨識為同一個瀏覽器。只有在您接受時才會設定。 | 400 天 |
fox_sid | 將一次連續瀏覽歸為一個工作階段。只有在您接受時才會設定。 | 閒置 30 分鐘 |
fox_beta | 保存您的 Beta 測試人員連結,讓您能回到自己的資料。只有在您報名成為測試人員時才會設定,而且只是因為那正是您所要求的事 — 它不做任何量測,因此不屬於上述的分析選擇。將自己移除時會一併清除。 | 400 天 |
foxsdr_lang | 記住您為本網站選擇的語言,讓下一個頁面也使用該語言。只有在您自行選擇語言時才會設定 — 透過語言選擇器,或透過帶有 ?lang= 的連結 — 而且只保存該語言的代碼,例如 es。它不做任何量測,因此不屬於上述的分析選擇。 | 1 年 |
fox_news_joined | 不是 Cookie:這是您瀏覽器自身儲存空間中的一個旗標,絕不會傳送給我們。下載之後,網站會詢問您是否想透過電子郵件接收最新消息;一旦您從這個瀏覽器完成訂閱並確認,它就不會再詢問。它只保存 1,而且只有在您訂閱後才會存在。 | 直到您清除本網站的資料為止 |
如果您拒絕,就不會設定任何識別性 Cookie。此時造訪會以您的位址與瀏覽器的每日輪替雜湊值來分組,這只能為了計數而區分訪客,無法用來跨日或跨網站追蹤您。您可以清除本網站的 Cookie 並重新載入頁面,以改變您的選擇。
您看到的是哪種語言
頁面可以用英文以外的語言顯示。您看到哪一種語言,是由伺服器針對您請求的每個頁面決定,順序如下:您自己選擇的語言 (上述的 foxsdr_lang Cookie,或連結中的 ?lang=);否則是您的瀏覽器透過 Accept-Language 標頭表示您偏好的語言;否則是您連線所在國家的主要語言,這由位於本網站前端的網路 Cloudflare 以兩個字母的國家代碼 (CF-IPCountry) 隨請求一併傳遞;否則就是英文。做這個選擇不需要儲存任何東西:標頭與國家代碼只在該次回應中讀取,不會為此保存。它們正是上表所列、每次頁面瀏覽都會記錄的那兩項資料,其中國家代碼是在我們自己的位址查詢查不到結果時使用。譯文由機器翻譯產生,而在本聲明與授權條款上,具有約束力的是英文版本。
原因與法律依據
目的很單純:了解有多少人發現這個專案、他們大致在哪裡、在什麼環境上執行它,以及有多少人接著下載。這決定了這項工作是否繼續,以及接下來要打造什麼。
伺服器端記錄是基於了解與保護本網站的正當利益而保存。由瀏覽器回報的詳細資料與識別性 Cookie,則是基於您的同意而保存,這也是它們被放在橫幅之後、而且在本網站上拒絕不會讓您有任何損失的原因。
保存多久,以及誰能看到
記錄保存 24 個月後刪除。它們存放在伺服器上的一個檔案中,位於只有專案維護者能開啟、受密碼保護的儀表板之後。除了上文已說明的 IP 查詢之外,沒有其他接收者,也不會傳輸到第三國。
有兩類資料保存得更短。當機與無回應報告會在其所描述的故障最後一次出現後 90 天刪除,而 Cloudflare 處理的使用情況報告則在三個月後刪除。這兩個期限都由伺服器上每天執行的程式碼強制執行,而不是靠誰記得去做。
您的權利
如果您位於英國或歐盟,您可以要求取得我們所保存關於您的資料副本、要求更正或刪除,或反對資料被收集 — 包括不依賴同意的伺服器端記錄。要找出您的記錄,實際可用的識別依據是您造訪時的 IP 位址,因此請一併提供該位址以及您大約的造訪時間。
至於應用程式,控制項就在軟體本身之中,共有三個:
- 系統 → 使用情況報告會停止使用情況報告與每五分鐘一次的心跳訊號,並刪除安裝識別碼。日後重新開啟時,您會得到一個無法與舊識別碼連結的新識別碼。
- 系統 → 診斷會停止寫入或傳送當機與無回應報告。
- 系統 → 更新會停止更新檢查。
這些報告不包含任何可以與您連結的資訊,因此沒有可供請求存取的內容;如果您希望從已傳送的報告中移除某個安裝識別碼,請寫信到下方地址並附上該識別碼,它就會被刪除。
兒童。FoxSDR 是供無線電愛好者使用的技術儀器。它並非以兒童為對象,不向任何人收集個人資訊,因此也不會向兒童收集任何資訊。
請寫信至 [email protected]。如果您認為這件事處理不當,也可以向英國資訊專員辦公室 (Information Commissioner's Office,ico.org.uk) 提出申訴。
最後更新:2026 年 9 月 24 日,依據 FoxSDR 0.99.39 — 也就是本網站目前提供的組建,以上每一項說明都已對照其原始碼核實。FoxSDR 由 Steven Fox 發行;對本聲明有任何疑問,或要從已傳送的報告中刪除安裝識別碼,請寫信到上述地址。如果本聲明與軟體的實際行為不再相符,錯的是軟體 — 網站的資料收集實作於 store.go 與 app.js,兩者都可以在網站自己的原始碼中閱讀,而應用程式自己的清單則以 PRIVACY.md 的形式隨應用程式一起發布,並有一項測試確保傳送內容與它相符。