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 выпустит свой список стандартов использования браузера:
URL запроса: http://clients1.google.se/generate_204
Метод запроса: GET
Код статуса: 204 Нет содержимого
Заголовки ответа
- Длина контента: 0
- Тип контента: текст / HTML
- Дата: пт, 21 мая 2010 17:06:24 GMT
- Сервер: GFE/2.0
Здесь "Referer" в разделе "^ Request Headers" показывает статистику Googles о том, что многие люди приходят с Microsoft.com, а также анализирует слово "Windows 7", чтобы помочь мне сосредоточиться на Windows 7 в последующих поисках в этом сеансе.
// Стивен