感覺好像又很久沒寫文章了 XD
最近因為 Tampermonkey 上架蘋果 App Store,老牌套件上架 Safari 肯定要支持一下的!
但也因為裝了之後發現,我常用的 Twitter direct 沒辦法在 Safari 的版本中生效
就花了點時間分析了一下可以怎麼在 Safari 上解決這問題
By the way, uBlock 已經包含了這個過濾器。如果你是 Chrome/FireFox 的使用者,
直接開啟 uBlock filters – Annoyances
就能達到這個功能囉~
如果是 Safari 的愛用者,那就可以繼續看下去了
TL;DR
Loon 新增 Plugin
https://raw.githubusercontent.com/BeeeeeMo/Loon-plugins/refs/heads/main/Plugins/tco_direct.plugin
QX/Surge 的使用者,可以用資源轉換器或是 ScriptHub 轉換,直接改我的 Script 也是沒問題的 XD
Twitter 超連結追蹤器是什麼?
其實這個 “超連結追蹤器” 的名字是我瞎掰的,其實就是 t.co 啦
只要貼文中有超連結,Twitter 就會偷將實際連結轉為 t.co 縮址,
而真正顯示出來的網址躲在下面
雖然你表面上看起來是 www.psychovision.online,我們看看網頁原始碼,他其實是 t.co 的縮址
所以在你點下這個超連結時,你以為你會直接進到表面上看到的連結
但實際上是先進到 https://t.co/syVDv8Slnd,伺服器偷偷記錄你的瀏覽資訊後
再把你帶去你 www.psychovision.online。
必須先聲明一下,Twitter 不一定會用這個縮址來追蹤用戶 但不代表他做不到
啊我就是不想在進入網站之前,先去 Twitter 的伺服器走一圈咩 😠
我們可以問問 AI t.co 到底會不會追蹤使用者
🤖 GPT-4 Turbo
🤖 Claude 3.5 Sonnet V2
🤖 Gemini 1.5 Pro
看起來我沒誤會 Twitter,他可能真的會追蹤使用者
該怎麼做
首要目標就是把真正的連結替換回去,因為我們已經知道 Twitter direct 跟 uBlock 可以做到這個功能
但在 Safari 下 Twitter direct 無法正常運作,我就先不從 Userscript 的角度下手 我不想寫 JS
至於 uBlock 的部分,經過我的觀察,這個功能的實現就在 uBlock filters – Annoyances
這個過濾器當中,Link
看起來是修改 response 然後用 regex 來替換內容
現在我們的方法已經有了,來分析在 Safari 下 Twitter 的請求
從上面的 Rule 中可以知道,是要分析路徑中帶有 /graphql
的請求
過濾之後可以從 TweetDetail 的請求找到 tweet 中 url 相關的資訊,
搭配上面的 Rule,可以知道 url 的數值會被嵌入在貼文中,
所以我們只要想辦法把 url 的值改成 expanded_url 的值就好啦~
MitM 登場!
什麼是 MitM? 可以參考 Wiki 中間人攻擊
Loon/QX/Surge 剛好可以做這方面的事情,我們只要寫 討厭的 JS 就能輕鬆的修改 response,
下面這個就是 MitM 修改 url 的主程式
let body = $response.body;
body = body.replace(
/,"expanded_url":"([^"]+)","url":"[^"]+"/g,
',"expanded_url":"$1","url":"$1"'
);
$done({ body });
沒錯,就是這麼簡單,中間的 Regex 甚至跟 uBlock rule 一模一樣 XD
我已經寫成 Plugin 了,有 Loon 的朋友可以直接來這邊取用 Github - Loon-plugins
啟用之後我們再瀏覽一次相同的貼文
成功 🎉🎉🎉
結語
我之前不是在用 QX,怎麼現在改用 Loon?
因為 QX 不更新,沒辦法 MitM http/2,有些 APP 沒辦法改 😠
但必須說,不太推薦在 Mac 上裝 Loon,因為他還沒出 macOS 版,
目前是用 M 系列處理器來執行 iPadOS 的 App 多少會有不穩定的地方
推薦用 Surge 執行起來相對穩定非常多
至於為什麼這篇文章沒有 Loon 的細部操作?
因為 Loon 在 Mac 下還有很多 Bug,
e.g MitM 一些 domain 會導致網站無法進入、隨機情況下無法正常聯網等等的玄學問題
所以我不太推薦一般使用者
這篇文章主要是提供一些解決問題的思路而已,最後只是透過 Loon 來 PoC
接下來應該會再做幾個跟 Loon 相關的 Plugin,請大家拭目以待 XD