cagataygurturk/referer-parser

Snowplow Refer(r)er解析器,用于PHP

此包的官方仓库似乎已不存在,因此该包已被冻结。

安装次数: 1,005

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 149

语言:Go

dev-master 2015-01-07 16:30 UTC

This package is not auto-updated.

Last update: 2022-03-14 15:15:45 UTC


README

Java/Scala: Build Status

referer-parser是一个多语言库,用于从引用URL中提取营销归因数据(例如搜索词),灵感来源于ua-parser项目(用于用户代理解析的等效库)。

referer-parser是开源的Web规模分析平台Snowplow的核心组件,由Hadoop和Redshift提供支持。

请注意,我们在此项目中始终使用HTTP原始拼写错误'referer'(以及'referal'),而不是'referer'。

维护者

用法:Java

此库的Java版本使用更新后的API,并识别搜索、社交、网络邮件、内部和未知引用者

import com.snowplowanalytics.refererparser.Parser;

...

String refererUrl = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari";
String pageUrl    = "http:/www.psychicbazaar.com/shop"; // Our current URL

Parser refererParser = new Parser();
Referer r = refererParser.parse(refererUrl, pageUrl);

System.out.println(r.medium);     // => "search"
System.out.println(r.source);     // => "Google"
System.out.println(r.term);       // => "gateway oracle cards denise linn"

有关更多信息,请参阅Java/Scala [README] java-scala-readme

用法:Scala

此库的Scala版本使用更新后的API,并识别搜索、社交、网络邮件、内部和未知引用者

val refererUrl = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari"
val pageUrl    = "http:/www.psychicbazaar.com/shop" // Our current URL

import com.snowplowanalytics.refererparser.scala.Parser
for (r <- Parser.parse(refererUrl, pageUrl)) {
  println(r.medium)         // => "search"
  for (s <- r.source) {
    println(s)              // => "Google"
  }
  for (t <- r.term) {
    println(t)              // => "gateway oracle cards denise linn"
  }
}

您还可以提供应被视为内部的域名列表

val refererUrl = "http://www.subdomain1.snowplowanalytics.com"
val pageUrl = "http://www.snowplowanalytics.com"
val internalDomains = List(
  "www.subdomain1.snowplowanalytics.com", "www.subdomain2.snowplowanalytics.com"
)

import com.snowplowanalytics.refererparser.scala.Parser

for (r <- Parser.parse(refererUrl, pageUrl, internalDomains)) {
  println(r.medium)         // => "internal"
  for (s <- r.source) {
    println(s)              // => null
  }
  for (t <- r.term) {
    println(t)              // => null
  }
}

有关更多信息,请参阅Java/Scala [README] java-scala-readme

用法:Ruby

此库的Ruby版本使用更新后的API

require 'referer-parser'

parser = RefererParser::Parser.new

parser.parse('http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari')
  # => {
    :known=>true,
    :uri=>"http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari",
    :source=>"Google",
    :medium=>"search",
    :term=>"gateway oracle cards denise linn"
  }

有关更多信息,请参阅Ruby [README] ruby-readme

用法:Python

通过传入要解析的URL创建一个新的Referer对象实例

from referer_parser import Referer

referer_url = 'http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari'

r = Referer(referer_url)

现在r变量包含一个Referer实例。重要的属性是

print(r.known)              # True
print(r.referer)            # 'Google'
print(r.medium)             # 'search'
print(r.search_parameter)   # 'q'     
print(r.search_term)        # 'gateway oracle cards denise linn'
print(r.uri)                # ParseResult(scheme='http', netloc='www.google.com', path='/search', params='', query='q=gateway+oracle+cards+denise+linn&hl=en&client=safari', fragment='')

可选地,还可以传入当前URL,以处理内部引用者

from referer_parser import Referer

referer_url = 'http://www.snowplowanalytics.com/about/team'
curr_url = 'http://www.snowplowanalytics.com/account/profile'

r = Referer(referer_url, curr_url)

有关更多信息,请参阅Python [README] python-readme

使用方法:node.js

此库的node.js (JavaScript)版本结合了新旧API,并识别搜索、社交、网络邮件、内部和未知引用者

通过传入要解析的URL创建一个新的Referer对象实例

var Referer = require('referer-parser')

referer_url = 'http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari'

var r = new Referer(referer_url)

r变量现在持有引用者实例。

可选地,还可以传入当前URL,以处理内部引用者

var Referer = require('referer-parser')

var referer_url = 'http://www.snowplowanalytics.com/about/team'
var current_url = 'http://www.snowplowanalytics.com/account/profile'

var r = Referer(referer_url, current_url)

有关更多信息,请参阅node.js [README] nodejs-readme

使用方法:.NET

此库的.NET (C#)版本使用更新后的API,并识别搜索、社交、网络邮件、内部和未知引用者

using RefererParser;

...

string refererUrl = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari";
string pageUrl    = "http:/www.psychicbazaar.com/shop"; // Our current URL

var referer = Parser.Parse(new Uri(refererUrl), pageUrl);

Console.WriteLine(r.Medium); // => "Search"
Console.WriteLine(r.Source); // => "Google"
Console.WriteLine(r.Term); // => "gateway oracle cards denise linn"

有关更多信息,请参阅.NET [README] dotnet-readme

使用方法:PHP

此库的PHP版本使用更新后的API,并识别搜索、社交、网络邮件、内部和未知引用者

use Snowplow\RefererParser\Parser;

$parser = new Parser();
$referer = $parser->parse(
    'http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari',
    'http:/www.psychicbazaar.com/shop'
);

if ($referer->isKnown()) {
    echo $referer->getMedium(); // "Search"
    echo $referer->getSource(); // "Google"
    echo $referer->getTerm();   // "gateway oracle cards denise linn"
}

有关更多信息,请参阅PHP [README] php-readme

使用方法:Go

此库的Go版本使用更新后的API

package main

import (
  "log"

  "github.com/tsileo/referer-parser/go"
)

func main() {
  referer_url := "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari"
  r := refererparser.Parse(referer_url)

  log.Printf("Known:%v", r.Known)
  log.Printf("Referer:%v", r.Referer)
  log.Printf("Medium:%v", r.Medium)
  log.Printf("Search parameter:%v", r.SearchParameter)
  log.Printf("Search term:%v", r.SearchTerm)
  log.Printf("Host:%v", r.URI)
}

有关更多信息,请参阅Go [README] go-readme

referers.yml

referer-parser通过将其与[referers.yml] referers-yml文件进行比较来识别URL是否为已知的引用者;意图是此YAML文件可以被referer-parser的每个特定语言的实现重用。

文件被拆分为支持的不同媒介的各个部分

  • unknown 表示我们知道来源,但不知道媒介
  • email 用于网络邮件提供商
  • social 用于社交媒体服务
  • search 用于搜索引擎

然后在每个部分中,我们按名称列出每个已知提供商(即source),然后列出每个提供商使用的域名。对于搜索引擎,我们还列出了用于在搜索引擎URL中识别搜索term的参数。例如

Google: # Name of search engine referer
  parameters:
    - 'q' # First parameter used by Google
    - 'p' # Alternative parameter used by Google
  domains:
    - google.co.uk  # One domain used by Google
    - google.com    # Another domain used by Google
    - ...

引用者和它们使用的域的数量始终在增长 - 我们需要保持referers.yml更新,并希望社区提供帮助!

贡献

我们欢迎对referer-parser的贡献

  1. 新搜索引擎和其他引用者 - 如果您注意到从referers.yml中缺少搜索引擎、社交网络或其他网站,请分叉存储库,添加缺少的条目并提交拉取请求
  2. 将referer-parser迁移到其他语言 - 我们欢迎将referer-parser迁移到新的编程语言(例如Lua、Go、Haskell、C)
  3. 错误修复、功能请求等 - 非常感谢!

在提交拉取请求之前,请签署[Snowplow CLA] cla

支持

referer-parser的一般支持由Snowplow Analytics Ltd.的团队处理。

您可以通过他们维基上的[列表中的任何渠道]联系Snowplow Analytics团队。联系我们

版权和许可证

referers.yml基于[Piwik]的piwik [SearchEngines.php] piwik-search-engines和[Socials.php] piwik-socials,版权2012年Matthieu Aubry,并可在[GNU通用公共许可证v3] gpl许可证下使用。

Ruby实现版权2014年Inside Systems,Inc,可在[Apache许可证,版本2.0] apache许可证下使用。

Java/Scala端口版权2012-2014年[Snowplow Analytics Ltd] snowplow-analytics,可在[Apache许可证,版本2.0] apache许可证下使用。

Python端口版权2012-2014年[Don Spaulding] donspaulding,可在[Apache许可证,版本2.0] apache许可证下使用。

node.js(JavaScript)端口版权2013-2014年[Martin Katrenik] mkatrenik,可在[Apache许可证,版本2.0] apache许可证下使用。

.NET(C#)端口版权2013-2014年[iPerform Software] iperform,可在[Apache许可证,版本2.0] apache许可证下使用。

PHP端口版权2013-2014年[Lars Strojny] tsileo,可在[MIT许可证] mit许可证下使用。

Go端口版权2014年[Thomas Sileo] lstrojny,可在[MIT许可证] mit许可证下使用。