Identificaciones terminadas

parent 911ad49a
from IdentificacionUsuarios import IdentificacionUsuarios
from IdentificacionSesiones import IdentificacionSesiones
from ObtencionRegistro import ObtencionRegistro
# Se crean registros
registros = ObtencionRegistro("../access_log_Aug95_reducido", True, [], [])
# Se obtienen y agregan identificaciones de usuarios y sesiones
idUsuarios = IdentificacionUsuarios(registros.registro)
idSesiones = IdentificacionSesiones(registros.registro, idUsuarios.identificaciones)
for i in range(len(registros.registro)):
registros.registro[i].idUsuario = idUsuarios.identificaciones[i]
registros.idSesiones = idSesiones.sesiones[i]
from ObtencionRegistro import obtenerRegistros
# Se crean los registros, identificando usuarios y sesiones
r = obtenerRegistros("../access_log_Aug95_reducido", True, [], [])
# Se muestran resultados log
informe = (" - Registro {} -\nHost Remoto: {}\nFecha: {}\nMetodo de Petición: {}\nURL: {}\nProtocolo: {}\nStatus Code: {}\n"
"Volumen de Transferencia: {}Marca de Tiempo: {}\nId Usuario: {}\nId Sesion: {}\n")
informe = (
" - Registro {} -\nHost Remoto: {}\nFecha: {}\nMetodo de Petición: {}\nURL: {}\nProtocolo: {}\nStatus Code: {}\n"
"Volumen de Transferencia: {}Marca de Tiempo: {}\nId Usuario: {}\nId Sesion: {}\n")
print("Resultados: ")
for i in range(20):
r = registros.registro[i]
print(informe.format(i+1, r.hostRemoto, r.fecha, r.metodoPeticion, r.url, r.vProtocolo, r.statusCode, r.volumenTransf, r.marcaTiempo, r.idUsuario, r.idSesion))
for i in range(len(r)):
print(informe.format(i + 1, r[i].hostRemoto, r[i].fecha, r[i].metodoPeticion, r[i].url, r[i].vProtocolo,
r[i].statusCode,
r[i].volumenTransf, r[i].marcaTiempo, r[i].idUsuario, r[i].idSesion))
# Definimos umbral como Web EPA
UMBRAL_SESIONES = 1800
class IdentificacionSesiones:
def __init__(self, usuarios, registros):
self.sesiones = identificacionSesiones(registros, usuarios)
# Obtenemos las identificaciones de sesiones
def identificacionSesiones(registros, usuarios):
# Quitamos duplicados
aux = asignarIDs(usuarios)
aux = reasignacionIDs(registros, usuarios, aux)
return ordenarEntradas(usuarios, aux)
\ No newline at end of file
# Se obtienen la identificacion de los usuarios
class IdentificacionUsuarios:
def __init__(self, registro):
self.identificaciones = identificacion(registro)
# Identifica a los usuarios con un unico ID para cada usuario
def identificacion(registro):
usuariosIdentificados = []
ids = []
cont = 0
for reg in registro:
usuario = reg.hostRemoto
# Si todavia no se le ha dado un id, se le da y se agrega a la lista de identificados
if usuario not in usuariosIdentificados:
cont += 1
ids.append(cont)
usuariosIdentificados.append(usuario)
else: # Si no, simplemente se agrega el id del que ya disponía
ids.append(usuariosIdentificados.index(usuario)+1)
return ids
from Dato import Dato
# Se obtiene el registro
class ObtencionRegistro:
def __init__(self, ruta, spidering, extensionesAdmitidas, extensionesNoAdmitidas):
self.registro = leerFicheroLog(ruta, spidering, extensionesAdmitidas, extensionesNoAdmitidas)
from idsUsuarioSesion import identificaciones
# Lee el fichero log
def leerFicheroLog(ruta, espidering, extensionesAdmitidas, extensionesNoAdmitidas):
ret = obtenerRegistros(ruta, extensionesAdmitidas, extensionesNoAdmitidas)
def obtenerRegistros(ruta, espidering, extensionesAdmitidas, extensionesNoAdmitidas):
ret = leerLog(ruta, extensionesAdmitidas, extensionesNoAdmitidas)
# Compruebo si hay que hacer el e-Spidering
if espidering:
ret = eSpidering(ret)
print("Procesados ", len(ret), "registros")
return ret
return identificaciones(ret)
# Obtengo los registros
def obtenerRegistros(ruta, extensionesAdmitidas, extensionesNoAdmitidas):
def leerLog(ruta, extensionesAdmitidas, extensionesNoAdmitidas):
ret = []
# Leo el fichero
......
# Asignamos un umbral para asignar nuevas sesiones a los usuarios
UMBRAL_SESIONES = 2
# Identifica a los usuarios con un unico ID para cada usuario
def identificaciones(registros):
idsUsados = []
cont = 0
# Se obtienen todos los usuarios
for reg in registros:
ip = reg.hostRemoto
# Si todavia no se le ha dado un id, se le da y se agrega a la lista de identificados
if ip not in idsUsados:
cont += 1
reg.idUsuario = cont
idsUsados.append(ip)
else: # Si no, simplemente se agrega el id del que ya disponía
reg.idUsuario = idsUsados.index(ip) + 1
return ordenaRegistros(registros)
# Se ordenan los registros segun los usuarios y su marca de tiempo
def ordenaRegistros(registros):
tam = len(registros)
for i in range(tam):
for j in range(tam - i):
reg1 = registros[i]
reg2 = registros[j + i]
# Se organiza por id usuario si son diferentes
if reg2.idUsuario < reg1.idUsuario:
registros[i] = reg2
registros[j + i] = reg1
else: # Se organiza por marca de tiempo si son iguales
if reg2.idUsuario is reg1.idUsuario and reg2.marcaTiempo < reg1.marcaTiempo:
registros[i] = reg2
registros[j + i] = reg1
return identificacionSesiones(registros)
# Identifica las sesiones de los usuarios
def identificacionSesiones(registros):
tam = len(registros)
registros[0].idSesion = 1
for i in range(1, tam):
reg2 = registros[i]
reg1 = registros[i - 1]
# Si se supera el umbral o son diferentes usuarios se crea nueva sesion
dif = reg2.marcaTiempo - reg1.marcaTiempo
if dif > UMBRAL_SESIONES or reg1.idUsuario is not reg2.idUsuario:
reg2.idSesion = reg1.idSesion + 1
else: # Si no se asigna la sesion antigua
reg2.idSesion = reg1.idSesion
return registros
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment