JS или любой другой языковой хук для загрузки ресурсов на HTML-странице

Что я пытаюсь выполнить:

  1. HTTP GET содержимое сайта (скажем, google.com)
  2. Затем создайте какой-нибудь хук или фильтр, который будет перехватывать все ресурсы, которые пытается загрузить эта страница (например, файлы CSS, все файлы JavaScript, все изображения, все фреймы и т. д.).

Первое, что приходит на ум, это проанализировать загруженную страницу/код и извлечь все теги, которые могут ссылаться на ресурс, однако их очень много, и некоторые из них сложны, например, фоновое изображение, объявленное в CSS, например:

body {background-image:url('paper.gif');} 

Кроме того, мне нужно перехватить все ресурсы, предназначенные для загрузки через JavaScript. Например, есть функция JS, которая будет генерировать URL-адрес, а затем интерпретировать его для загрузки ресурса.

По этой причине я думаю, что мне нужен какой-то хук или фильтр/монитор.

Язык программирования не имеет значения (хотя было бы неплохо что-то, что работает на Unix-боксе).

ОБНОВЛЕНИЕ: это должно быть автоматизированное решение.

Спасибо.


person Alexandru Luchian    schedule 23.02.2010    source источник


Ответы (3)


Я предполагаю, что вы ищете полностью автоматизированное решение.

Существует несколько подходов к синтаксическому анализу файла (во всех основных языках сценариев, на основе wget и других), но ни один из них, насколько мне известно, не может на самом деле интерпретировать JavaScript (потому что это то, к чему все сводится) .

Я думаю, что единственный вариант, который у вас есть, — это настроить экземпляр Firefox (или другого современного браузера) на вашей машине Unix/Linux, передать ему URL-адрес и отслеживать/блокировать все исходящие соединения, которые он пытается установить. На клиентском ПК это содержимое вкладки «Сеть» в Firebug. Можно ли и в какой степени это можно автоматизировать без фактического переписывания частей браузера, я не знаю. Возможно, Selenium RC или один из других инструментов Selenium люкс является отправной точкой.

person Pekka    schedule 23.02.2010
comment
Я не очень большой эксперт в этом, но, может быть, для этой цели лучше использовать библиотеки/движки Gecko или WebKit? - person Alexandru Luchian; 23.02.2010
comment
@Heavy Bytes, вероятно, да (я сам не эксперт во внутреннем устройстве браузера). Однако я почти уверен, что движок JavaScript является отдельной частью от движка рендеринга, что может вызвать проблемы при создании приложения. - person Pekka; 23.02.2010

Самый простой способ сделать это — написать надстройку Fiddler.

person SLaks    schedule 23.02.2010

Вы всегда можете настроить прокси-сервер, например fiddler, и посмотреть на трафик — что угодно, кроме начального вызова страница будет дополнительными ресурсами, которые запрашиваются.

person Oded    schedule 23.02.2010
comment
Не решает вопрос, как автоматизировать выборку страницы и интерпретацию JavaScript. - person Pekka; 23.02.2010
comment
Ну, проблема в том, что это должно быть приложение. Дело не в том, что я буду запускать вручную. Мне нужно получить содержимое страницы, а затем, имея это содержимое, использовать его. Если мы собираемся работать в пути браузера, мне нужно что-то вроде JS для сбора ссылок. - person Alexandru Luchian; 23.02.2010