piwik/searchengine-and-social-list

此包已被废弃,不再维护。作者建议使用matomo/searchengine-and-social-list包。

Matomo(原名Piwik)使用的搜索引擎和社交网络定义

3.14.0 2023-01-20 11:12 UTC

README

这些是社区贡献的用于搜索引擎和社交网络检测列表的定义,由Matomo(原名Piwik)维护和使用,Matomo是一个领先的开源网站分析平台。

社交网络

社交网络定义在文件Socials.yml中,格式为YAML

定义包含社交网络名称以及一个或多个URL列表。

"My Social Network":
  - my-social-network.com
  - mysocial.org

搜索引擎

搜索引擎定义在文件SearchEngines.yml中,格式为YAML

搜索引擎的定义包含几个参数,这些参数是检测给定URL中包含哪些搜索引擎和搜索关键字所必需的。

这些参数包括

  • 搜索引擎名称
  • 搜索引擎URL
  • 请求参数(或正则表达式),可用于获取搜索关键字
  • 隐藏的关键字路径
  • 反向链接模式,可用于创建包含关键字的搜索引擎有效链接
  • 可能用于将关键字转换为UTF-8的字符集

对于每个搜索引擎(名称),可以定义多个配置。每个配置需要包含一个或多个URL,一个或多个参数/正则表达式,并且可以包含一个反向链接和一个或多个字符集。

配置参数

urls

每个配置需要包含一个或多个URL。请仅定义主机名。您可以使用{}作为子域名或顶级域的国家代码占位符。

  • {}.searchengine.com也会匹配de.searchengine.comnl.searchengine.com
  • searchengine.{}也会匹配searchengine.desearchengine.nl

注意

  • 对于顶级域,只有{}也会匹配组合顶级域,如co.uk。(完整列表com.*, org.*, net.*, co.*, it.*, edu.*
  • 第一个URL将被用于图标,所以最流行/有代表性的URL应该放在那里

params

每个配置需要包含一个或多个params。param是可能在URL中出现的请求参数名称。由于许多搜索引擎不使用查询参数来处理关键字,而是将它们包含在URL结构中,因此还可以定义一个正则表达式。正则表达式需要用'/'括起来

SearchEngine:
  -
    urls:
      - searchengine.com
    params:
      - q
      - '/search\/[^\/]+\/(.*)/'

上面的例子将首先尝试使用请求参数q获取关键字。如果不可用,它将使用正则表达式'/search\/[^\/]+\/(.*)/'来获取它。此正则表达式会匹配类似于http://searchengine.com/search/web/matomo的URL

backlink

反向链接将被用于生成包含给定关键字的搜索引擎链接。反向链接可以按配置定义,并需要包含{k}作为关键字的占位符。

SearchEngine:
  -
    urls:
      - searchengine.com
    params:
      - q
    backlink: '/search?q={k}'

对于上面的配置,生成的反向链接将类似于searchengine.com/search?q=matomo(假设matomo是关键字)。

注意

反向链接将始终使用此配置块中定义的第一个URL生成。

hiddenkeyword

越来越多的搜索引擎出于隐私原因开始隐藏引用中的关键词。 hiddenkeyword 允许定义搜索引擎是否从可能不包含/提供关键词的路径中引用。如果搜索引擎总是从路径 /do/search 引用,则应添加此路径。如果路径可能变化,可以添加以 / 开头和结尾的字符串的正则表达式,例如 /\/search[0-9]*/

注意:将匹配的路径还将包括引用的查询字符串和哈希。因此,如果引用可能包含查询,则可以使用正则表达式如 /search(\?.*)?/

SearchEngine:
  -
    urls:
      - searchengine.com
    params: []
    hiddenkeyword:
      - '/^$/'
      - '/'
      - '/search'

上述配置将允许为 searchengine.comsearchengine.com/searchengine.com/search 设置空关键词。

字符集

如果搜索引擎使用的是除了UTF-8之外的字符集,则可以定义字符集。提供的字符集将被用于将任何检测到的搜索关键词转换为UTF-8。

简单定义

一个搜索引擎的简单定义可能如下所示

SearchEngine:
  -
    urls:
      - searchengine.com
      - search-engine.org
    params:
      - q
      - as_q

上述示例将匹配主机 searchengine.comsearch-engine.org,并使用请求参数 qas_q(按此顺序)来检测搜索关键词。

多个配置

具有多个配置的搜索引擎的简单定义可能如下所示

SearchEngine:
  -
    urls:
      - searchengine.com
    params:
      - as_q
  -
    urls:
      - search-engine.org
    params:
      - q

上述定义将再次匹配主机 searchengine.comsearch-engine.org。但是,请求参数 q 将专门用于 search-engine.org,而请求参数 as_q 将专门用于 searchengine.com

完整定义

一个搜索引擎的完整定义(包括所有可选参数)可能如下所示

SearchEngine:
  -
    urls:
      - searchengine.com
    params:
      - q
    backlink: '/search?q={k}'
    charsets:
      - windows-1250
  -
    urls:
      - search-engine.org
    params:
      - as_q
  -
    urls:
      - search-engine.fr
    params: []
    hiddenkeyword:
      - '/'
      - '/^search.*/

在这种情况下,反向链接和字符集仅定义了第一个配置。这意味着没有为 search-engine.org 设置反向链接或字符集。

贡献

我们欢迎您的贡献和 Pull 请求,请访问 github.com/matomo-org/searchengine-and-social-list