Google.com и clients1.google.com/generate_204

Я изучал сетевую активность google.com в firebug только потому, что мне было любопытно, и я заметил, что запрос возвращает "204 Нет контента".

Оказывается, что "204 Нет содержимого" в первую очередь предназначен для обеспечения возможности ввода действий, не вызывая изменений в активном представлении документа агента пользователя, хотя любая новая или обновленная метаинформация ДОЛЖНА применяться к документу, в настоящее время активному агенту пользователя. Посмотреть." Без разницы.

Я посмотрел исходный код JS и увидел, что "generate_204" запрашивается так:

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

Нет объявления / назначения переменных вообще.

Моя первая идея заключается в том, что он использовался для отслеживания, включен ли Javascript. Но вызов "(new Image).src='...'" в любом случае вызывается из динамически загружаемого внешнего файла JS, так что это будет бессмысленно.

У кого-нибудь есть какие-либо идеи относительно того, в чем смысл?

ОБНОВИТЬ

"/generate_204", по-видимому, доступен на многих службах / серверах Google (например, maps.google.com/generate_204, maps.gstatic.com/generate_204 и т. д.).

Вы можете воспользоваться этим, предварительно загрузив страницы generate_204 для каждого сервиса Google, который может использовать ваше веб-приложение. Как это:

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];
    }
};

11 ответов

Решение

Как сказал Снуккер,Клиентс1.google.com - это источник предложений для поиска. Я предполагаю, что они делают запрос, чтобы принудительно ввести client1.google.com в кеш DNS, прежде чем он вам понадобится, поэтому у вас будет меньше задержек при первом "реальном" запросе.

Google Chrome уже делает это для любых ссылок на странице, и (я думаю), когда вы вводите адрес в адресной строке. Это похоже на способ заставить все браузеры делать то же самое.

Я нашел эту старую ветку, пока google'ing для generate_204, так как Android, кажется, использует это, чтобы определить, открыт ли wlan (получен ответ 204), закрыт (вообще нет ответа) или заблокирован (имеется перенаправление на портал авторизации). В этом случае отображается уведомление о том, что требуется вход в WiFi...

В случае, если Chrome обнаруживает тайм-ауты SSL-соединения, ошибки сертификатов или другие проблемы с сетью, которые могут быть вызваны встроенным порталом (например, сетью WiFi отеля), Chrome отправит запрос без файлов cookie на http://www.gstatic.com/generate_204 и проверьте код ответа. Если этот запрос перенаправлен, Chrome откроет цель перенаправления в новой вкладке, если предположить, что это страница входа. Запросы на страницу обнаружения портала не регистрируются.

Шрифт: Технический документ по конфиденциальности Google Chrome

Google использует это, чтобы определить, находится ли устройство в сети или на портале авторизации.

Shill, менеджер соединений для Chromium OS, пытается обнаружить сервисы, которые находятся на встроенном портале, когда сервис переходит в состояние готовности. Это определение того, что вы находитесь в захваченном портале или в сети, выполняется путем попытки получить веб-страницу http://clients3.google.com/generate_204. Известно, что этот общеизвестный URL-адрес возвращает пустую страницу со статусом HTTP 204. Если по какой-либо причине веб-страница не возвращается или получен ответ HTTP, отличный от 204, то служба Shill помечает службу как находящуюся в состоянии портала.

Вот соответствующее объяснение из Белой книги о конфиденциальности Google Chrome:

В случае, если Chrome обнаруживает тайм-ауты SSL-соединения, ошибки сертификатов или другие проблемы с сетью, которые могут быть вызваны встроенным порталом (например, сетью WiFi отеля), Chrome отправит запрос без файлов cookie на http://www.gstatic.com/generate_204 и проверьте код ответа. Если этот запрос перенаправлен, Chrome откроет цель перенаправления в новой вкладке, если предположить, что это страница входа. Запросы на страницу обнаружения портала не регистрируются.

Более подробная информация: http://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection

204 ответа иногда используются в AJAX для отслеживания кликов и активности страницы. В этом случае единственной информацией, передаваемой на сервер в запросе get, является файл cookie, а не конкретная информация в параметрах запроса, поэтому здесь, похоже, это не так.

Похоже, clients1.google.com является сервером, поддерживающим поисковые запросы Google. Когда вы посещаете http://www.google.com/, файл cookie передается по http://clients1.google.com/generate_204. Возможно, это для запуска какой-то сессии на сервере? Безотносительно использования, я сомневаюсь, что это очень стандартное использование.

Я полагаю, что благодаря огромному желанию Google остановить спам и очистку своей поисковой базы данных это часть усилий по отслеживанию ботов и т. д.

Некоторые простые анти-бот псевдо может пойти так.

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
}

Я также считаю, что последняя тема Google на главной странице также является новым инструментом, помогающим бороться со спамом и ботами.

** ПРИМЕЧАНИЕ ** ipv6.google.com также включает эту меру.

Просто мои необоснованные два незащищенных 2р.

Многие приложения обращаются к этому URL, чтобы определить, есть ли у них соединение, которое ведет только к захваченному порталу.

Идея состоит в том, что любой захваченный портал считает, что это "обычный" веб-сайт, а затем перенаправляет вас на свой сайт портала, который возвращается со статусом 200. Если приложение пытается получить доступ к любому нормальному веб-сайту, оно сталкивается с совершенно неожиданным ответ и могут возникнуть проблемы с выяснением, что не так. Однако с этим URL все просто: если вы получаете статус 200, вы находитесь в захваченном портале, и вы можете сказать своему пользователю что-то с этим сделать (обычно либо входите в портал с помощью браузера, либо выключаете WiFi и полагаетесь на 3G, если они используют телефон). Если вы получили статус 204, вы подключились к Google, поэтому ваше приложение фактически подключено к Интернету.

Microsoft и Apple используют немного другой подход; у них обоих есть несколько URL-адресов, которые возвращают очень специфическое короткое текстовое сообщение со статусом 200, поэтому вместо доступа к URL-адресу Google вы можете, например, перейти на "captive.apple.com" и проверить статус 200 с данными = "Успех" и ничего больше. Если вы получаете статус 200, а не точно эти данные, то вы снова находитесь на портале.

Этот документ объясняет:

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

(Поиск сгенерировать204)

Соответствующий раздел:

Среди различных объектов функция javascript запускает запрос generate204, отправляемый на видеосервер, который должен обслуживать видео. Это запускает предварительную выборку видео, которая преследует две основные цели: во-первых, она заставляет клиента выполнять DNS-разрешение имени видеосервера. Во-вторых, это заставляет клиента открывать TCP-соединение с видеосервером. Оба помогают ускорить фазу загрузки видео.

Кроме того, запрос generate204 имеет точно такой же формат и параметры, как и у реального запроса на загрузку видео, поэтому в конечном итоге видеосервер получает предупреждение о том, что клиент, возможно, очень скоро загрузит это видео. Обратите внимание, что видеосервер отвечает 204 No Content ответ, как подразумевается командой, и пока не загружается видеоконтент.

Я нашел этот пост, который объясняет, что он используется для записи кликов. Без официального слова от Google можно было бы использовать любое количество вещей.

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

Генерирование 204 может динамически загружать предложения критериев поиска. Как я могу видеть из моего скрипта нагрузочного теста, это, по-видимому, отвечает за каждый вызов сервера каждый раз, когда пользователь вводит текстовое поле

Ну, я смотрел на это несколько раз, и в результате Google регистрирует рефери, откуда они приходят, впервые посещая google.com, например; отслеживание с помощью Google Chrome У меня есть 90% предположений, что это для регистраторов ссылок, может быть, статистика User-Agent хорошо известна, когда Google выпустит свой список стандартов использования браузера:

Заголовки ответа

  • Длина контента: 0
  • Тип контента: текст / HTML
  • Дата: пт, 21 мая 2010 17:06:24 GMT
  • Сервер: GFE/2.0

Здесь "Referer" в разделе "^ Request Headers" показывает статистику Googles о том, что многие люди приходят с Microsoft.com, а также анализирует слово "Windows 7", чтобы помочь мне сосредоточиться на Windows 7 в последующих поисках в этом сеансе.

// Стивен

Другие вопросы по тегам