Detectar TODOS los IE

Iniciado por bavo08, 29 Octubre 2014, 15:43 PM

0 Miembros y 1 Visitante están viendo este tema.

bavo08

Estimados,

No se si muchos están informados pero IE11 hasta hace poco ocultaba su metadata, quería consultar si existe algún método infalible para detectar un navegador Internet Explorer en cualquiera de sus versiones con PHP.

Mil gracias!

engel lex

ocultaba su metadata?

el useragent siempre se pasa por seguridad... una conexion sin useragent puedes bloquearla con tranquilidad

de todas formas la tecnica que buscas es browser fingerprinting

aquí un ejemplo basado en los codigos de error
http://c22.cc/POC/fingerprint.html

lo que hace es pasar un jscript con un codigo de respuesta diferente y ver cual corre...

si el jscript con el response code 205 corre es ie

igual puedes buscar más en google sobre esto
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

bavo08

Cita de: engel lex en 29 Octubre 2014, 16:00 PM
ocultaba su metadata?

el useragent siempre se pasa por seguridad... una conexion sin useragent puedes bloquearla con tranquilidad

de todas formas la tecnica que buscas es browser fingerprinting

aquí un ejemplo basado en los codigos de error
http://c22.cc/POC/fingerprint.html

lo que hace es pasar un jscript con un codigo de respuesta diferente y ver cual corre...

si el jscript con el response code 205 corre es ie

igual puedes buscar más en google sobre esto

Perdón, me equivoqué de término, "useragent", está bueno lo que me pasaste, pero corre a nivel cliente, ¿existe alguna solución a nivel servidor que acepte también a IE11?

Sé que en google hay infinitas soluciones sobre este asunto a nivel servidor, la cuestión es alguna que admita todos los IE, inclusive, IE11 que no tenía useragent hasta hace poco.

Mil gracias por la pronta respuesta!

engel lex

insisto el IE11 si tiene user agent, solo que se identifica con el nuevo motor que es "Trident" todas las conexiones sin user agent son descartables...

el nuevo useragent de IE11 es
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

los fingerprinting en el 95% de los casos son desde cliente ya que no puedes saber que navegador es si no sabes como se comporta... ese codigo que te di lo puedes hacer un ajax y cargar la pagina en base a eso

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

bavo08

Cita de: engel lex en 29 Octubre 2014, 16:18 PM
insisto el IE11 si tiene user agent, solo que se identifica con el nuevo motor que es "Trident" todas las conexiones sin user agent son descartables...

el nuevo useragent de IE11 es
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

los fingerprinting en el 95% de los casos son desde cliente ya que no puedes saber que navegador es si no sabes como se comporta... ese codigo que te di lo puedes hacer un ajax y cargar la pagina en base a eso



Tienes razón, toda la razón :D acabo de investigar un poco más y fue un error mio.
Mil gracias!

bavo08

Un pequeño aporte para no usar ajax:

Citar

         # Determinar si es IE
         if (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/7.0; rv:11.0') !== false)) {
            $ie = "'1'";
         }else{
            $ie = "NULL";
         }



engel lex

claro! :P te recomiendo que te busques las tablas de user agent que hay en internet :P son muy utiles...

el ajax es para caso de fingerprinting como los que te digo :P

para el indicado antes es algo como

Código (php) [Seleccionar]
header("test",true,205);
echo var es_ie = true;


y bueno en el html colocarlo en el head y en el body lo lees
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MinusFour

El UA no es infalible, se puede spoofear de diversas formas. Podrias revisar si existen algunos elementos del DOM desde Jscript y luego decirle al servidor si es o no Internet Explorer, pero esto solo funciona para versiones viejas de IE me parece. Cada día IE se apega mas al estandard.