Foros del Web » Programando para Internet » PHP »

Saber si un usuario es real o es un bot

Estas en el tema de Saber si un usuario es real o es un bot en el foro de PHP en Foros del Web. Buenas!, Estoy programando un sistema de visitas con PHP de una red social. El asunto es que la red social es consultada miles de veces ...
  #1 (permalink)  
Antiguo 04/01/2017, 16:46
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Saber si un usuario es real o es un bot

Buenas!,

Estoy programando un sistema de visitas con PHP de una red social. El asunto es que la red social es consultada miles de veces por bots, lo cual no me parece mal. El problema es que suelo contabilizar las visitas mediante IP única por día.

Me pregunto si conocéis alguna forma más eficaz... no uso cookies, por si un usuario no los tiene activados y sus visitas se cuentan cada vez que entra, así que si un usuario entra 1000 veces con cookies activados no cuente 1000 visitas.

Por ello cuento así: 1 ip es 1 visita al día.

¿Existe algún sistema más estable?... tal vez algo que se sincronice mediante una imagen, o un método de javascript relacionado con un archivo PHP.

Veo redes sociales en las que las visitas son contabilizadas pésimamente, como Google Plus. Incluso webs mias con perfiles sociales, veo algún perfil con 100.000 visitas, algo que no es real.

¿Se os ocurre alguna forma real de hacerlo bien?... igual algo conectado mediante Google Analytics?... pero sería posible conectarlo a mi servidor? y ser consultado con PHP?

:D
  #2 (permalink)  
Antiguo 04/01/2017, 18:37
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Saber si un usuario es real o es un bot

Hola, yo lo que hago es algo super simple y es colocarle Unique a las columnas id_post, ip_cliente y cada vez que el usuario ingresa al post inserto lo visita con un simple insert into y si la ip ya visito ese post/noticia/etc la base de datos te va a rechazar la insercción porque es unique.

Ademas puedes excluir de la inserción los User-Agents con la palabra "bot", para que no te contabilice googlebot, bing, yahoo, etc..
__________________
Rodrigo Agüero
  #3 (permalink)  
Antiguo 04/01/2017, 19:05
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Saber si un usuario es real o es un bot

Sí... Rodrhigo, yo también suelo hacerlo, el asunto es que muchas veces una perfil puede tener miles de visitas solo por bots con diferentes IPs.

Y respecto a el user-agents para bots... no es muy confiable.

Me parece que no hay ninguna opción real.
  #4 (permalink)  
Antiguo 04/01/2017, 21:25
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Saber si un usuario es real o es un bot

Puedes apoyarte con JavaScript, si es un bot no tendrá JavaScript activado(salvo que creen una función especifica para tu sitio), entonces puedes enviar una petición a tu servidor mediante JS para validar si es un usuario normal.

Ademas los Bots no cargan los estilos y la mayoría de las veces tampoco cargan los Scripts. Puedes hacer que un estilo(.css) sea en realidad una petición a un archivo .php(mediante .htaccess) que junto con mostrar el contenido del estilo en cuestión, inserte en la base de datos que hizo una petición a ese archivo, osea que es un usuario normal usando su navegador.
__________________
Rodrigo Agüero
  #5 (permalink)  
Antiguo 05/01/2017, 20:48
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Saber si un usuario es real o es un bot

gracias Rodrhigo! :D

Etiquetas: bot, real, usuario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:38.