1,在应用技术方面:分析技术主要有:HTTP协议头信息技术,第一方COOKIE,第三方COOKIE,P3P协议COOKIE,LSO技术以及Web Beacons和javascript技术。
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中。此类为抽象类,有兴趣的可以自行查阅。