cagataygurturk / referer-parser
Snowplow Refer(r)er解析器,用于PHP
此包的官方仓库似乎已不存在,因此该包已被冻结。
Requires (Dev)
- phpunit/phpunit: 3.*
- symfony/yaml: *
Suggests
- symfony/yaml: Support for YAML configuration file
This package is not auto-updated.
Last update: 2022-03-14 15:15:45 UTC
README
referer-parser是一个多语言库,用于从引用URL中提取营销归因数据(例如搜索词),灵感来源于ua-parser项目(用于用户代理解析的等效库)。
referer-parser是开源的Web规模分析平台Snowplow的核心组件,由Hadoop和Redshift提供支持。
请注意,我们在此项目中始终使用HTTP原始拼写错误'referer'(以及'referal'),而不是'referer'。
维护者
- Java/Scala: [Snowplow Analytics Ltd] snowplow-analytics
- Ruby: [Kelley Reynolds] kreynolds at Inside Systems, Inc
- Python: [Don Spaulding] donspaulding
- node.js (JavaScript): [Martin Katrenik] mkatrenik
- .NET (C#): [Sepp Wijnands] swijnands at [iPerform Software] iperform
- PHP: [Lars Strojny] lstrojny
- Go: [Thomas Sileo] tsileo
referers.yml
: [Snowplow Analytics] snowplow-analytics
用法: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的贡献
- 新搜索引擎和其他引用者 - 如果您注意到从
referers.yml
中缺少搜索引擎、社交网络或其他网站,请分叉存储库,添加缺少的条目并提交拉取请求 - 将referer-parser迁移到其他语言 - 我们欢迎将referer-parser迁移到新的编程语言(例如Lua、Go、Haskell、C)
- 错误修复、功能请求等 - 非常感谢!
在提交拉取请求之前,请签署[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许可证下使用。