1) URL de referencia, la dirección IP, agente de usuario, tamaño de pantalla y otra stats. También puede obtener la ubicación geográfica, pero eso es más complicado.
2) Algunos datos están disponibles en los encabezados, por lo que se envían en cada solicitud; otros datos, como el tamaño de la pantalla, son un poco más complicados, por lo que querrá enviar un ajax para enviarlos.
// Somewhere on your page(s) - here we use jQuery
$(document).ready(function(){
// Check if they have been logged
if ($.cookie('logged') == null){
// Send screen size and whatever else that is not available from headers
$.post('/logger', { width: screen.width, height: screen.height }, function(res) {
// Set cookie for 30 days so we don't keep doing this
$.cookie('logged', true, { expires: 30 });
});
}
});
// Server side - example is an Express controller
exports.logger = function(req, res) {
var user = {
agent: req.header('user-agent'(, // User Agent we get from headers
referrer: req.header('referrer'), // Likewise for referrer
ip: req.header('x-forwarded-for') || req.connection.remoteAddress, // Get IP - allow for proxy
screen: { // Get screen info that we passed in url post data
width: req.param('width'),
height: req.param('height')
}
};
// Store the user in your database
// User.create(user)...
res.end();
}
¿Cuál es el código necesario para esto? He intentado req.getHeader ('User-Agent') pero no creo que eso funcione. – zzaman
@zzaman try req.headers ['user-agent'] - todos los encabezados en el nodo [son minúsculas] (http://nodejs.org/docs/latest/api/http.html#http_request_headers). – phreakhead