如何知道谁订阅了我的RSS?

时间:2014-03-15 18:32:23

标签: php rss

是否有任何PHP脚本或其他软件可以让我知道谁订阅了我的RSS源? (服务器部分或个人浏览器/ RSS阅读器

我的RSS文件都是由PHP脚本生成的,然后我使用.htaccess网址重写规则,以使文件可以.xml访问。

我知道像$_SERVER['HTTP_REFERER']这样的方法,但我没有信心自己编写一些可靠的代码。所以,我正在寻找一些稳定的代码,可以帮助我知道谁订阅了我的RSS源(并将其存储到MySQL中)?

7 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

我认为不可能。大型RSS聚合器,例如Feedly,Pulse等可能仅出于性能原因一次获取您的Feed,并将其显示给多个用户。因此,网络服务器日志测量的一次点击可能会计入很多用户 - 但您不知道它是否只是Feedly的一个用户或100个。

与png webbugs相同:如果Feedly提取一次并多次显示,则每个用户都会看到相同的png图像。所以你不能说100个用户是否看过一次图像或者一个用户看过100次图像(第二种选择不太可能,但事实将介于两者之间)。如果图片将由代理缓存(Gmail对嵌入在邮件中的图片执行此操作),则您只会有一个请求。

我不知道像Feedburner这样的服务如何得到他们的数字,但我认为他们只是估计。

添加Here's Feedburner's way计算订阅者(粗体文字由我强调不确定性):

  

如何计算?

     

FeedBurner的订阅者数量基于近似值的数量   在24小时内请求您的Feed。订阅者是   从对许多不同的Feed阅读器的分析推断和   每天检索此Feed的聚合器。订阅者不计算   对于访问您的Feed的浏览器和漫游器。

     

订阅者计数是通过匹配IP地址和Feed来计算的   读者组合,然后使用我们的详细了解   众多读者,聚合器和市场上的机器人   另外的推论。

答案 2 :(得分:0)

可能是您正在寻找的更具技术性的答案

要阅读RSS源,必须要求它。这意味着所有请求数据(远程IP,用户代理等)都在HTTP请求中发送。您可以使用相关的$_SERVER变量(或者您想要获取数据的其他变量)来记录数据,然后将其发送到您的数据库或任何地方。

user3237855提到了Google Analytics,它有一个可以发送数据的REST API,以帮助整合数据。你不会得到像Analytic的JavaScript bug那样多的英特尔,但你无法通过RSS提供任何方式获得它。
或者,当然,只需将数据保存在数据库中即可用于任何用途。

答案 3 :(得分:0)

我最好的猜测是,您可以在cookies中使用PHP generated RSS feed。每当您的RSS源由客户端requested时,您就可以确定是否cookie exists

if($_COOKIE['knownVisitor']){
    // store as subscriber
}else{
    setcookie("knownVisitor", true);
}

我试图找出这是否适用于每个客户端。但我不确定。但通过这种方式,您可以确定用户之前是否已联系过Feed。你甚至可以给Cookie当前timeStamp作为值,这样你就可以比较多个请求之间的时间(5秒内10次不会让你成为订阅者,它会使你成为一个必须得到他们{{{ 1}} unstuck)。

答案 4 :(得分:0)

...
$zrecord->setAttribute('userAgent',$_SERVER['HTTP_USER_AGENT']);
...

I use this, to make some statistics - who is browser agent etc etc

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR    
2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.2; MS-RTC LM 8)

Mozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 ( .NET CLR 
3.5.30729; .NET4.0E)

ans so on ...

答案 5 :(得分:0)

您可以通过php调用Google Analytics。这为您提供了比尝试编写自己的跟踪逻辑所获得的信息更多的信息。 https://code.google.com/p/php-ga/

答案 6 :(得分:0)

有些意见,你可以将ip存储到数据库中,然后分析每个ip地址(频率访问你的网站,如果是自动脚本,访问时间将遵守一些规则,如:0:00,1:00, 2:00 ......)

另一种方法,将ip放入“http://www.bing.com/search?q=ip%3A”。$ ip,如果是来自某个站点服务器,bing将列出此ip的域名。 (但仍然是一个问题,如果从网站托管的一些小网站,许多网站将共享一个IP地址)。