隱私權與 Cookie
本聲明涵蓋兩件不同的事物:您安裝的 FoxSDR 應用程式,以及本網站。兩者收集不同的資料,目的也不同,因此在下文分開說明 — 先說明應用程式,因為那是在您自己電腦上執行的部分。本聲明力求完整而非簡短:兩者儲存的每一個欄位都列在其中,包括大多數聲明都略去不提的欄位。
應用程式:它會傳送什麼
沒有帳號、沒有授權金鑰、不需啟用,而且 FoxSDR 絕不回報任何與您收聽內容有關的資訊。它自己主動發出的網路請求只有四種:更新檢查;匿名使用情況報告,以及應用程式開啟期間一個很小的「仍在執行」心跳訊號;發生故障後的當機或無回應報告;以及 — 只有在您開啟外掛商店或在其中按「立即檢查」時 — 對外掛程式目錄的請求。以下逐欄說明每一種請求,而每一種都可以關閉。共有三個開關控制它們:系統 → 更新、系統 → 使用情況報告與系統 → 診斷。沒有任何功能需要開啟其中任何一個,關閉任何一個也不會有任何東西來煩您。
留在您電腦上的內容
您的錄音 (包括音訊與原始 I/Q)、SSTV 與氣象衛星解碼器所建立的影像、解碼器所解出的一切、您的書籤、頻段規劃、設定、接收機位置以及已安裝的外掛程式,都是您自己磁碟上的檔案。沒有任何東西會上傳它們,您所調諧的任何頻率也不會離開您的電腦。
更新檢查
應用程式每次啟動時會詢問本網站一次是否有較新的版本。整個請求就是 GET /api/update?v= 後接您正在執行的版本 — 沒有識別碼、沒有安裝識別碼、沒有 Cookie,也沒有任何可以與之後的請求連結起來的東西。本伺服器不會為它寫入任何分析記錄:只有頁面瀏覽與檔案下載會被記錄,而更新端點兩者皆非。在系統 → 更新中將它關閉,應用程式就再也不會連線到這項服務。
回應中也可能附帶我們給舊版本使用者的簡短訊息,例如告知某個版本修正了值得更新的問題,並顯示在與版本說明相同的更新橫幅中。為此不會額外傳送或記錄任何資料:它隨上述同一個請求、依同一時程、受同一個開關控制。
除非您按下按鈕,否則不會下載或安裝任何東西。如果您按了,安裝程式會透過 HTTPS 從本網站下載,並在檔案被賦予任何程式都能執行的名稱之前,先將其 SHA-256 與伺服器公布的摘要值核對 — 而這次下載就是從本網站進行的一般下載,因此會和其他下載一樣被記錄,包括本聲明網站部分所說明的 IP 位址、大致位置、瀏覽器與作業系統。
從 Microsoft Store 安裝的版本改為詢問 Microsoft Store,絕不會詢問本網站(自 FoxSDR 0.99.53 起)。勾選 系統 → 更新 → 啟動時向 Microsoft Store 查詢更新 後,FoxSDR 每次啟動會向 Windows 本身的 Store 服務詢問是否有此版本的較新套件。該請求不會傳送任何 FoxSDR 的資料,沒有版本、沒有識別碼:Windows 是以應用程式已有的套件身分向 Microsoft 識別它,與 Store 自己的背景更新相同。回應只會留在應用程式內。除非您按下從 Microsoft Store 安裝並確認 Windows 顯示的對話方塊,否則不會下載或安裝任何東西;之後的下載與安裝由 Microsoft 負責,適用 Microsoft 的隱私權聲明。取消勾選後,就不會詢問 Store。
使用情況報告
自 0.53.0 版起提供匿名使用情況報告,位於系統 → 使用情況報告。它預設為開啟,您可以將它關閉 — 取消勾選該方塊,報告就會立即停止。每次啟動會傳送一份報告,描述剛結束的工作階段,而以下就是它的全部內容:
| 傳送內容 | 範例 | 原因 |
|---|---|---|
| 安裝識別碼 | 32 個隨機十六進位字元 | 用來區分 100 位使用者與同一位使用者啟動 100 次。首次執行時在您的電腦上隨機產生,關閉報告時即刪除,而且絕不從您的硬體、網路或名稱衍生而來。 |
| 應用程式版本 | 0.99.42 | 了解使用者是否會更新。Android Alpha 版會將自己的組建回報為 0.98.1-android.4 — 在其所依據的版本號碼後加上 -android.N 尾碼,因此它的報告絕不會與 Windows 安裝程式的報告混淆。 |
| 作業系統 | Windows 10.0.22631、Linux 6.8.0 或 Android 14 | 了解實際使用的是哪些平台。作業系統及其組建、核心或版本號碼,絕不包含您電腦的名稱或使用者帳戶。Linux 組建 (0.99.42) 與 Android Alpha 版 (0.98.1-android.4) 在同一個開關下傳送相同的欄位。 |
| 架構 | x64 或 arm64 | 同上。 |
| 安裝方式 | installer | 以下之一:store(Microsoft Store)、installer(Windows 安裝程式)、appimage 或 tarball(Linux 與 Raspberry Pi 下載),或者 android。從執行中的程式中讀取,安裝時從不記錄。無法區分 foxsdr.com 與 GitHub,因為兩者提供的是相同的檔案。 |
| 首次執行 | 2026-09-29 | 建立您的安裝識別碼的日期(UTC)——絕不是時間。關閉回報後會連同識別碼一起刪除。用於區分新使用者與長期使用者。識別碼早於 FoxSDR 0.99.47 的副本此欄為空。 |
| 首個版本 | 0.99.47 | 建立該識別碼的版本——也就是您最初使用的下載版本。會連同識別碼一起刪除,就像首次執行一樣。 |
| 啟動次數 | 12 | 了解軟體是否被使用超過一次。 |
| 當機次數 | 1 | 了解它失敗的頻率。 |
| 依原因分類的非正常結束,自 FoxSDR 0.99.69 起 | 1, 0, 0, 0 | 上方的當機次數會計入每一次未正常關閉而結束的工作階段,包括當機,也包括從工作管理員結束視窗或斷電。以下四個數字說明了實際原因:died(FoxSDR 本身失敗:當機,或視窗停止繪製後被結束)、killed(在正常運作時被外部結束,例如工作管理員、taskkill、安裝程式、關閉的主控台視窗)、ended by the system(登出或關機)以及 unknown(沒有任何記錄:診斷已關閉,或斷電)。每一次非正常結束都только屬於其中一類。它們只是單純的數字,與當機次數一樣永不重設:不會附加報告文字、結束代碼、模組名稱或時間。FoxSDR 會在下次啟動時,於您的電腦上根據診斷已寫入的報告判斷;診斷關閉時不會讀取任何內容,所有非正常結束都會算作 unknown。上一次工作階段的開始時間保存在您的設定檔中,以便只檢視之後寫入的報告;這個時間絕不會被傳送。 |
| 顯示停滯(自 FoxSDR 0.99.62 起) | 0 | 視窗無回應的次數,原因是顯示驅動程式在等待,而不是 FoxSDR — 螢幕被關閉、圖形驅動程式被重設、遠端桌面工作階段重新連線。它只是一個單純的數字,不含堆疊、驅動程式名稱和時刻:這類無回應的報告只留在您的電腦上,絕不會傳送。只有在使用情況報告與診斷都開啟時才會計數。為了讓您從工作列結束的無回應也能被計入,這個數字會連同您的安裝識別碼一起,存放在設定檔旁一個名為 telemetry-stalls 的小檔案中,直到伺服器接受了帶有該數字的報告為止;關閉使用情況報告會刪除該檔案。 |
| 失敗計數,自 FoxSDR 0.99.64 起 | radio_fail.rtlsdr.busy=2 | 某件事悄悄失敗了多少次,依固定的種類清單計數:打不開的 SDR(驅動程式和八種原因之一)、沒有聲音輸出、失敗的更新或外掛程式安裝、載入時被拒絕的外掛程式、無法開始的錄製——以及實際成功開啟的 SDR 和聲音輸出有多少,好讓失敗有可比較的對象。只有清單中的詞語和數字,絕不包含裝置名稱、序號、路徑、頻率或任何訊息文字。只有在使用情況報告與診斷都開啟時才會計數,大多數人的這個欄位是空的。 |
| 緩慢畫面與復原,自 FoxSDR 0.99.65 起 | slow.rail.250ms=3,recovered.audio=1 | 同一欄位還包含:視窗繪製某一個畫面過慢的次數,以及發生在繪製的哪一部分(固定清單中的十八個部分之一)、屬於三種時間長度中的哪一種(四分之一秒、一秒或五秒);還有 FoxSDR 遇到故障並自行繼續執行的次數,發生在固定清單中的十三個位置之一:聲音輸出重新啟動、SDR 在驅動程式故障後重新開啟、設定儲存失敗等等。只有這些清單中的詞語和數字,絕不包含裝置名稱、序號、路徑、頻率或任何訊息文字。只有在使用情況報告與診斷都開啟時才會計數,大多數人的這個欄位是空的。 |
| 工作階段長度 | 3600 秒 | 了解工作階段是以分鐘還是小時計。 |
| SDR 型號 | uhd b200 | 了解應優先支援哪些無線電。傳送前會去除序號。 |
| 使用過的解調器及使用時間 | WFM: 3000s | 了解哪些模式值得進一步投入。 |
| 開啟過的面板 | map, decoded | 了解哪些功能有人使用。 |
| 已安裝的外掛程式 | ADS-B 1.0.0 | 了解哪些解碼器值得進一步投入。您從自己加入的外掛程式網站安裝的外掛程式 (自 FoxSDR 0.99.74 起) 與其他已裝外掛程式一樣:它的名稱與版本會出現在這裡,網站的位址則不會。 |
以上就是完整清單。它以 PRIVACY.md 的形式隨應用程式一起發布,並有自動化測試逐欄驗證傳送內容,因此若要新增欄位,必然會讓該測試失敗,並須同時更新這兩份文件。關閉報告會刪除安裝識別碼,因此日後若重新開啟,您會得到一個無法與舊識別碼連結的新識別碼。
報告會在啟動時傳送,描述已經結束的工作階段,絕不會在結束時傳送 — 因為在關閉時進行網路呼叫,可能讓使用者正要關閉的應用程式停住,而在結束時寫入的報告,偏偏會在最值得計算的那種事件中遺失。回應中的任何內容都不會被讀取或據以採取行動。
失敗計數詳解(自 FoxSDR 0.99.64 起)。該欄位是由 kind=count 配對組成的一小段文字,例如 radio_fail.rtlsdr.busy=2——一個因為另一個程式正在使用而兩次打不開的 RTL-SDR。FoxSDR 用一張固定的表來建構每一種類,表中沒有的內容一概不傳送,接收的伺服器也會捨棄不在同一張表中的所有內容。當原因是從驅動程式所說的內容中讀取出來時,FoxSDR 會從固定清單中挑出一個詞,並捨棄那句話。為了讓隨後當機的工作階段中的失敗也能被回報,這些計數會連同您的安裝識別碼一起,存放在設定檔旁一個名為 telemetry-health 的小檔案中,直到伺服器接受了帶有這些計數的報告為止;關閉使用情況報告會刪除該檔案。
緩慢畫面與復原詳解(自 FoxSDR 0.99.65 起)。它們位於同一欄位中,採用同樣的 kind=count 形式。slow.rail.250ms=3 表示視窗有三個畫面,每個畫面耗時四分之一秒或更久,發生在繪製中屬於功能表欄的那一部分。該部分是十八個詞之一,events, frame-start, pre-draw, plugin-panels, toolbar, rail, spectrum, patch, status, dialogs, polls, saves, render, present, recorder, plugins-reload, startup, other;而慢到什麼程度是三種之一:250ms 表示四分之一秒到不足一秒,1s 表示一秒到不足五秒,5s 表示五秒或更久。您回應 Windows 提示、拖曳視窗或調整視窗大小所花的時間會被扣除,絕不計入。recovered.audio=1 表示 FoxSDR 遇到一次故障並自行繼續執行。該詞是十三個位置之一,audio, reopen, srcthread, vendorcall, ringdrop, dspexc, cfgsave, enumchild, pluginapi, webroute, patchload, sdrenum, sdrlost,順序如下:聲音輸出停止,監視器將其重新啟動;SoapySDR 的 SDR 驅動程式發生故障,FoxSDR 自行重新開啟了 SDR;接收器停止時,SDR 驅動程式始終沒有從讀取中返回,FoxSDR 放棄了該執行緒;對 SoapySDR 廠商模組的呼叫沒有及時返回,被放棄;SDR 送出取樣的速度快於被取走的速度,部分取樣被捨棄;訊號處理執行緒擲出了一個已被攔截的錯誤,接收器停止;無法寫入設定檔;透過 SoapySDR 列出 SDR 的輔助程式終止了,並被隔離;外掛程式對 FoxSDR 的一次呼叫擲出錯誤,並以預設值回應;網頁介面的處理常式擲出錯誤,伺服器以失敗回應;已儲存的接線圖載入時缺少了一些連線;SDRplay 服務沒有回應一次掃描,該掃描被放棄;SDRplay 工作階段遺失,SDRplay 在本次工作階段其餘的時間裡被關閉。FoxSDR 用一張固定的表來建構其中每一項,表中沒有的內容一概不傳送,接收的伺服器也會捨棄不在同一張表中的所有內容,因此絕不會出現裝置名稱、序號、路徑、頻率或任何訊息文字;一份報告最多攜帶最嚴重的八種緩慢畫面和八種復原。它們與失敗計數受同樣的兩個開關控制,只有在使用情況報告與診斷都開啟時才會計數,它們存放在設定檔旁同一個名為 telemetry-health 的小檔案中,直到伺服器接受了帶有它們的報告為止,並且關閉使用情況報告會刪除該檔案。
「仍在執行」心跳訊號
在應用程式啟動時送達的報告,只能說明誰啟動了它,永遠無法說明誰仍開著它。因此,在 FoxSDR 執行期間 — 而且只有在使用情況報告開啟時 — 它還會每五分鐘傳送一則非常小的訊息,其中只有三個欄位,別無其他:
| 傳送內容 | 範例 | 原因 |
|---|---|---|
| 安裝識別碼 | 與上述相同的 32 個十六進位字元 | 這樣來自同一份副本的十二次心跳訊號,只會算作一份執行中的副本,而不是十二份。 |
| 應用程式版本 | 0.99.42 | 這樣「目前執行中」的數字才能依版本細分。 |
| 心跳標記 | 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 例外代碼。尤其,正是這一項說明某個故障是被吸收的 — 應用程式撐過了它 — 而不是當機;少了它,兩者看起來完全一樣。只是一個代碼與一句固定的句子,絕不是內容。 |
| 無回應發生在視窗繪製的哪一部分,自 FoxSDR 0.99.64 起 | rail | 僅限無回應報告:停止時視窗繪製的哪一部分正在進行,以固定的十九個詞的清單中的一個詞表示:events, frame-start, pre-draw, plugin-panels, toolbar, rail, spectrum, patch, status, dialogs, polls, saves, render, present, recorder, plugins-reload, startup, user-wait, other。它只指明程式的某個部分,絕不是外掛程式、檔案、SDR 或頻率。同一個詞也會出現在報告的原因中,作為固定句子 freeze: the frame was in rail 傳送;不在清單中的詞會被捨棄,不會傳送。以前的無回應報告完全不傳送原因。 |
| 已載入的外掛程式及其版本 | ADS-B 1.1.0 | 「只在載入 ADS-B 外掛程式時當機」是故障描述;「有時候會當機」則不是。 |
| 執行緒堆疊 | 每個框架 cascade.exe+0x1a2b | 堆疊就是故障本身。它只有模組名稱、組建 ID 與數字偏移量 — 沒有原始碼路徑、沒有變數、沒有記憶體內容。自 FoxSDR 0.99.63 起,無回應報告中位於 FoxSDR 啟動後才載入的模組(系統重新載入的圖形驅動程式、廠商的 DLL、殼層擴充功能)內的框架,會以該檔案的名稱(絕不是資料夾路徑)和偏移量傳送,此前則是以單純的位址傳送。檔案名稱可能顯示您的電腦上安裝了什麼軟體;這些報告對於啟動時載入的驅動程式,本來就包含同類的名稱。 |
| 工作階段記錄檔的結尾 | opened rtlsdr | 應用程式最後記錄的幾行,通常就是它在失敗時正在做的事。這是應用程式自己的記錄檔:它記錄狀態變化 — 已開啟來源、已設定速率、已啟動外掛程式 — 絕不記錄訊號內容,也絕不記錄您所開啟檔案的名稱或路徑。它也包含無線電驅動程式所說的內容,以及其程式庫輸出到標準錯誤串流的內容。這份記錄檔的任何一行在離開您的電腦之前,無論是應用程式自己的行還是驅動程式的行,都會先經過清理:序號和 USB 裝置識別碼中因裝置而異的部分會被取代為 <stripped>,檔案路徑中的帳戶名稱會被取代為 <user>,單引號內的任何內容(例如您為接線節點和喇叭所取的名稱)會被取代為 '<name>';自 FoxSDR 0.99.59 起,每個網路位址以及每個電腦名稱或主機名稱都會被取代為 <host>,其後的連接埠號碼會保留,序列埠的編號則會被取代為 #(COM#、/dev/ttyUSB#);在任何提到赫茲、頻率、調諧、中心、範圍、偏移、載波、預設或發射的行中,每個數字都會被取代為 #,除非它被標示為取樣率、時間、強度、大小或計數,屬於版本、識別碼或錯誤碼,或是 R820T 這類名稱的一部分;USB 驅動程式列出已連接到您電腦的裝置的那些行則會被省略,並以一行說明有多少個裝置。自 0.99.59 起,應用程式完全不再於記錄檔中寫入音效卡的名稱,因為這個名稱往往是使用者自己取的。自 0.99.61 起,應用程式還會在記錄檔中記錄音效輸出何時開啟或被拒絕:音效驅動程式的型號、聲道配置和取樣率,但絕不記錄音效裝置的名稱。 |
| 情境註記 | mode: WFM, sampleRate: 2400000 | 應用程式附加的幾則鍵/值註記:模式、來源 (產生器、I/Q 檔案或真實無線電)、取樣率、是否已開啟裝置、已去除序號的 SDR 型號、應用程式已執行了多少秒,以及故障執行緒當時執行的是 FoxSDR 自己的程式碼還是無線電驅動程式的程式碼。sampleRate 是取樣率,不是調諧頻率。 |
| 頻率校正,自 FoxSDR 0.99.56 起 | ppm: +1.5 by retuning | 無線電的晶體校正是否開啟、其以百萬分之一(ppm)表示的數值,以及套用方式(in the radio 或 by retuning),或 off。它描述的是無線電的晶體,而不是某個頻率:完全無法得知您在收聽什麼。 |
| 處理程序中其他軟體的 DLL,自 FoxSDR 0.99.69 起 | foreignModules: NahimicOSD.dll, RTSSHooks64.dll | 載入 FoxSDR 的其他程式元件的檔案名稱(絕不包含資料夾、版本或檔案的其他任何資訊):即每個已載入、但既不屬於 Windows 本身、也不屬於 FoxSDR(其程式資料夾、外掛程式、C++ 執行階段),亦非 FoxSDR 刻意載入的 SDR 廠商驅動程式檔案的模組。這會揭露其他軟體 DLL 的名稱,例如音訊驅動程式的螢幕覆蓋層、影格率計數器、防毒或輸入工具的攔截程式;而檔案名稱可顯示您的電腦上安裝了哪些軟體,因此在此說明。Windows 資料夾中的檔案不會列入,使清單簡短而有意義。之所以收集,是因為 FoxSDR 在圖形驅動程式交接過程中結束的回報,而會把自己注入每個處理程序的程式也在此掛接,導致無從得知處理程序中還有什麼。相同的名稱也會寫入應用程式記錄(modules: 2 foreign - ... 在啟動時寫入一次,module arrived: ... 在之後載入時寫入),因此這些行可能出現在上方工作階段記錄的結尾。若回報未提供則此值為空,這裡最多保留 520 個字元。 |
| The window’s start-up and the graphics adapter, from FoxSDR 0.99.78 | window: GL vendor NVIDIA Corporation; renderer NVIDIA GeForce RTX 4090/PCIe/SSE2; version 4.6.0 NVIDIA 610.88 | Lines the application writes to its log while its window is being created, each beginning window:, which therefore ride in the tail of the session log above: which window systems this build of the window library supports; on Linux, whether DISPLAY and WAYLAND_DISPLAY are set (set or not set — never their values, which can name a computer or a session), the session type when it is one of a fixed list of words, and which window system was chosen; the window library’s own error messages, with the display’s name left out; and the graphics driver’s own vendor, renderer and version strings, which name the make and model of your graphics adapter and its driver — a graphics fault cannot be told apart without them, and they say nothing about you. On Linux, a report of a process that ended before its window appeared now also says how it ended: an exit status, or a signal number whose name comes from a list of twelve (exit code 3 (the process ended itself), killed by signal 11 (SIGSEGV)), written down by FoxSDR itself as it ends, as a number behind a fixed tag; unknown when nothing was written, which is what an ending by SIGKILL leaves. |
| 安裝識別碼 | 32 個隨機十六進位字元,或空白 | 用於限制傳送速率,之後即丟棄:安裝識別碼不會被儲存。陷入當機循環的電腦不能淹沒伺服器,而分辨一部電腦與一百部電腦,是讀取它的唯一目的。它在這裡絕不會寫入磁碟。如果使用情況報告已關閉,它會以空白傳送 — 此時並不存在識別碼,而當機報告也絕不會產生識別碼。 |
已在 FoxSDR 0.99.33 修正。在 0.99.33 之前,上述的清除處理只套用於無線電驅動程式的行,而未套用於應用程式本身的行,因此應用程式本身的少數行可能進入當機或無回應報告,並帶有您所要求或正在發射的頻率、patch 無線電的標籤(可能包含其序號)、您為 patch 元件取的名稱、patch 頁面上解碼器產生的第一行文字,以及 USB 驅動程式列出的 USB 裝置清單(含序號)。這與本聲明相牴觸。自 0.99.33 起,每一行在離開您的電腦之前都會經過清除,而且這些記錄行本來就不再包含上述值。
已在 FoxSDR 0.99.59 中更正。本聲明一直說當機報告不包含電腦名稱、應用程式絕不會傳送您的 IP 位址,但在 0.99.59 之前,清理並不會尋找網路位址或主機名稱。因此,少數記錄行可能會進入當機或無回應報告,或回報錯誤時附上的診斷紀錄,其中帶有您為 ADALM-Pluto 之類的網路無線電輸入的位址或主機名稱,或網路無線電驅動程式記錄的某個位址或網址;這些行還可能帶有序列埠的編號,以及在少數錯誤行中帶有音效卡的名稱。這與本聲明相矛盾。自 0.99.59 起,位址與主機名稱會依上文所述被取代,序列埠號碼會被遮蔽,ADALM-Pluto 自身的記錄行不再輸出其位址,也沒有任何記錄行會寫出音效卡的名稱。
當機報告不包含頻率、不包含任何解碼內容、不包含檔案路徑、不包含使用者名稱、不包含電腦名稱、不包含網路位址,也不包含位置。報告保存在本網站自己的伺服器上,與其他所有資料一樣位於受密碼保護的同一個儀表板之後,並在該故障最後一次出現後保存 90 天,然後刪除 — 與使用情況報告的保存期間同樣是三個月。任何一個故障的第一份報告會完整保存,此外,該故障每延續到一個新組建,就再多保存一份報告,最多三份;同一故障的其他所有報告只會計數,不會儲存。有一項自動化測試讓端點所接受的內容與它寫入磁碟的內容,雙向都必須符合上表,因此若要在任一方新增欄位,這張表也必須隨之變更。
在任何設定下都絕不會傳送完整的記憶體傾印。記憶體傾印是程式記憶體的副本,可能包含檔案名稱、視窗標題與接收到的訊號資料。它預設為關閉;如果您在「系統 → 診斷」中開啟它,會在文字報告旁邊寫入一個 .dmp,而且只存在本機,上傳程式只會開啟名為 crash-*.txt 與 hang-*.txt 的檔案,其他一概不開。
哨兵報告,自 FoxSDR 0.99.64 起。有些結束方式是 FoxSDR 內部無法回報的:跳過所有處理常式的當機、堆疊溢位、無回應得連無回應監視器也被卡住的視窗。因此,在診斷開啟的互動式工作階段中,FoxSDR 會啟動自己程式的第二個副本,不帶視窗,只等待第一個結束——這就是哨兵。它能讀取 FoxSDR 是怎麼結束的(結束代碼,以及何時開始和停止)、FoxSDR 不斷更新的一小頁數字(處於哪個階段、已繪製多少個畫面以及最後一次繪製是什麼時候、視窗繪製的哪一部分正在進行、功能表是否開啟或視窗是否正在被拖曳),以及工作階段記錄檔的結尾,和其他報告一樣經過清理。它不讀取 FoxSDR 的任何記憶體,也不產生傾印,而且這頁數字沒有存放文字的空間,所以不可能包含名稱、路徑、頻率或位址。FoxSDR 結束時,哨兵會在同一個資料夾中以同樣的格式寫一份報告——如果 FoxSDR 正常結束或已自行寫過一份,則不寫——報告的原因只由固定的詞語和整秒數組成,與接收機有關的行則被替換為一句固定的話,說明它無法讀取這些內容。它自己不傳送任何東西:它的報告在下次啟動時送出,與其他報告使用同一個開關、同樣的限制,並且僅在 FoxSDR 當機、視窗已停止繪製或在第一個畫面之前就結束時才傳送。來自外部的結束(工作管理員或指令碼)以及因 Windows 關閉您的工作階段而結束,都會留在您的電腦上,絕不會傳送。診斷關閉時,哨兵不會啟動。
頻率限制。每部電腦每天最多五份報告,而同一個故障無論發生多少次,每天只傳送一次 — 這兩項限制都記錄在您自己的設定檔中,因此陷入當機循環的電腦會自行停止傳送,而不需要別人告訴它;傳送失敗的報告會在之後啟動時重試,最多三次,之後就不再理會。要把報告中的偏移量還原成函式名稱,需要該組建專屬的偵錯資料庫,而它只留在我們自己的電腦上,絕不會上傳到任何地方:解析是在本機進行,而不是在伺服器上。
應用程式絕不傳送的內容
- 您所調諧的頻率。一個人在收聽什麼,是這套軟體所知道最敏感的資訊,它絕不會被收集。在英國,攔截您未獲授權接收的訊息,或揭露其內容,屬於《無線電報法》(Wireless Telegraphy Act 2006) 第 48 條所定的罪行。
- 您所開啟檔案的名稱或路徑。錄音的檔案名稱是您自己的資料 — 它可能指出某項服務、某個地點或某個頻率。當 I/Q 檔案無法重新開啟時,記錄檔只會記下它未能重新開啟;名稱則留在螢幕上,而您本來就知道它。
- 任何解碼內容 — 呼叫器訊息、航空器、船舶、影像、衛星通訊。
- 您的位置,或您所接收的任何事物的位置 — 包括您設定的接收機位置,它絕不會在任何報告中傳送。詳見下文。
- 您的 IP 位址,或由它推得的任何位置。請求必然是從某個位址送達伺服器的,因為網際網路就是這樣運作的;使用情況端點不讀取任何連線資訊,也不寫入任何請求記錄。自 FoxSDR 0.99.59 起,報告所含記錄行中的網路位址或主機名稱也會被取代為
<host>。 - 硬體序號。無線電型號很有用;序號則能識別您的那一部無線電,因此會在傳送前移除。
- 您的姓名、您電腦的名稱、您的使用者帳戶、任何檔案路徑,或音效卡的名稱。
- 完整的記憶體傾印。
接收機位置與 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,這樣就完全不會發出任何網路請求。
您加入的外掛程式網站
自 FoxSDR 0.99.74 起,您可以加入其他人的外掛程式目錄,稱為外掛程式網站,您每加入一個,應用程式就多連線一個位址。只有您才能加入:在外掛商店的頂端列按網站,貼上一個位址,並勾選註明 FoxSDR 尚未審查該網站的核取方塊。FoxSDR 不會自行加入任何東西,也不會主動連線到任何地方。網站的讀取時機與公開目錄相同 — 在一個工作階段中第一次開啟商店時,以及每次您按立即檢查時 — 並且只給它幾秒鐘回應。請求帶有您提供的位址,除此之外不含 FoxSDR 的任何內容:沒有識別碼、沒有 Cookie,用戶端名稱 (cascade-plugin-repo/1.0) 在每份副本上都相同。因此,就像任何網頁伺服器一樣,該網站會看到您的 IP 位址。
網站中外掛程式的檔案與圖片只會從與其目錄相同的主機取得,而且只在您對其中某個外掛程式按取得或更新,或開啟其頁面時才取得。每個網站的目錄會原封不動地保存在您自己磁碟上的外掛程式資料夾中,啟動時重新讀取,並在您對該網站按移除時刪除;位址本身儲存在您的設定檔中。外掛程式目錄與外掛程式安裝的失敗計數 (見上文關於使用情況報告的部分) 屬於公開目錄:無法連線的網站,或其某個安裝失敗的外掛程式,不計入。
僅在部分國家/地區提供的外掛程式
部分外掛程式只提供給來自特定國家/地區的連線。應用程式取得外掛程式目錄時,也會向本網站要求一份簡短的地區清單,該清單中的外掛程式會從本網站下載,而不是從 GitHub 下載。為決定如何回應,本網站會讀取 Cloudflare 隨要求一併傳遞的兩個字母國家/地區代碼(CF-IPCountry),該代碼由 Cloudflare 依要求的來源位址判斷。國家/地區代碼和位址僅用於這一次回應,不會儲存;不會傳送任何可識別您身分的識別碼,這些要求也不會記錄在本網站的統計資料中。無法判斷國家/地區的連線,或經由 Tor 抵達的連線,會收到空白清單。使用 VPN 會改變本網站看到的國家/地區。如果您已將商店指向其他目錄,則不會要求地區清單。
可以發射的外掛程式
自 FoxSDR 0.99.74 起,外掛程式可以請求透過您的發射機傳送音訊;外掛商店與「已裝模組」視窗隨後會將其顯示為「可透過 FoxSDR 發射」。只有當您在它的頁面上按了授予發射權並且將「發射」頁面武裝 5、15 或 60 分鐘時,它才能觸發發射機。該授權會依外掛程式的檔名儲存在您自己的設定檔中,絕不會傳送到任何地方;武裝時間視窗則完全不儲存。您電腦上的診斷記錄檔會記錄觸發過程 — tx: armed 15 min、tx: plugin <name> keyed、tx: plugin <name> unkeyed (<why>) 與 tx: disarmed (<why>) — 內容為外掛程式宣告的名稱、固定清單中的一個原因與分鐘數,絕不記錄頻率,而且在產生報告或診斷封包時,這些行會像其他所有記錄行一樣被清除敏感資訊。FoxSDR 自身的報告沒有任何欄位用於這些內容。
衛星軌道根數
衛星外掛程式在載入期間,每十二小時會從其 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.42 | 這則建議來自哪一個組建。 |
| 作業系統 | 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.42 | 這份回報來自哪一個組建,以免再次追查已經修正的錯誤。 |
| 作業系統 | windows、linux 或 android | 由哪一個平台送出。 |
| 架構 | x64 或 arm64 | 同上。 |
| 結構描述編號 | 1 | 傳輸格式的版本,讓日後對格式的變更不會被誤認為上述任何欄位。 |
| 診斷紀錄(自 FoxSDR 0.99.43 起) | 0.99.43 windows x64, Ettus B200 — recent log lines, serials/frequencies/paths scrubbed | 回報錯誤時預設勾選,回報不喜歡時預設不勾選 — 在按下傳送之前,您都可以更改。它包含應用程式版本、您的作業系統、當時使用的是哪台無線電、您設定的簡短摘要,以及經過與當機報告記錄檔末尾相同清理過濾的應用程式自身記錄檔中最近的幾行:序號和 USB ID 會被取代,任何與頻率相關的數字都會被取代,單引號內的任何內容都會被取代,網路位址與主機名稱會被取代,序列埠號碼會被遮蔽(自 FoxSDR 0.99.59 起),檔案路徑中的帳戶名稱會被移除。本伺服器會再次執行最後一項檢查,以防有遺漏。它會與回報的其餘部分一起按照上述相同條件保存與刪除。自 FoxSDR 0.99.61 起,設定摘要中還會說明音效輸出是否已開啟以及透過哪種音效驅動程式、音量、聲音是否被靜音以及由誰靜音(您、解碼器外掛程式或發射鍵;外掛程式只會被描述,絕不會被點名),以及靜噪的位準、是否開啟和它正在判斷的訊號位準;這是一個位準,而不是頻率。其中絕不會包含您的音效裝置名稱或您所調諧的頻率。自 FoxSDR 0.99.62 起,它還會包含另外三項內容:上一次工作階段記錄檔的最後幾行(最多 80 行),或是一句說明沒有可讀內容的話;您電腦上最新的十份當機或無回應報告,每份一行,說明它是當機、無回應還是顯示停滯、是多久之前寫入的、寫入它的版本、該次工作階段已執行了多久、視窗停滯了多久或當機的原因與代碼、用於分組的故障特徵碼,以及傳送的結果,且不含取自這些報告的堆疊、記錄行、模組清單、檔案名稱或路徑;以及一行說明接線圖頁面正在執行多少台無線電以及每台的驅動程式種類,絕不包含無線電的名稱、序號或位址,也不包含錄音的名稱或頻率。上一次工作階段的記錄檔與報告清單中的每一行,都會經過同一道清理過濾。關閉「診斷」後,診斷紀錄中既沒有上一次工作階段的記錄檔,也沒有報告清單,而且這些內容都不屬於 FoxSDR 自行傳送的當機或無回應報告的一部分。 |
| 您貼上的報告,自 FoxSDR 0.99.69 起 | sentinel:outside, written by 0.99.66, and the report | 僅在適用時。如果您輸入或貼上的訊息包含 FoxSDR 的當機、無回應或哨兵報告(即報告資料夾中報告檔案所含的文字,有時使用者會手動貼上),應用程式會辨識出來,並在您按下傳送之前於頁面上告知(「已辨識報告並附加為 …」),然後連同訊息再傳送一次,並附上三項內容:報告的類型(當機、無回應、顯示停滯,或哨兵記錄的五種結束情況之一)、寫出該報告的組建(報告自身內容區塊的版本行,可能不是您目前執行的版本),以及報告本身。這並不是您尚未傳送的內容:它們就是您訊息中的文字,只是依類型歸檔,讓管理頁面能夠標示名稱。只會檢視輸入框中的文字,不會讀取任何檔案。此處會如同診斷記錄一樣進行清除(移除檔案路徑中的帳戶名稱與任何電子郵件地址),上限為 64 KiB,並與報告的其餘部分一起保存,適用與上述所有內容相同的條件。 |
自 FoxSDR 0.99.69 起,診斷記錄還會多帶一行,僅以檔案名稱(絕不含資料夾或版本)列出載入 FoxSDR 的其他程式元件,即其他程式放入的覆蓋層或攔截程式;這與上方當機報告表格所描述的清單相同,也是 FoxSDR 自行傳送的當機或無回應報告的一部分。
它會傳送到本網站的 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 中輸入了測試者代碼
您的測試者頁面(上方)會提供一個私人管理連結,並從中獲得一個可以直接輸入 FoxSDR 的【系統 → 測試者代碼】中的 測試者代碼。這與上文所述的匿名 使用情況報告 不同:使用情況報告故意無法追溯到您,而使用測試者代碼報告的會話則 故意與您的測試者條目關聯 —— 這正是其目的:讓我們知道真正進行測試的人實際嘗試了哪些功能和插件。除非您輸入代碼,否則它 默認關閉,該欄位默認為空。
測試者頁面上的連結 FoxSDR會為 FoxSDR 產生一組獨立的應用程式代碼,讓您的私人連結永遠不必輸入到應用程式中。應用程式代碼只能做兩件事:傳送下方所述的工作階段報告,以及收發您「訊息」欄中的訊息。它看不到您的地址,無法修改您的登記,也無法將您移除。它與您的測試者登記一起保存;按下新連結會讓它失效,之後需要重新連結 FoxSDR;退出測試計畫則會將它連同您登記的其餘內容一併刪除。
只要輸入了代碼,FoxSDR 大約每個會話發送一次以下內容,僅此而已:
| 傳送內容 | 範例 | 原因 |
|---|---|---|
| 您的測試者代碼 | 「連結 FoxSDR」產生的應用程式代碼,或您測試者頁面上的權杖 | 說明此工作階段屬於哪一筆測試者項目。它會被解析為您的內部測試者 ID,而代碼本身絕不儲存,與本網站對當機報告安裝識別碼所套用的規則相同。 |
| 應用程式版本 | 0.99.42 | 您正在測試哪一個組建。 |
| 平台與架構 | windows, x64 | 同上。 |
| 工作階段開始的時間 | 2026-09-25T14:32:00Z | 用於說明某項功能或外掛實際使用的時間有多近,以及報告會保留多久 — 而不是報告送達此伺服器的時間,如果 FoxSDR 要等到下次啟動才傳送,時間可能會更晚。如果聲稱是未來幾分鐘以上,或早於下方的一年保留期限,則會直接被拒絕。 |
| 工作階段長度 | 42 分鐘 | 工作階段持續了多久,最長以一天計。 |
| 使用的功能 | spectrum, adsb | 您在此工作階段中實際操作了測試者頁面磚板上的哪些區域,僅限本網站已公布的 ID;其他一律直接拒絕。 |
| 使用的外掛程式、其版本與使用時間 | adsb-decoder 1.8.0, 30 min | 哪些外掛程式目錄項目與版本實際獲得使用。從您新增的外掛網站安裝的外掛程式(自 FoxSDR 0.99.74 起)與其他已安裝的外掛程式一樣,以其 ID 與版本回報;不會回報該網站的位址。 |
| 使用的無線電 | rtlsdr | 哪些驅動程式類型,不含序號或任何其他可識別的細節。 |
- 保存的內容是您的測試員 ID(絕不是您的代碼或地址)、報告被接受的時間、上面提到的工作階段開始時間、版本、平台、工作階段長度,以及上面列出的功能、外掛和無線電 — 每個被接受的工作階段一行,最多保留一年後自動刪除,計時從工作階段實際開始的那一刻起算,而非從報告送達此伺服器的時刻起算。
- 公開顯示的內容只是數量,從不是姓名。一旦主頁上某插件的卡片的 目前 發布版本至少被兩位不同的測試者共使用至少十分鐘,該卡片就會獲得一個小小的「經 N 位測試者測試」提示 —— 低於這個門檸則什麼都不會顯示,也沒有任何頁面會列出這些測試者是誰。您自己的測試者頁面和管理後台中的數字是同一些資料,只是顯示得更詳細;測試者之間從不會相互公開姓名。
- 您的 IP 位址僅用於將傳送速率控制在合理範圍內,且絕不會寫入磁碟。
- 如何停止:從 FoxSDR 設定中刪除測試者代碼,之後就不會再發送任何內容。您不需要為此退出測試版計畫。
- 退出計畫會刪除它。無論是在測試者頁面中刪除條目,還是要求我們刪除,都會將您已記錄的每一條會話報告與您條目的其餘部分一併刪除 —— 這與本節其餘部分所述的刪除相同,同樣適用於這些資料。
- 法律依據與涵蓋您測試者條目其餘部分的同一同意相同:輸入代碼是您自己採取的行為,沒有它就不會發送任何內容。
如果您訂閱電子郵件最新消息
最新消息頁面只要求一件事:您的電子郵件地址。保存它是為了在 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 位址,因此請一併提供該位址以及您大約的造訪時間。
至於應用程式,控制項就在軟體本身之中,共有三個:
- 系統 → 使用情況報告會停止使用情況報告與每五分鐘一次的心跳訊號,並刪除安裝識別碼。日後重新開啟時,您會得到一個無法與舊識別碼連結的新識別碼。
- 系統 → 診斷會停止寫入或傳送當機與無回應報告。
- 系統 → 更新會停止更新檢查(在 Microsoft Store 版本中,則是停止向 Microsoft Store 的查詢)。
這些報告不包含任何可以與您連結的資訊,因此沒有可供請求存取的內容;如果您希望從已傳送的報告中移除某個安裝識別碼,請寫信到下方地址並附上該識別碼,它就會被刪除。
兒童。FoxSDR 是供無線電愛好者使用的技術儀器。它並非以兒童為對象,不向任何人收集個人資訊,因此也不會向兒童收集任何資訊。
請寫信至 [email protected]。如果您認為這件事處理不當,也可以向英國資訊專員辦公室 (Information Commissioner's Office,ico.org.uk) 提出申訴。
最後更新:2026 年 9 月 28 日,依據 FoxSDR 0.99.42 — 也就是本網站目前提供的組建,以上每一項說明都已對照其原始碼核實。FoxSDR 由 Steven Fox 發行;對本聲明有任何疑問,或要從已傳送的報告中刪除安裝識別碼,請寫信到上述地址。如果本聲明與軟體的實際行為不再相符,錯的是軟體 — 網站的資料收集實作於 store.go 與 app.js,兩者都可以在網站自己的原始碼中閱讀,而應用程式自己的清單則以 PRIVACY.md 的形式隨應用程式一起發布,並有一項測試確保傳送內容與它相符。