看板 Browsers 關於我們 聯絡資訊
終結內容農場 4.0 出來了 https://github.com/danny0838/content-farm-terminator 主要更動: * 改良演算法,現在標準封鎖規則的比對效能不再是線性時間複雜度。 除此之外,最近把內建黑名單的正規表示式規則整併,減少重複比對, 這兩個措施加起來實測可解決在某些瀏覽器上長時間卡頓的問題。 相關回報帖如下,麻煩有遇過類似問題的網友協助測試確認問題是否已解決: https://github.com/danny0838/content-farm-terminator/issues/44 https://github.com/danny0838/content-farm-terminator/issues/47 https://github.com/danny0838/content-farm-terminator/issues/50 * 所有網址統一改用標準形式比對。國際化域名改用 Punycode 編碼形式。 * 修正含有擷取子群組的正規表示式無法正常運作的問題。 * 修正一個可能導致規則較多時無法正常運作的問題。 * 支援含修飾符的正規表示式規則。 ---------------------------------------------------------------------- 最近有人許了不少願: https://github.com/danny0838/content-farm-terminator/issues/33 https://github.com/danny0838/content-farm-terminator/issues/53 https://github.com/danny0838/content-farm-terminator/issues/59 https://github.com/danny0838/content-farm-terminator/issues/60 大致如下: 1. 希望增加單行註解的專門語法 2. 希望能列出內容網站符合的黑名單及規則 3. 希望增加根據網頁元素內容判定內容農場的規則 (例如根據標題或內文關鍵字,或 CSS selector) 4. 希望能自訂「內容農場」網站的類型名稱 (例如把某些網站定義為「假新聞網站」等等) 因為牽涉到不少技術和設計問題,要和各路高手集思廣義一下... 1. 技術上算是比較簡單,只是要用哪種語法比較好,暫時還沒有好點子。 目前傾向從以下幾種擇一: # => 許多程式語言使用,如 shell script, Python, Perl, PHP, ... ! => AdBlock、uBlock 等擋廣告套件使用 ; => .ini 常用「;」 或是都不要加,維持現狀用半形空白開頭當註解即可。 2. 有個麻煩是現有程式架構如果要加上反查匹配的正規表示式規則會嚴重影響效能, 所以在有好的解決方案以前暫時不適合實做... 另外是設計問題。 目前看起來會關切實際符合哪條規則的人似乎不多, 終結內容農場的設計目標是簡單易用,最好長輩也能輕易上手, 現有封鎖畫面已經有很多東西, 要在哪裡加上列出對應的規則和對應的黑名單需要評估, 有沒有擅長做UX的大大能提供點建議?...XD 3. 這牽涉好幾個問題: 3.1. 目前對超連結的標示都是根據網址運作,如果要根據網頁內容封鎖, 就勢必要主動走訪每個超連結,但主動走訪超連結有安全風險... (比如可能導致誤觸登出連結就自動登出網站) 目前看起來,根據網頁內容的封鎖規則在標示超連結時似乎只能略過... 3.2. 現在很多網頁是動態網頁,假設封鎖關鍵字「中國」, 對於原始碼沒有「中國」但網頁腳本載入內容後有的網頁, 要算符合封鎖條件還是不算? 3.3. 語法設計問題,要發明哪一套語法指定 CSS 封鎖條件? 而如果要根據標題封鎖,似乎 CSS selector 還不夠,搞不好需要 RegExp 出場? 4. 其中一個問題和 2 一樣,因為如果沒辦法抓出符合哪條規則, 就無法進一步判定被定義的網站類型。 而要達成這個效果,除了抓出符合哪條規則以外, 如果符合多條規則要怎麼處理,也是一個問題... 再來也是語法設計問題,要發明哪一套語法定義網站類型? 5. 除此之外,雖然如前所述, 把內建黑名單的正規表示式規則整併可以大幅改善效能, 但是這樣可能幾千幾萬個內容農場都放在同一行規則, 後續不易維護。 可能要考慮增加一套自訂內容農場網址型態的方式, 比如先用某種語法定義 facebook: 代表特定類型的網址, 以後規則名單只要寫: facebook: wtf facebook: nmsl 就可以轉換成相應代表 facebook 特定粉絲團 ID 的網址的正規表示式, 還可以事先做整併優化。 當然,困難點就在於要怎設計這種定義語法,又要兼顧易用性orz... AdBlock、uBlock 的規則語法已經夠複雜了, 目前看來要實做這功能,語法可能要更複雜幾百倍... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.217.8 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Browsers/M.1622133880.A.075.html ※ 編輯: danny0838 (36.227.217.8 臺灣), 05/28/2021 01:03:04
t7yang: 先開個 telegram 群組比較好討論(笑)另外我想許願 XD 05/28 01:14
我想不出有什麼開的必要(加上懶) 基本上要公開討論,這裡或 GitHub 都可以, 要私下討論,可以私信或透過 Facebook 粉絲專頁。
t7yang: url 比對的部分有好的 library 或是你要出一個嗎? 05/28 01:14
t7yang: 不然每個套件都要重新造輪子就覺得麻煩 05/28 01:15
你的需求是什麼? URL 比對有千百種需求,每種需求都可能需要不同設計, 終結內容農場目前只支援兩種, 一種是標準規則的 domain name 比對,支援 domain name 合法字元及 * 萬用字元, 一種是正規表示式規則的 URL 比對,這個其實大部分都是 JavaScript 內建, 好像也不需要什麼 lib...。 如果要像 uBO 支援的那麼多比對規則,還要有像 uBO 那麼好的效能,那就不簡單了。 uBO 作者用了大量超專業的優化設計,我實在無能為力去破解orz...... ※ 編輯: danny0838 (36.227.217.8 臺灣), 05/28/2021 01:47:43
aacdsee: 請問為何pttweb被認為是內容農場呢? 05/28 17:51
brli7848: 樓上…備份站下去剛好而已啊 05/28 18:57
除了 www.ptt.cc、term.ptt.cc、及臉書 PttTW 粉絲團,其他通通都是假貨。 https://content-farm-terminator.blogspot.com/2019/02/moptt-plagiarism.html ※ 編輯: danny0838 (36.227.216.249 臺灣), 05/28/2021 19:00:24
g5637128: 推 05/28 19:14
※ 編輯: danny0838 (36.227.216.249 臺灣), 05/28/2021 19:31:02
aacdsee: 了解了 謝謝解答 05/28 21:09
sate5232: pttweb那種,建議是用REDIRECTOR自動直接轉向官方 05/28 23:03
sate5232: #1SUZgsYk (Browsers) 05/28 23:04
goldie: 推樓上pttweb用 Redirector 05/29 01:54
edc3: 形式上固然是假貨,不過,當真貨試圖湮滅些什麼時,所謂的 05/29 08:32
edc3: 假貨,倒是在實質上,保留/還原了更多真相喔^^ 05/29 08:32
finhisky: 請問GITHUB的套件,要怎麼安裝啊? 05/29 13:35
GitHub 連結只是說明頁面,最下面就有「下載及安裝」了XD ※ 編輯: danny0838 (36.227.216.249 臺灣), 05/29/2021 23:48:08 ※ 編輯: danny0838 (36.227.216.249 臺灣), 05/30/2021 00:31:54
aiwheat: 推,好用的套件,謝謝持續花心力維護 05/30 19:58
penguinfuko: 樓上 edc3 大,內容農場也很多是偷出來原文消失的 05/31 09:01
penguinfuko: 但這不代表他不是內容農場阿 05/31 09:01
BDrip: 他是在說那個pttweb是最常拿來查刪文的 05/31 09:52
edc3: 感謝樓上B君^^ 05/31 11:09