2010-01-01 17 views
37

Estaba investigando la actividad de net de Google.com en Firebug solo porque tenía curiosidad y noté que una solicitud me decía "204 Sin contenido".Google.com y clients1.google.com/generate_204

Resulta que un 204 Sin contenido "está destinado principalmente a permitir la entrada de acciones sin provocar un cambio en la vista del documento activo del usuario, aunque cualquier metainformación nueva o actualizada DEBERÍA aplicarse al documento actualmente en la vista activa del agente de usuario ". Lo que sea.

He mirado en el código fuente JS y vi que "generate_204" se solicita la siguiente manera:

(new Image).src="http://clients1.google.com/generate_204" 

Sin declaración de variables/asignación en absoluto.

Mi primera idea es que se estaba utilizando para rastrear si Javascript está habilitado. Pero la llamada "(nueva imagen) .src = '...'" se llama desde un archivo JS externo cargado dinámicamente de todos modos, por lo que sería inútil.

¿Alguien tiene alguna idea de lo que podría ser el punto?

ACTUALIZACIÓN

"/ generate_204" parece estar disponible en muchos servicios de Google/servidores (por ejemplo, maps.google.com/generate_204, maps.gstatic.com/generate_204, etc ...).

Puede aprovechar esto preseleccionando las páginas generate_204 para cada servicio de propiedad de Google que pueda usar su aplicación web. Me gusta:

window.onload = function(){ 
    var two_o_fours = [ 
     // google maps domain ... 
     "http://maps.google.com/generate_204", 

     // google maps images domains ... 
     "http://mt0.google.com/generate_204", 
     "http://mt1.google.com/generate_204", 
     "http://mt2.google.com/generate_204", 
     "http://mt3.google.com/generate_204", 

     // you can add your own 204 page for your subdomains too! 
     "http://sub.domain.com/generate_204" 
    ]; 
    for(var i = 0, l = two_o_fours.length; i < l; ++i){ 
     (new Image).src = two_o_fours[i]; 
    } 
}; 
+2

Bueno, ¿por qué crear una imagen vacía sin conexión, si podemos obtener una en línea de Google? :) – mykhal

+0

¿Quizás el archivo JS externo se usa en otro lugar no dinámicamente? Realmente no lo sé, ¿parece tener algo que ver con la depuración y/o proxies? –

+0

@mykhal: ¿Qué? @Eric Muyser: dudo que el JS se use en otro lugar, y si lo fuera, detectar el estado de JS sucedería cuando se solicitara el archivo. –

Respuesta

23

Como dijo Snukker, clients1.google.com es de donde provienen las sugerencias de búsqueda. Supongo que hacen una solicitud para forzar clients1.google.com a su caché de DNS antes de que lo necesite, por lo que tendrá menos latencia en la primera solicitud "real".

Google Chrome ya lo hace para cualquier enlace en una página, y (creo) cuando escribe una dirección en la barra de direcciones. Esto parece una forma de hacer que todos los navegadores hagan lo mismo.

+0

¡Gran respuesta! Probablemente terminaré marcando esto como correcto si nadie viene pronto con una respuesta oficial. ¡Ahora tengo que intentar encontrar una forma útil de usarlo! ¡GRACIAS! –

+0

no creo que tenga ningún sentido :) – mykhal

+0

Mi navegador abre automáticamente gstatic.com/generate_204 cuando estoy navegando. Realmente no parece el mismo escenario aquí? –

5

204 veces se usan respuestas en AJAX para rastrear los clics y la actividad de la página. En este caso, la única información que se transmite al servidor en la solicitud de obtención es una cookie y no información específica en los parámetros de solicitud, por lo que este no parece ser el caso aquí.

Parece que clients1.google.com es el servidor detrás de las sugerencias de búsqueda de Google. Cuando visita http://www.google.com, la cookie se pasa al http://clients1.google.com/generate_204. Tal vez esto es para iniciar algún tipo de sesión en el servidor? Cualquiera que sea el uso, dudo que sea un uso muy estándar.

+5

Por cierto, intente hacer clic en "Me siento afortunado" cuando el cuadro de búsqueda esté vacío. Si hace esto el día de año nuevo, puede obtener una sorpresa – Snukker

2

Encontré esta publicación de blog que explica que se usa para registrar clics. Sin una palabra oficial de Google, podría usarse cualquier cantidad de cosas.

http://mark.koli.ch/2009/03/howto-configure-apache-to-return-a-http-204-no-content-for-ajax.html

+1

La URL google.com/csi devuelve 204 y parece que se usa para el seguimiento . Pero no creo que tenga ninguna conexión con generate_204 (la URL sobre la que pregunta) –

+0

, quizás sea solo un error (http://en.wikipedia.org/wiki/Web_bug) – mykhal

1

con el mandato masiva de Google de dejar de spam y el roce de su base de datos de búsqueda, creo que esto es parte del esfuerzo para realizar un seguimiento de los robots, etc.

algunos simples seudo contra bot podría ir así.

On GET (google.*) Save RemoteEndPoint 
{ 
    If RemoteEndPoint GETs (clients1.google.com/generate_204) Then 
     Set botAlert_stage1 = false; 
    Else 
     Set botAlert_stage1 = true; 
    End If 
} 

también creo que la última portada Google 'tema' es también una nueva herramienta para ayudar con la actividad anti spam/bot.

** NOTA ** ipv6.google.com también incluye esta medida.

Just my infundado sin blindaje dos 2p.

+1

¿por qué downvote? él tiene un punto válido. especulación, pero eso es todo lo que podemos hacer, ya que no podemos saber con certeza para qué usa Google sus 204. – bjornl

-1

Bueno, he estado mirando esto por algunas veces y como resultado, Google registra los comentarios de los usuarios que provienen de la primera vez que visitan el google.com para ex; seguimiento con Google Chrome tengo un 90% adivinar que su para Referers de registro, tal vez estadísticas User-Agent bien sabido que Google libere su lista de las normas de uso de los navegadores:

encabezados de respuesta

  • Content-Length: 0
  • Content-Type: text/html
  • Fecha: Vie, 21 de Mayo 2010 17:06 : 24 GMT
  • Servidor: GFE/2.0

aquí "Referer" bajo "^Solicitar encabezados" muestra las estadísticas de Googles que muchas personas vienen de Microsoft.com, también el análisis de la palabra "Windows 7" a ayuda que me centre en Windows 7 en mis-up siguientes búsquedas esa sesión

// Steven

0

La generación 204 podría cargar dinámicamente las sugerencias de los criterios de búsqueda.Como puedo ver desde mi script de prueba de carga, esto es aparentemente responsable de todos los servidores de llamadas Cada vez que el usuario escribe en el cuadro de texto

3

Este documento explica:

http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1417&context=ecetr&sei-redir=1

(Buscar generate204)

sección pertinente:

Entre los diferentes objetos, un func javascript ion desencadena una solicitud generate204 enviada al servidor de video que se supone que sirve el video. Esto inicia la captación previa de video, que tiene dos objetivos principales: primero, obliga al cliente a realizar la resolución DNS del nombre del servidor de video. En segundo lugar, obliga al cliente a abrir una conexión TCP hacia el servidor de video. Ambos ayudan a acelerar la fase de descarga de video.

Además, la solicitud generate204 tiene exactamente el mismo formato y las opciones de la solicitud de descarga de vídeo real, por lo que el servidor de vídeo es finalmente advirtió que un cliente posiblemente descargar ese video muy pronto. Tenga en cuenta que el servidor de video responde con una respuesta 204 No Content, tal como lo implica el comando, y hasta el momento no se ha descargado ningún contenido de video.

32

me encontré con este viejo hilo, mientras google'ing para generate_204 como Android parece usar esto para determinar si la WLAN está abierto (respuesta 204 se recibe) cerrada (no hay respuesta en absoluto) o bloqueado (redirigir al portal cautivo está presente). En ese caso, se muestra una notificación de que se requiere un inicio de sesión de conexión Wi-Fi ... enter image description here

+0

¿Cómo saben que esto está sucediendo en Android? Es el tráfico que se olfatea. Tienes una fuente. Pero eso es genial para usar un método de bajo costo aquí. Ninguna motosierra vuela matamoscas. – HeyWatchThis

+0

De acuerdo: he visto este comportamiento en Android y en el escritorio de Chrome.La dirección generate_204 se puede ver en la barra de direcciones cuando se responde al mensaje 'Iniciar sesión en red WiFi requerida'. – paulw1128

+0

Recibí este error cuando estaba jugando con Hotspotsystem y estaba usando un teléfono con Android. –

15

En el caso de que Chrome detecte tiempos de espera de conexión SSL, certificado errores, u otros problemas de red que podrían ser causados ​​por una cautivo portal (la red WiFi de un hotel, por ejemplo), Chrome realizará una solicitud sin cookies al http://www.gstatic.com/generate_204 y verificará el código de respuesta. Si se redirecciona esa solicitud, Chrome abrirá el objetivo de redireccionamiento en una nueva pestaña en el supuesto de que se trata de una página de inicio de sesión. Las solicitudes a la página de detección del portal cautivo no se registran.

Fuente: Google Chrome privacidad Whitepaper

8

Google está usando esto para detectar si el dispositivo está en línea o en el portal cautivo.

Shill, el administrador de conexión para Chromium OS, intenta detectar servicios que están dentro de un portal cautivo cuando un servicio pasa al estado listo. Esta determinación de estar en un portal cautivo o estar en línea se hace intentando recuperar la página web http://clients3.google.com/generate_204. Se sabe que esta URL bien conocida devuelve una página vacía con un estado HTTP 204. Si por algún motivo no se devuelve la página web, o se recibe una respuesta HTTP distinta de 204, entonces se indica que el servicio se encuentra en el estado del portal.

Aquí está la explicación pertinente de la Google Chrome Privacy Whitepaper:

En el caso de que Chrome detecte tiempos de espera de conexión SSL, errores de certificado, u otros problemas de red que podrían ser causados ​​por un portal cautivo (Wi-Fi de un hotel red, por ejemplo), Chrome hará una solicitud sin cookies al http://www.gstatic.com/generate_204 y verificará el código de respuesta. Si se redirecciona esa solicitud, Chrome abrirá el objetivo de redireccionamiento en una nueva pestaña suponiendo que se trata de una página de inicio de sesión. Las solicitudes a la página de detección del portal cautivo no se registran.

Más información: http://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection

2

Muchas aplicaciones tienen acceso a esta dirección URL para determinar si tienen una conexión que sólo conduce a un portal cautivo.

La idea es que cualquier portal cautivo piense que este es un sitio web "normal" y luego lo redirecciona al sitio del portal, que se devuelve con un estado 200. Si una aplicación intenta acceder a un sitio web normal, se enfrenta con una respuesta totalmente inesperada y puede tener problemas para descubrir lo que está mal. Sin embargo, con esta URL es fácil: si obtiene el estado 200, se encuentra dentro de un portal cautivo y puede decirle a su usuario que haga algo al respecto (generalmente inicie sesión en el portal usando un navegador o apague el WiFi y confíe en 3G, si están usando un teléfono). Si obtiene el estado 204, se conectó a Google, por lo que su aplicación está realmente conectada a Internet.

Microsoft y Apple utilizan un enfoque ligeramente diferente; ambos tienen algunas URL que devuelven un mensaje de texto breve muy específico con un estado 200, por lo que en lugar de acceder a la url de Google puedes ir a "captive.apple.com" y verificar el estado 200 con data = "Success" y nada más. Si obtienes el estado 200 y no exactamente esos datos, entonces estás de nuevo en un portal cautivo.

Cuestiones relacionadas