2013-05-05 2 views
9

Я разрабатываю расширение браузера. Расширение работает на внешних сайтах, на которые мы не контролируем.Имитация удаленного сайта локально для тестирования

Я хотел был бы испытать расширение. Одна из основных проблем, с которыми я сталкиваюсь, - это отображение веб-сайта «как есть» локально.

Возможно ли отображение веб-сайта «как есть» локально?

Я хочу, чтобы иметь возможность обслуживать сайт точно как есть локально для тестирования. Это означает, что я хочу смоделировать точные данные HTTP, включая объявления iframe и т. Д.

  • Есть ли простой способ сделать это?

Подробнее:

Я хотел бы мою систему, чтобы действовать как близко к удаленному веб-сайт, как это возможно. Например, я хотел бы запустить команду fetch, которая позволила бы мне перейти на сайт в моем браузере (без Интернета) и получить то же самое, что и в противном случае (включая информацию, которая не относится к одному домену, объявления google , и т.д).

Я не против использования виртуальной машины, если это помогает.

Я понял, что это было очень полезно при тестировании. Особенно, когда у меня есть ошибка, мне нужно надежно воспроизводить на сайтах с множеством случайных факторов (какие объявления показывают и т. Д.).

ответ

4

Как уже упоминалось, кеширующие прокси должны делать трюк для вас (BTW, это самое простое решение).Существует довольно много различных реализаций, поэтому вам просто нужно потратить некоторое время на выбор подходящего (согласно моему опыту, кальмар - хорошее решение). Во всяком случае, я хотел бы выделить две другие интересные варианты:

Вариант 1: Betamax

Betamax является инструментом для насмешливый внешних HTTP-ресурсов, таких как веб-сервисы и REST API-интерфейсы в ваших тестах. Проект был вдохновлен библиотекой VCR для Ruby. Betamax нацелен на решение этих проблем путем перехвата HTTP-соединений, инициированных вашим приложением, и повторного воспроизведения ранее записанных ответов.

Betamax поставляется в двух вариантах. Первый - это HTTP и HTTPS-прокси, которые могут перехватывать трафик, который каким-либо образом соответствует свойствам http.proxyHost и http.proxyPort для Java. Вторая - простая оболочка для Apache HttpClient.

BTW, Betamax имеет очень интересную особенность для вас:

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

Вариант 2: Wireshark и переигровка прокси

захватить весь трафик вы заинтересованы в использовании Wireshark и воспроизводить его. Это я бы сказал, что это не так сложно реализовать необходимый инструмент воспроизведения, но вы можете использовать доступное решение под названием replayproxy

Replayproxy разбирает HTTP потоки из .pcap файлов открывает TCP сокет на порту 3128 и слушает, как HTTP прокси, используя извлеченные HTTP-ответы в качестве кеша, отказываясь от всех запросов на неизвестные URL-адреса.

Такой подход обеспечивает полное управление и точечное моделирование бит-бит.

+0

Replayproxy звучит точно так, как мне нужно, и это всего лишь 200 строк кода. Я уверен, что смогу работать с его кодом и проводной акулой, чтобы получить нужное мне поведение. Это решает мою проблему, спасибо. –

1

Я не знаю, есть ли простой способ, но есть способ.

Вы можете настроить локальный веб-сервер, например, IIS, Apache или minihttpd.

Затем вы можете получить содержимое веб-сайта, используя wget. (У него есть возможность для зеркалирования). И у многих браузеров есть опция «сохранить всю веб-страницу», которая будет захватывать все, как изображения.

Объявления, скорее всего, поступают с удаленных сайтов, поэтому вам, возможно, придется вручную отредактировать эти строки в HTML, чтобы либо не ссылаться на фактические рекламные серверы, либо настроить самодельное объявление самостоятельно (например, изображение баннера).

Затем вы можете перейти в свой браузер на http://localhost, чтобы посетить ваш локальный веб-сайт, предполагая, что порт 80 является стандартным.

Надеюсь, это поможет!

+0

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

+0

Теоретически вы можете отображать объявления так же, как и на главном веб-сайте, хотя в какой-то момент вы, вероятно, столкнетесь с тем, что многие объявления/сайты обслуживаются динамически, а не только через статический контент. – canhazbits

1

Я предполагаю, что вы хотите обслуживать удаленный сайт, который не находится под вашим контролем. В этом случае вы можете использовать прокси-сервер и каждый сервер кэшировать каждый ответ агрессивно. Однако у этого есть свои ограничения. Прежде всего вам придется посетить каждый сайт, который вы собираетесь использовать через этот прокси (например, с браузером), во-вторых, вы не сможете эмулировать обработку формы.

В качестве альтернативы вы можете использовать паук для загрузки всего содержимого определенного веб-сайта. В зависимости от программного обеспечения для пауков он может даже загрузить загруженные JavaScript-ссылки. Затем вы можете использовать веб-сервер для обслуживания этого контента.

+0

Прокси-сервер звучит как правая _idea_, но как бы я продолжал _implementing_ такого рода вещи без необходимости писать прокси-сервер сам? –

+0

Я не знаю, какой прокси-сервер может сделать такое агрессивное кэширование, но вы можете взглянуть на кальмара, он довольно популярен. Какую ОС вы используете? – Janoszen

+0

ОС не проблема, я не против использовать Windows или Linux для этого. Мы хорошо финансируемая компания. –

0

Эта услуга http://www.json-gen.com обеспечивает макет для html, json и xml через отдых. Таким образом, вы можете протестировать свой интерфейс отдельно от бэкэнд.

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится, в результате ваш ответ окажется бесполезным и, следовательно, будет удален. – kayess

Смежные вопросы