Piwik收集IP信息的二次开发
2014-06-05 16:15
120 查看
2,系统核心工作流程:
1,访问者通过浏览器向用户服务器发送请求。
2,门户服务器响应请求,返回预先设置了Piwik的跟踪代码页面,
3,客户端浏览器执行TAG标记,向Piwik请求数据获取的js代码。
4,Piwik服务器响应请求,返回用于收集网页,浏览器和Cookie信息的js代码。
5,客户端浏览器执行js代码,发送相关网页被访问的行为数据给Piwik服务器。
6,Piwik服务器产生点击流日志,保存于后台数据库中,用来日后做分析。
Piwik收集的信息有:被系统屏蔽后的IP地址信息,访问来源链接,第一次访问网站时间,累计页面浏览数,和第几次来访问数据等。
由于Piwik比较主用用户隐私,对IP信息进行了屏蔽,这也是Piwik的不足之处,为了精准定位访问人群,我们可以对Piwik进行二次开发。
Piwik收集IP信息的二次开发:
(1)Piwik后台数据库改造
Piwik将用户的访问时间信息,访问事件和浏览器的环境等信息记录载mysql的piwik_log_visit表中,我们可以添加一个ipinfo 字段来存放用户的真实地址。
alter table piwik_log_visit add column `ipinfo` char(20) not null default 0 after location_provider
(2)新建一个获取IP信息的类:piwik提供插件扩展功能的方法,所有的二次开发类必须遵守次方法。
具体步骤:
1,在Piwik的plugins方法中建立ipinfo.php扩展类,此类继承Piwik_Plugin类,重写Piwik_Plugin中getListHooksRegistered方法,获取已经注册的Tracker.Visit.setVisitorIp钩子。注意:钩子(hook)在wordpress 中也有提到。将此钩子绑定一个方法来获取ip信息,将IP信息存入Piwik_log_visit表的ipinfo字段中。
ipinfo.php 部分代码:
class ipinfo extends Piwik_Plugin {
public function getListHooksRegistered() {
//注册一个Tracker.Visit.setVisitorIp钩子类获取IP信息。
return array('Tracker.Visit.setVisitorIp'=>setVisitorIpAddress);
}
static public function applyIPMash($ip,$maskLength) {
//解开屏蔽ip信息
$i = Piwik_Common:strlen($ip);
if($maskLength > $i) {
$maskLength = $i;
}
while($maskLegth -- >0) {
$ip[--$i] = chr(0);
}
return $ip;
}
function setVisitorIpAddress($notifiaction) {
//奖励与Tracker.Visit.setVisitorIp钩子的绑定方法。
$ip = &$notification ->getNotificationObject();
//得到的参数引用相关联的钩子
$ip = self::applyIPMask($ip,Piwik_Tracker_Config::getInstance()->Tracker['ip_address_mask_length']);
}
}
Piwik_Plugin.php文件位置:安装目录/core/Plugin.php中。此类为抽象类,有兴趣的可以自行查阅。
相关文章推荐
- ASP开发中可能遇到的错误信息中文说明大全(整理收集)
- ASP开发中可能遇到的错误信息中文说明大全(整理收集)第1/2页
- 用WPF+MongoDB开发房产信息收集器(4)——房产信息采集器总体介绍附程序下载
- Skyline软件二次开发初级——8如何在WEB页面中的三维地图上管理信息树
- Android开发之socket通信 向PC机发信息 获取本机IP
- ASP开发中可能遇到的错误信息中文说明大全(整理收集)
- 用shell脚本收集查询IP信息的网站
- ecshop二次开发--购物时为每件商品添加备注信息
- Building Coder(Revit 二次开发) - 参数访问和计划信息
- 方维分享系统二次开发,tip.htm,修改调用的当前用户的信息
- 收集一些关于Visio二次开发经典的文章,共同学习
- 谈谈UG二次开发信息保存的问题/ How to Save Information in NX Development
- AutoCAD 二次开发--资料收集
- 用WPF+MongoDB开发房产信息收集器(3)——MongoDB入门
- android开发之socket通信 向PC机发信息 获取本机IP
- ASP开发中可能遇到的错误信息中文说明大全(整理收集)第1/2页
- 谈谈UG二次开发信息保存的问题/ How to Save Information in NX Development
- 信息收集--IP扫描 (下篇)
- 关于kinect for XBOX hack 开发的一些信息收集[不定期更新]
- 用shell脚本收集查询IP信息的网站