原理分析
分析:
埋没ページ上のデータを収集するための(準備JSが動的に短いタグIMGを生成するために使用される、タグ・サーバへのパラメータ要求を使用することにより、DOMのページを追加しました)
クロスドメインのimg src属性タグによって問題を解決することができますデータは、バックエンドサーバーに渡される
実行するバックエンドサーバのステップ:
- 要求を受け付け、応答画像(log.gif)
- 解像度パラメータは、データを保存します
- 設定されたCookie
設計と実装
情報を収集する必要性を決定します
名前 | 道 | リマーク |
---|---|---|
アクセスタイム | Webサーバ | nginxの$ミリ秒 |
IP | Webサーバ | nginxの$ remote_add |
ドメイン名 | JavaScriptを | document.domainを |
URL | JavaScriptを | document.URL |
ページタイトル | JavaScriptを | ドキュメントのタイトル |
View Clientの | Webサーバ | nginxの$ HTTP_USER_AGENT |
パラメータ1 | JavaScriptを | K1 |
パラメータ2 | JavaScriptを | K2 |
埋没遠位操作
//通过组装params的参数为url请求到指定IP的log.gif地址
function logOperate(params){
var args = '';
for(var i in params) {
if(args != '') {
args += '&';
}
args += i + '=' + encodeURIComponent(params[i]);
}
var img = new Image(1, 1);
img.src = 'http://127.0.0.1/log.gif?' + args;
}
nginxのシンプルな構成のバックエンドのログ収集
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#日志采用|分隔符
log_format main '$remote_addr|$msec|$http_user_agent|$k1|$k2';
access_log off;
sendfile on;
#连接持有时间
keepalive_timeout 5;
#gzip on;
server {
listen 80;
server_name 127.0.0.1;
#拦截/log.gif路径,并且只针对这个路径才采集日志
location /log.gif {
#日志记录位置且采用main格式
access_log /var/log/nginx/access.log main;
#返回类型
default_type image/gif;
#获取请求参数值格式为[$arg_argname],以便于日志格式解析。
set $k1 $arg_k1;
set $k2 $arg_k2;
#设置返回前端时不需要缓存
add_header Expires "Fri, 01 Jan 1980 00:00:00 GMT";
add_header Pragma "no-cache";
add_header Cache-Control "no-cache, max-age=0, must-revalidate";
#返回一个1×1的空gif图片
empty_gif;
}
#拦截其他所有路径,统一返回空图片。
location / {
default_type image/gif;
empty_gif;
}
}
}
追伸
URLパラメータの後端部に対応するフロントエンドによってIMG URL要求を送信し、切片nginxのに解析され|垂直列デリミタは/var/log/nginx/access.log内のログファイルに追加されます。
またはPOST水路logstat送信分析用のデータに対応する対応するログ分析サーバによって。