Pull to refresh

Разработчики объяснили, почему Chrome при запуске коннектится к трём случайным доменам

Reading time 2 min
Views 5K
Майк Вест (Mike West) из группы Google Chrome в Мюнхене объясняет, почему при каждой загрузке браузер пытается установить соединение с тремя случайными доменами, вроде hxxp://aghepodlln/ или hxxp://lkhjasdnpr/. Он говорит, что видел в интернете несколько странных конспирологических теорий на этот счёт, поэтому считает разумным разъяснить ситуацию.

Истинная причиной таких запросов проста: быстро определить, находится ли клиент в сети, которая перехватывает и перенаправляет запросы к несуществующим хостам. Иногда бывает, что некоторые интернет-провайдеры перенаправляют запросы типа hxxp://text/ на что-то вроде hxxp://your.helpful.isp/search?q=text. Оставляя в стороне обсуждение, правильной или неправильной является такая «помощь» со стороны провайдера, но она вызывает проблемы у браузера Chrome. Конкретно, она мешает работе эвристических алгоритмов Omnibox, которые распознают поисковые запросы в строке ввода адреса.

Например, если ввести в адресной строке слово go, то Chrome выполнит поисковый запрос, но при этом в фоновом режиме отправит запрос HEAD на домен hxxp://go/. Если такой домен существует, то пользователю показывают информационную панель с вопросом, хочет ли он посетить данный сайт, и браузер запомнит этот ответ на будущее.

Очевидно, эта функция перестаёт работать нормально, если интернет-провайдер перехватывает такие запросы.

Поэтому Chrome и осуществляет проверку при запуске программы. Код браузера открыт, и поэтому можно посмотреть, как это реализовано в программе.

Модуль IntranetRedirectDetector при запуске программы создаёт новый объект IntranetRedirectorDetector. Он устанавливает короткую задержку (в данный момент 7 секунд), чтобы дать загрузиться всем важным модулям браузера, а затем срабатывает функция IntranetRedirectDetector::FinishSleep() и начинается реальная работа. Метод генерирует три случайных набора символов и отправляет асинхронные запросы HEAD к каждому из этих доменных имён, так что не выполняется запроса к кэшу и не сохраняются куки. После выполнения каждого из запросов вызывается функция IntranetRedirectDetector::OnURLFetchComplete() для записи результата. Если два из трёх запросов резолвятся на один и тот же хост, то этот хост сохраняется как сетевой "redirect origin". Всё просто.

Информация используется AlternateNavURLFetcher для определения, показывать ли пользователю информационную панель по каждому из запросов, которые обрабатывает Omnibox. Если запрос HEAD возвращает тот же сайт, что указан в "redirect origin", то он игнорируется. Если другой, то информационная панель может быть показана.

Представители Google ещё раз подчёркивают, что случайные запросы при загрузке браузера никуда не отправляют никакой приватной информации о пользователе и не используются для слежения. Эти запросы просто исправляют баг crbug.com/18942, и ничего больше.
Tags:
Hubs:
+110
Comments 75
Comments Comments 75

Articles