從 Mozilla 官網下載的 Firefox 帶有追蹤用的標籤

前天看到「Each Firefox download has a unique identifier」這篇報導,就順手貼到 Hacker News 上面了:「Each Firefox download has a unique identifier (ghacks.net)」。

簡單的說就是 Mozilla 在 Firefox 的 binary 裡面加上 download token,後續就可以追蹤使用者:「[meta] Support download token」。

依照報導所提到的,每次下載 binary 都會有不同的 token:

在「Attached file dltoken_data_review.md — Details」裡面有回答更多細節,像是跟 Google Analytics 綁定:

5) List all proposed measurements and indicate the category of data collection for each measurement, using the [Firefox data collection categories](https://wiki.mozilla.org/Firefox/Data_Collection) found on the Mozilla wiki.   

<table>
  <tr>
    <td>Measurement Description</td>
    <td>Data Collection Category</td>
    <td>Tracking Bug #</td>
  </tr>
  <tr>
    <td>A download token that uniquely corresponds to a Google Analytics ID</td>
    <td>Category 4 "Highly sensitive or clearly identifiable personal data"</td>
    <td>Bug 1677497</td>
  </tr>
</table>

我自己重製不出來 (都是被導去 CloudFront),但留言區裡面的 Yuliya 透過 Tor 有重製出來:

I have tried some TOR exit nodes:

Name: Firefox Setup 98.0.1_germany.exe
Size: 55528896 bytes (52 MiB)
SHA256: 2d8164d547d8a0b02f2677c05e21a027dc625c0c1375fd34667b7d039746d400
SHA1: 71302acbee6895b84cf0dfae99050926f2db59ef

Name: Firefox Setup 98.0.1_austria.exe
Size: 55528896 bytes (52 MiB)
SHA256: a139a45dd5737ab981068ca2596b7fdfde15e5d4bc8541e0a2f07a65defd3e4e
SHA1: 28630a0aababa162ca9e7cbca51e50b76b9c3cff

I have labeled the file for the corresponding country of the exit node.

如果不願意換到 Chromium-based 的方案,目前在討論裡看到的替代方案是 LibreWolf,昨天裝起來後發現還行,應該也可以測試看看...

拔掉 Medium 網站出現的 Hash Mark

Medium 會在網址上串上 Fragment identifier (就是井號 # 後面那一串),而這件事情一直頗讓人惱怒...

網路上查到的幾個解法都是針對 medium.com 再做一次 replaceState() 把 hash mark 拔掉,但這對於使用自訂網址而且 hosting 在 Medium 的網站就沒用了 (因為網域不在 medium.com 下),但一時間沒想到比較好的解法...

今天下午突然想到應該可以擋下 replaceState() 來做,就花了些時間研究一下 Medium 的實作方法,然後用 Greasemonkey script 寫了一個 prototype,看起來有達到需求:「Medium Hash Cleaner」,程式碼可以在 source page 頁直接看到 (沒幾行)。

想法是透過 @run-at 指定在 document-end 時執行,然後掃描目前所有的 script tag,如果有找到 Medium 相關的 js 就把 window.history.replaceState() 換掉,這樣比較不會造成系統負擔。

先把這個想法跑一陣子看看... 沒問題就來寫 Chrome extension?