Выявление пользовательских веб-запросов - PullRequest
3 голосов
/ 20 ноября 2011

Просто взглянув на tcp-перехват всего сеанса просмотра веб-страниц HTTP, можно было бы различить веб-запросы, инициированные пользователем (либо щелкнув ссылку, либо введя URL-адрес вадресная строка) и веб-запросы, которые были отправлены (браузером) в результате объектов веб-страницы (изображения, iframes, ajax и т. д.).

Заголовок Referer не отвечает требованию,поскольку его значение будет одинаковым в случае инициированного пользователем клика по ссылке и запроса браузера для объекта веб-страницы на этой странице.

1 Ответ

1 голос
/ 05 декабря 2011

Простого решения этого не существует, и я сомневаюсь, что это можно сделать даже надежно, но вот несколько советов о том, как можно фильтровать данные в несколько этапов:

  1. Keep-Alive: HTTP допускает несколько последовательных запросов для одного и того же TCP-соединения (если поддерживается keepalive). Вероятно, можно с уверенностью предположить, что только первый запрос по TCP-соединению может быть инициирован пользователем, а остальное должно быть для изображений / сценариев, связанных с этой страницей. Это должно значительно сократить количество запросов, которые необходимо проанализировать.

  2. Тип содержимого: Если вы готовы предположить, что только HTML был загружен через инициированные пользователем запросы, вы можете отфильтровать все, что ответ не соответствует определенному Content-Type (например, текст / html)

  3. Тело ответа: Теперь у вас остались только HTML-ответы, но, глядя на заголовки запроса / ответа, почти невозможно отличить запрос iframe от нажатой ссылки, поскольку Referer будет быть одинаковыми в обоих случаях (хотя большинство загрузок iframe, вероятно, были отфильтрованы на шаге 1). Чтобы уточнить это далее, вам нужно будет проанализировать каждый ответ HTML и найти любые <iframe src="..." или <link rel="prefetch", которые могут вызвать загрузку HTML, которые не были инициированы пользователем, а затем отфильтровать запросы, которые были сделаны для этих ресурсов.

Ничто из этого не дает идеального анализа, но может быть достаточно для ваших целей. Например, обнаружение запросов из <meta> refresh, вероятно, будет невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...