uBlacklist的实现原理

最近v2ex上大家在讨论Google搜索频繁遇到小 X 知识网等内容农场式结果的问题,都觉得倍感恶心,毕竟百度垃圾,大家才转投谷歌,如果谷歌也废了,那就完蛋了。

好在技术人也总是办法总比问题多,当前有个办法就是使用uBlacklist插件,将这些站点域名配进去从而在搜索结果中屏蔽该内容。同时有网友开了GitHub repo,大家陆续将恶心人的站点域名都补充进去,然后利用ublacklist订阅该源,最终发现效果还不错。

问题虽然也得到了解决,但是什么原理呢,好奇之下,看了下源码,发现原理简单,即利用JS捕捉结果中命中黑名单的站点结果,变换CSS实现隐藏,也就是插件对搜索返回的结果页的HTML进行了二次处理。

当然这样做有局限性即搜索结果如果是分页,会出现每页结果数量不等,毕竟命中的数量可能不同,但对比看到垃圾站点而言,这点还是可接受的。

百度?

uBlacklist的原理决定了搜索结果一定要包含站点链接,而百度属于比较坑的,百度的搜索结果没有直接携带链接,而是做了代理。因此无法有效实现。

原理上来说,如果可以通过这个代理链接XHR获取源链接的话,理论上还是可行。

当前ublacklist支持Google,Bing, DuckDuckGo, Ecosia (partially) , Startpage.com

写在最后

  1. 致谢https://github.com/iorate/uBlacklist,还我们一个干净的搜索结果。
  2. 希望谷歌等企业可以加强下站点审核,履行应有的社会责任,这些垃圾站点这么干,实属作恶。
  3. 百度对搜索结果进行代理,相当于流量是先走向百度,这点除了想使坏,还能有啥原因呢,,哎,尿性如此,只能说珍爱生命,远离百度。