CSDN Focus 油猴腳本實測:不用登入也能複製,版面清乾淨

CSDN Focus 是 Greasy Fork 上安裝量近五萬的免費油猴腳本,把 CSDN 文章頁的複製封鎖、登入彈窗與側欄廣告一次清掉,同步支援腳本之家頁面。實測有無腳本對照:剪貼簿從 0 字元變 6,393 字元、程式碼複製按鈕直接可用、寬度拖得動;原始碼層零網路請求,但暗色模式等按鈕功能受頁面渲染時序影響,未登入仍看不到評論。

用 AI 摘要這篇文章:

在 CSDN 找到要的那段程式碼,選取、按 Ctrl+C,切到編輯器貼上,出來的是空的。剪貼簿裡什麼都沒有。鍵盤和瀏覽器都沒壞,是 CSDN 靠頁面上的 JavaScript,把未登入訪客的複製動作整個攔下。我在 2026 年 9 月下旬用兩篇當下的 CSDN 文章做對照測試:不掛任何腳本時,選取整段內文執行複製,剪貼簿收到的內容是 0 字元。

CSDN Focus 是 Greasy Fork 上一個專門對付這件事的油猴腳本,頁面顯示總安裝量 49,597、累積 87 則評價且沒有負評(平台自報數字,截至 2026 年 9 月)。它 2021 年 1 月上線,一路更新到 2026 年 1 月的 2.3.7 版,做的事情濃縮成一句話:把 CSDN 文章頁還原成可以安靜閱讀、可以直接複製的樣子。我把它裝進測試環境跑了完整一輪,結論先講:複製封鎖確實被解開,版面重置有效,順帶連腳本之家(jb51.net)的頁面淨化也還活著;但暗色模式、拖曳調寬這類按鈕功能,有一輪測試全數沒有反應,原因出在它與 CSDN 頁面渲染速度的時序競爭,後面會拆開講。

它的工作方式:在頁面長出來之前,先塞進一份樣式表

油猴腳本是由 Tampermonkey 這類使用者腳本管理器載入的小程式,造訪符合條件的網頁時自動執行,不需要權限審核的瀏覽器商店流程。CSDN Focus 本體只有 11.6 KB,條件寫得很收斂:CSDN 的文章頁、腳本之家的文章頁,以及簡書的整個網域。

它的啟動時機寫在腳本開頭:document-start,文件一開始解析就注入,早於 CSDN 自己的版面腳本,所以樣式不會閃一下才變。真正的工作分兩層。一層是純 CSS:把廣告區塊、登入彈窗、右側資訊欄這些選擇器整批設為隱藏,強制文章寬度收在設定值 1,000px,並以 user-select:auto 解開 CSDN 對程式碼區塊的選取封鎖。另一層是事件掛載,而且分成兩批:一批掛在 DOMContentLoaded,負責外部連結攔截、暗色切換與拖曳調寬;另一批掛在更晚的視窗載入完成,負責解開複製攔截、把程式碼區塊上的「登錄複製」按鈕改寫成「一鍵複製」。

整份腳本沒有任何對外請求。我逐行看過 2.3.7 版的原始碼:沒有 fetch、沒有 XMLHttpRequest、沒有外部連線權限宣告,唯一的儲存動作是把寬度與暗色設定寫進腳本管理器的本地空間。以「裝了之後它會把我拿去哪」這個問題來說,答案是哪裡都不去;它甚至沒有版本檢查或遙測,更新完全交給 Greasy Fork 與管理器機制。對同類工具常見的資料外送疑慮,這裡是乾淨的。

暗色模式的實作走的是捷徑。腳本沒有幫 CSDN 重寫一套深色主題,而是在整份文件上套一層 CSS 濾鏡:顏色反轉加色相旋轉,再單獨把圖片與程式碼區塊反轉一次,讓照片維持原樣、程式碼拿到接近 GitHub 深色主題的底色。實作成本低,副作用是部分圖示與背景的對比會跟著翻轉,看起來不如原生深色模式精緻,但對夜間讀長文的人夠用。切換開關是頁面左上角一顆金色圓鈕,狀態同樣存在本地,下次開頁面記得住。另外原始碼裡還藏了一小段列印樣式,把你列印文章時用不到的工具列、留言區、推薦欄整批藏掉,算是沒有寫在功能清單裡的小禮物。

同一篇文章,剪貼簿從 0 字元變 6,397 字元

實測從對照組開始。不掛腳本的 CSDN 文章頁,選取整段內文執行複製,瀏覽器顯示複製成功,剪貼簿卻是空的;掛上 CSDN Focus 重跑同一個動作,剪貼簿收到 6,397 字元的全文,結尾也沒有被附加出處聲明。選取封鎖這一層也解開了:這篇文章的原始頁面對程式碼區塊套了 user-select:none,游標拖過去選不起來,掛腳本後計算樣式強制變為 auto;另一篇測試文章連內文都鎖了選取,掛腳本後同樣變為可選。內文選得起來的時候,真正攔你的則是下一步的複製動作。CSDN 對匿名複製的攔截是在 copy 事件上動手腳,腳本的反制同樣在事件層:先解除頁面原本掛上的 copy 處理器,再以攔截優先權擋掉後續註冊的處理器,讓瀏覽器的預設複製行為照常完成。

程式碼區塊是另一道關卡。CSDN 在每個程式碼區塊放了一個「登錄複製」按鈕,按下去引導的是登入流程。腳本會把這顆按鈕改寫:文字變成「一鍵複製」,點擊後直接呼叫瀏覽器剪貼簿 API 寫入該區塊的程式碼。實測點擊後,剪貼簿確實出現那行 ssh 連線指令,54 個字元一字不差。對常在 CSDN 抄指令的人來說,這大概是整個腳本最值錢的一個功能。

文章變窄、側欄消失:版面重置的實際效果

版面的改變立即可見。實測的文章頁原始內文區寬度約 1,318px,掛腳本後收在約 1,020px 置中呈現,左右留白,視覺上接近閱讀模式。右側資訊欄收掉,推薦文章摺進頁面底部一條停駐列,游標移過去才展開,頂部工具列只剩搜尋。文章底下催促登入的漸層遮罩也在它的隱藏清單裡,只是這次實測的兩篇文章都沒有出現那個遮罩,想驗證這條規則的人要自己碰運氣。

未掛腳本的 CSDN 文章頁原始版面,右側有紅色直幅廣告與登入權益視窗,文章內文被擠在中間偏窄的欄位Pin
未掛腳本的 CSDN 文章頁:側欄廣告與登入引導視窗同時擋在畫面上

寬度可以自己拖。游標按住文章區邊緣左右拉,寬度即時變動,放開後寫進腳本管理器的本地設定;下限寫死在 888px,上限是視窗寬度的 88%。實測從 1,000px 拖到 888px 拖得動。Greasy Fork 留言區有使用者提過代價:文章裡的圖片在拉寬時會跟著放大,一屏能看的內容反而變少,這是等比縮放的副作用,作者當天有答覆。

掛上 CSDN Focus 後的同一篇 CSDN 文章,內文收窄成置中卡片,右側側欄消失,左上角有金色夜色切換圓鈕,右下角有頂部快捷按鈕Pin
掛上 CSDN Focus 後的同一篇文章:版面收窄置中,側欄與廣告消失

跨站支援是真的。腳本之家(jb51.net)的文章頁也有一套對應 CSS:實測一篇教學文章,頁首、頂部導覽、右側欄全部隱藏,內文同樣收到 1,000px。簡書(jianshu.com)也在支援清單裡,不過它匹配的是 www.jianshu.com 的所有頁面,不限文章頁,是三個站裡最寬鬆的一條規則。

為什麼按鈕有時沒反應:和 CSDN 渲染速度的賽跑

前面說事件掛載分兩批,麻煩就出在時機。DOMContentLoaded 是文件解析完成的那一刻,但 2026 年的 CSDN 文章頁,文章骨架多半在這個時間點之後才由前端腳本生出來;腳本也依賴頁面自己的 jQuery。實測過程中,瀏覽器主控台數次出現 mainBox is not defined 與 $ is not defined 兩種錯誤:前者是腳本要掛事件的容器還不存在,後者是 jQuery 尚未就位。掛載輸掉的後果依批次而定:掛在 DOMContentLoaded 的那批功能,有的輪次整批沒掛上,有的輪次又齊全;掛在較晚時間點的複製功能,在留下紀錄的幾輪裡都正常運作。同一個頁面等到完全載入後再測一次,全部功能都正常。

把這件事翻譯成使用建議:CSS 那一層(複製解鎖、版面收整、隱藏廣告)不看運氣,注入即生效;按鈕那一層看運氣,遇到沒反應,重新整理一次通常就會好。這不是安慰話,是兩輪對照測試的實際差距。面對 CSDN 這種前端結構持續變動的目標站,這類時序問題大概會一直在,差別只在觸發機率。

外部連結直達:轉址頁與攔截的兩面

CSDN 會把文章裡的外部連結包進一層轉址頁。實測在掛著腳本的頁面點擊文章內一張外部圖片連結,開出的新分頁仍是 link.csdn.net 帶著目標參數的轉址網址,而非原始網址,原因有兩層:攔截器掛在會輸掉時序賽跑的那一批事件裡,而且它只處理直接落在連結文字上的點擊,點到連結裡的圖片就交還給 CSDN 自己的處理。攔截成功時的行為是直接以原網址開新分頁,這點由程式碼保證。若你的困擾擴及多個網站的轉址警告頁,之前介紹過的 QuickGo 自動跳過轉址頁擴充覆蓋 55 個網站,兩者可以並用。

它清不掉的:登入牆後面的東西

評論是明確的邊界。2025 年 4 月有使用者在 Greasy Fork 留言:未登入的情況下看不到評論。作者當天坦率承認。原因不難理解:腳本能改變的是瀏覽器裡的呈現,評論內容如果伺服器端根本沒送下來,客戶端再怎麼清也生不出來。同理,會員專欄、付費下載這類真正收費的內容,從來不是這個腳本的目標;它的戰場是「看得到但不給你舒服用」的那一層。油猴腳本生態以桌面瀏覽器為主,手機上的 CSDN 是另一個世界。

還有一條歷史該知道。2025 年 3 月到 4 月,陸續有使用者反映複製時仍被附加出處尾巴,或複製偶爾失效。這與時序賽跑是同一件事的兩面:攔截 copy 事件的處理器如果掛載輸了,CSDN 的處理器就會贏。作者的解法一路演進到現在的事件攔截寫法,我在頁面載入完成後的測試裡沒有再看到尾巴,但沒有人能保證每次載入都贏。

五年的更新節奏,和停在 2022 年的 GitHub 原始碼

這個腳本的維護方式很有「一個人長跑」的味道。Greasy Fork 的版本史顯示它 2021 年上線後維持低頻但持續的節奏:2024 年底一版、2025 年 2 月到 5 月三版、2026 年 1 月最新版。更新內容幾乎都在追 CSDN 長出來的新東西:2025 年 2 月有使用者請求移除 AI 摘要區塊,3 月初的版本就多了對應的隱藏規則;側邊欄新的輪播廣告被點名,作者隔天就在頁面留言確認選擇器,最新版裡也找得到那條規則。與其說是功能開發,更像是跟著廣告版位跑的維護。

原始碼放在哪裡也有學問。GitHub 上的 Germxu/Scripts-for-TamperMonkey(MIT 授權,77 星)是作者的多腳本倉庫,但裡面 CSDN Focus 的發布目錄停在 2.0.0,最後改動是 2022 年 6 月;開發目錄更舊,停在 2021 年 4 月的 1.2.4.13。你在 GitHub 上讀到的版本,落後實際安裝版三年半。想審現在這份程式碼,直接抓 Greasy Fork 的安裝檔才是正確路徑,它沒有壓縮混淆,可讀性很好;倉庫的討論板近期清一色是自動化的依賴更新。授權兩邊一致都是 MIT,並不影響自由使用,但「開源、可審計」的實際體驗,取決於你看的是哪一份。

安裝方式,與該不該裝的判斷

安裝路徑很短:瀏覽器先裝 Tampermonkey,或之前介紹過的開源替代 ScriptCat 腳本管理器,再到 Greasy Fork 的 CSDN Focus 頁面點安裝。造訪符合條件的頁面時自動生效,沒有設定介面,所有行為都是預設開啟,不喜歡就整個停用,沒有細部開關。現行版標示的相容範圍是 Chrome 與 Safari,實測在 Chrome 上完成;不符合條件的頁面它完全不動作,平時感覺不到它的存在。腳本鎖定的都是文章頁,CSDN 首頁、搜尋結果頁不在範圍內,那裡的廣告它管不著。

常查 CSDN 技術文、受不了複製封鎖與滿屏推薦的人,裝了就是淨賺:核心功能經過實測仍然有效,而且它不連網、不收費、不碰資料;在意暗色模式與按鈕穩定性的人,期待放低一點,它們大部分時候在,偶爾要重新整理。閱讀干擾的主要戰場不在 CSDN 的人,同樣思路在別的站也有解,像之前寫過的 Bilibili Cleaner B站頁面淨化腳本,或把複製需求交給 SmartCopy 複製增強擴充處理。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1525

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...