头脑风暴: on_result 插件 / https_rewrite 插件
作者: dalf创建于 2020年7月16日更新于 2023年1月14日
标签core
不同的插件想法需要根据 URL 的主机过滤/修改结果。 使用示例:
- https_rewrite 插件, 现有实现无法做到这一点: https://GitHub.com/asciimoo/searx/blob/6e37255e59693d7a3768491b2b8d06441051131f/searx/plugins/https_rewrite.py#L140
- 添加对 Youtube 和 Twitter 链接重写的支持 PR #1726 也会重写一些 URL。
- 功能请求: 私人用户黑名单/黑名单 #2001 要求从结果中删除一些域名。
目前,
on_result插件会为每个 URL 扫描并处理它们。 如果我们为每个插件提供一个域名列表呢? 创建静态域名列表的一些技术方案: - 树结构。 (此问题超级链接到这个问题 https://GitHub.com/asciimoo/searx/issues/936 )
- 域名中的每个标签对应一个哈希表: https://GitHub.com/sethmlarson/hstspreload 根据 https://www.eff.org/https-everywhere/rulesets#wildcard-targets, HTTPS everywhere 的通配符可以是:
- *.eff.org
- www.eff.*
一个解决方案: 在两个不同结构中进行两次查找,一个是倒序(org -> eff -> *),一个是正序(www -> eff -> *)。
原型: https://gist.GitHub.com/dalf/26462c1627c8b00fdfacdd55525b08b6 想法是提供:
- 一个存储规则的格式(二进制或纯文本格式),并有一个模块来创建此输出格式。
- 插件可以注册此结构: searx 核心会调用匹配的插件。
- 如果没有大量重复,很难合并所有树结构,最有可能是每个插件一个"双树结构";但对于简单的情况,我想这可以做到。 关于问题 #2001 的注意事项:
- 删除要移除的域名的选择是一种偏好,因此问题没有解决。
- 如果我们能够制作一些维护的列表,那么问题就解决了。
内容来源: searx/searx