2010-12-16 35 views
7

Parece que no puede encontrar ninguna información sobre esto, pero se preguntaba si hay alguna forma de detectar si un usuario está en una conexión wifi, específicamente wifi público, usando javascript o php?¿Hay alguna forma de detectar si un usuario tiene conexión wifi con php o javascript?

+0

Es necesario aclarar qué te refieres. Para comprobar si un visitante del sitio está utilizando WiFi en su lado? ¿Para ver si una persona de su empresa está conectada a través de WiFi cuando visita el sitio corporativo? ¿Para verificar si una persona de su red está actualmente conectada a la red WiFi de la compañía cuando otra persona visita su sitio? ¿Qué es lo que realmente quieres hacer? ¿No resolvería el problema el uso de HTTPS para su sitio? –

Respuesta

10

No, no hay nada en el transporte IPv4 ni HTTP que indique siquiera qué tipo de conexión se utiliza, excepto el protocolo subyacente en sí, que suele ser IPv4 y HTTP.

No, IPv6 tampoco incluye esta información.

+0

gracias por la excelente respuesta! – mcbeav

+4

Esta respuesta es simplemente incorrecta. Si bien no existe una forma integrada en HTTP para determinar el tipo de conexión, mi respuesta a continuación muestra claramente cómo puede determinar en qué clase de conexión se encuentra. Las empresas de publicidad móvil, en particular, saben exactamente qué tipo de conexión está utilizando. Hay varias compañías que compilan mapas muy completos del tipo de conexión a IP. –

0

No. Bueno, usted podría verificar su IP contra alguna base de datos teórica, en un número muy limitado de casos puede indicarlo.

Pero Javascript por diseño no expone lo suficiente sobre el usuario, y definitivamente no hay forma de que PHP lo sepa a menos que de alguna manera pueda convencer al cliente para que lo comparta.

+0

gracias por la excelente respuesta! La única razón por la que me preguntaba PHP era porque sé que puedes obtener su dirección IP y me preguntaba si podrías hacer algo con ella. – mcbeav

+0

Lo que quise decir con "base de datos teóricos" es que si alguien como Comcast, Boingo o Waypoint usa solo direcciones IP en algún conjunto de bloques de red, posiblemente podrían figurar en alguna parte como "IP WiFi públicas". Pero nunca harías que las tiendas familiares lo sacaran de un cablemódem, por ejemplo, y dudo que las grandes compañías lo hagan de todos modos. – Robert

1

Puede obtener información sobre el protocolo IP similar al utilizado por el usuario. Pero no puede obtener ninguna información sobre el medio utilizado por el usuario para conectarse a Internet. Existen algunas herramientas de prueba de velocidad para analizar la velocidad de conexión con la que un usuario está conectado, pero las conexiones inalámbricas no tienen ninguna marca de velocidad significativa o lo que sea para identificarlo.

11

Hay dos maneras de hacer esto, que yo sepa:

  1. Comprobar el IP frente a una base de datos. Por cierto, esta opción le brinda mucho más que información sobre el operador. También puede darle la ubicación y el nombre del ISP, el dominio que se asigna a esta IP, latitud/longitud, código postal, zona horaria, etc., etc. Consulte http://www.quova.com/ para obtener una API RESTful que lo permita.

  2. Programmatically: Esto solo funciona en la versión 2.2+ de Android. Es una verificación simple para navigator.connection. Espero que esto ayude. Aquí es una página de prueba:

<html> 
    <head> 
     <script type="text/javascript"> 
      function checkWIFI() { 
       var output = document.getElementById('connectionCheck'); 
       var html = "Checking...<br/>Connection: "; 
       if (navigator.connection) { 
        var type = navigator.connection.type; 
        switch (type) { 
         case navigator.connection.UNKNOWN: 
          html += "Unknown"; 
          break; 
         case navigator.connection.ETHERNET: 
          html += "Ethernet"; 
          break; 
         case navigator.connection.WIFI: 
          html += "Wifi"; 
          break; 
         case navigator.connection.CELL_2G: 
          html += "Cell 2G"; 
          break; 
         case navigator.connection.CELL_3G: 
          html += "Cell 3G"; 
          break; 
         default: 
          html += "Missing"; 
        } 
       } else { 
        html += "Connection type not supported."; 
       } 
       output.innerHTML = html; 
      } 
     </script> 
    </head> 
    <body onload="checkWIFI();"> 
     <div id="connectionCheck"> 
     </div> 
    </body> 
</html> 
+0

¿Alguien ha conseguido esto para trabajar? – frandroid

+0

¿Esto no funcionó para usted? –

+1

error en: móvil: cromo, navegador Android predeterminado, firefox beta. escritorio: aurora, cromo, ópera, safari. He copiado tu html, lo he guardado en un nuevo documento html y lo he cargado. Obtengo "Tipo de conexión no compatible" todo el tiempo. – frandroid

Cuestiones relacionadas