作者danny0838 (道可道非常道)
看板Browsers
标题[-GC-][-Fx-] 终结内容农场 4.0.2
时间Fri May 28 00:44:32 2021
终结内容农场 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://webptt.com/cn.aspx?n=bbs/Browsers/M.1622133880.A.075.html
※ 编辑: danny0838 (36.227.217.8 台湾), 05/28/2021 01:03:04
1F:推 t7yang: 先开个 telegram 群组比较好讨论(笑)另外我想许愿 XD 05/28 01:14
我想不出有什麽开的必要(加上懒)
基本上要公开讨论,这里或 GitHub 都可以,
要私下讨论,可以私信或透过 Facebook 粉丝专页。
2F:→ t7yang: url 比对的部分有好的 library 或是你要出一个吗? 05/28 01:14
3F:→ 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
4F:推 aacdsee: 请问为何pttweb被认为是内容农场呢? 05/28 17:51
5F:嘘 brli7848: 楼上…备份站下去刚好而已啊 05/28 18:57
除了 webptt.com/cn.aspx?n=、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
6F:推 g5637128: 推 05/28 19:14
※ 编辑: danny0838 (36.227.216.249 台湾), 05/28/2021 19:31:02
7F:推 aacdsee: 了解了 谢谢解答 05/28 21:09
8F:推 sate5232: pttweb那种,建议是用REDIRECTOR自动直接转向官方 05/28 23:03
10F:推 goldie: 推楼上pttweb用 Redirector 05/29 01:54
11F:→ edc3: 形式上固然是假货,不过,当真货试图湮灭些什麽时,所谓的 05/29 08:32
12F:→ edc3: 假货,倒是在实质上,保留/还原了更多真相喔^^ 05/29 08:32
13F:推 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
14F:推 aiwheat: 推,好用的套件,谢谢持续花心力维护 05/30 19:58
15F:推 penguinfuko: 楼上 edc3 大,内容农场也很多是偷出来原文消失的 05/31 09:01
16F:→ penguinfuko: 但这不代表他不是内容农场阿 05/31 09:01
17F:推 BDrip: 他是在说那个pttweb是最常拿来查删文的 05/31 09:52
18F:推 edc3: 感谢楼上B君^^ 05/31 11:09