Как стать автором
Обновить
1127.1
OTUS
Цифровые навыки от ведущих экспертов

Советы по тестированию HTTP-прокси

Время на прочтение7 мин
Количество просмотров4.9K
Автор оригинала: Alan Richardson
image

TLDR; Коллекция советов по работе с HTTP-прокси. Применяйте прокси на localhost или с мобильного, используя имя своего компьютера или частный ip-адрес из ifconfig (или ipconfig). Цепочка прокси-серверов позволяет использовать возможности всех инструментов одновременно и делает манипуляцию запросами более надежной. Charles Proxy может проверять HTML как часть тестирования.

Рекомендации:
  • Используйте прокси для доступа к сервисам на localhost, используя имя своего компьютера или частный ip-адрес из ifconfig (или ipconfig).
  • Мобильные устройства могут использовать прокси на вашей основной машине, если вы найдете ее ip-адрес и настроите инструмент для указания прокси на этом ip-адресе.
  • Используйте плагин для браузера, например Foxy Proxy Standard, чтобы упростить переключение между прокси.
  • Charles Proxy может в фоновом режиме проверять HTML в процессе тестирования.

Работа с Localhost


При работе с локально установленными приложениями или при тестировании приложений, запущенных из локального контейнера docker, возникает проблема, связанная с тем, что они работают на localhost, и нам может понадобится проксировать их.

Общие методы


Вместо localhost:80

Использовать:
  • имя машины, например, machinename:80
  • ваш частный ip-адрес, например 192.168.1.132:80

Существует ряд частных и недоступных из интернета ip-адресов

Ip-адрес вашей машины можно посмотреть с помощью ifconfig или ipconfig (если вы работаете на Windows).

Использование прокси на локальной машине обычно подразумевает использование этого ip-адреса и должно работать независимо от выбранного прокси.

Когда мне нужно найти ip-адрес на mac, я комбинирую ifconfig с grep, чтобы упростить просмотр результатов:

ifconfig | grep "inet "

Charles Proxy


www.charlesproxy.com/documentation/faqs/localhost-traffic-doesnt-appear-in-charles

Charles Proxy поддерживает адрес localhost.charlesproxy.com, поэтому можно добавить порт, на котором он запущен, и трафик появится в Charles.

Fiddler


docs.telerik.com/fiddler/Configure-Fiddler/Tasks/MonitorLocalTraffic

Fiddler поддерживает два специальных адреса, которые можно использовать вместо localhost

Демо-видео

Связывание нескольких HTTP-прокси в цепочку


Я связываю отладочные HTTP-прокси в цепочку.

Таким образом, я могу одновременно использовать их фичи:
  • Fiddler Autoresponders
  • построение карты сайта с помощью Burp Suite
  • множественные брейкпоинты в ZAP
  • написание скриптов в ZAP для изменения запросов и ответов.

Я также обнаружил, что это полезно при создании сценариев в прокси-серверах. Иногда по какой-то причине сгенерированный http-запрос после внесения поправок скриптом отправляется в браузер или на сервер не полностью. Но когда я выстраиваю цепочку прокси-серверов, и скрипт, вносящий поправки в запрос или ответ, проходит через другой прокси-сервер, прежде чем попасть к адресату, это, похоже, помогает.

Fiddler


Fiddler работает на системе Windows без каких-либо дополнительных настроек. Все остальные прокси указывают на Fiddler как на downstream-прокси.

Когда Fiddler запущен, проверьте настройки, направив браузер через Fiddler.

Burp Suite


Вкладка Burp Suite Options. Upstream Proxy Servers. Добавьте запись для Fiddler:
  • Destination Host: *
  • Proxy Host:: localhost
  • Proxy Port: 8888

На этом этапе еще раз протестируйте настройки. Не стоит соединять все в цепочку и пытаться понять, где проблема. Запустите браузер через Burp Suite и убедитесь, что трафик проходит через него.

Если вы застряли, используйте вкладку Alerts в Burp Suite для проверки ошибок.

ZAP


Tools Options Connection. Направьте его через Burp Suite
  • Порт: 8082 (или тот, к которому вы привязали Burp Suite).

Найдите порт, к которому вы привязали ZAP в Tools Options Local Proxy.

И теперь направьте браузер через этот порт.

Завершение


У вас должно все получиться.

Если нет, просто вернитесь к предыдущему шагу.

Шаг за шагом проверяйте каждую часть пути. Если что-то не работает, то, скорее всего, просто из-за глупой ошибки, связанной с тем, что у вас остались предыдущие настройки от предыдущей сессии.

Не забудьте вернуть все в исходное положение, когда закончите.

На видео курса Technical Web Testing 101 я показываю этот процесс подробнее.

Полезные ссылки:

Мобильные устройства


Настройка просмотра HTTP-трафика с мобильных браузеров не занимает много времени, но есть несколько подводных камней, о которых следует помнить:

  • Найти правильный IP-адрес на десктопе.
  • Изменить настройки прокси на телефоне.
  • Убедиться, что прокси-сервер разрешает внешние подключения.
  • Убедиться, что и мобильное устройство и прокси-машина находятся в одной сети.


Я обычно использую:
  • Телефон, подключенный к сети Wi-Fi.
  • Компьютер с Windows, подключенный к той же сети через проводное соединение (или ноутбук, подключенный через беспроводное соединение).

Для примера возьмем Fiddler в качестве отладочного прокси, на десктопе:
  • Запустите Fiddler.
  • Убедитесь, что в Fiddler включена настройка «Разрешить подключение удаленных компьютеров» (“Allow remote computers to connect”, через Tools Fiddler Options Connections).
  • Запустите командную строку и с помощью команды «ipconfig» откройте текущий список ip-адресов для вашего компьютера.
  • Настройте мобильное устройство.


Устройства Android


На мобильном устройстве:
  • Откройте Настройки.
  • Настройки Wi-Fi.
  • Длительным нажатием на пункт «используемая беспроводная сеть» (Wireless Network) откройте настройки подключения (connection settings).
  • Выберите «Изменить конфигурацию сети» (Modify Network Config).
  • Настройки прокси (Proxy Settings) — Вручную (Manual).
    • Измените имя хоста прокси на IP-адрес вашего компьютера.
    • Добавьте порт для отладочного прокси, например 8888 для Fiddler.

После этого ваш браузер должен подключиться к прокси.

(Примечание: приведенное выше относится к Android, но принцип работы одинаков и для других операционных систем).

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

На Android: Chrome, Firefox, Dolphin и встроенный браузер работали без проблем. У меня возникли проблемы с подключением Opera, но я даже не стал пытаться выяснить причину.

Попробуйте и посмотрите, что у вас получится.

Это значительно повышает наглядность тестирования при работе через мобильные устройства.

Дополнительные примечания:
  • Для Burp Suite в разделе «Proxy Options» измените Proxy Listener to Bind на “All interfaces”.

Как подключить прокси к устройствам iOS


Подключение iOS-устройства к HTTP-прокси происходит примерно так же, как и в случае с Android-устройствами.

Зайдите в настройки iOS:
  1. В разделе Wi-Fi
  2. Выберите значок информации (i) рядом с вашей сетью Wi-Fi.
  3. В нижней части экрана находятся настройки HTTP-прокси.
  4. Установите для него значение Manual.
  5. Введите IP-адрес и порт сервера вашего прокси.

Готово.

Теперь HTTP-трафик должен проходить через десктопный прокси-сервер.

iOS хорошо кэширует, поэтому я либо очищаю кэш перед началом тестирования с помощью настроек Safari и пункта «Очистить Cookies и данные», либо использую ссылку «Private» в нижней части Safari перед началом новой сессии.

Я обнаружил, что iOS не любит подключаться к некоторым сетям, поэтому я настроил локальную точку доступа с помощью connectify.me, и это немного облегчило мне жизнь.

Не забудьте отключить прокси-сервер, когда закончите работу.

Простая настройка Chrome и Firefox


Одним из инструментов, который помог мне извлечь больше преимуществ прокси, является плагин для браузера под названием FoxyProxy.
  • FoxyProxy Standard — см. getfoxyproxy.org/.

Установив FoxyProxy, я запускаю прокси и выбираю конфигурацию. Большинство прокси по умолчанию используют 8080, поэтому одна конфигурация обычно отвечает большинству моих потребностей.

Без этого мне приходится возиться с настройками браузера или сети, и я никогда бы не стал использовать прокси.

Это также позволяет легко отключить проксирование и вернуться к нормальной работе.

Если вы работаете с HTTP-прокси, я рекомендую установить плагин, который поможет переключаться между ними и отключать их.

Проверка HTML с помощью Charles Proxy


TLDR; Charles Proxy может использовать validator.w3.org и показывать результаты в графическом интерфейсе прокси.

Посмотрев на свой стандартный процесс тестирования для веб и поняв, что он не включает проверку HTML по умолчанию, я решил найти самый простой способ добавить ее в свой процесс. Я вообще считаю, что чем проще я могу добавить что-то в свой процесс, тем больше вероятность того, что я буду это использовать — как и в случае с расширением Foxy Proxy.

Мы все теперь используем Dev Tools по умолчанию


Инструменты Dev Tools (инструменты разработчика) теперь по умолчанию включены в каждый браузер. Раньше нам приходилось загружать плагины и расширения. Но теперь, когда они по умолчанию доступны одним щелчком мыши, у нас нет оправданий.

Но валидация HTML, похоже, отсутствует. Я могу «проверить» производительность страницы в инструментах разработчика Chrome, и считаю проверку использования CSS весьма полезной. Но валидация HTML отсутствует.

Что представляет собой больший технический риск для функциональности ваших продуктов? CSS? Скорость? HTML?

К сожалению, последний, на мой взгляд, вызывает больше проблем на всех устройствах, чем любой другой.

Так что же поможет мне разобраться с основами? И сделать это без излишних усилий.

Я упоминал о validator.w3.org в другой статье. Но это требует работы. Приходится проверять каждую страницу по очереди.

Быстрый поиск в Интернете выявил множество инструментов проверки HTML. Некоторые из них на первый взгляд выглядят вполне неплохо. Но они требуют добавления нового типа инструмента в мой рабочий процесс, что означает, что мне придется изменить способ тестирования, а это в свою очередь значит, что мне придется больше работать, чтобы внедрить его.

Что мне действительно было нужно, так это прокси, проверяющий HTML


  • Я поискал плагины Fiddler для проверки HTML, но не нашел ни одного.
  • Я не мог вспомнить, чтобы какой-либо из моих прокси предлагал проверку HTML.

Но при поиске в Интернете прокси-серверов, проверяющих HTML, я обнаружил Charles Proxy.

Я уже использовал Charles Proxy, но он, по моему мнению, не отличался какими-либо преимуществами. Видимо, мне не хватало функции проверки HTML.

Но вот она, как на ладони.



Что делает опция Validate в Charles Proxy?


Учитывая урлы, которые вы выделили в «сессии», Charles откроет новую вкладку «валидация» и передаст каждый из этих адресов валидатору w3.org и отформатирует результаты.



Цепочка прокси позволяет воспользоваться этим преимуществом, даже если мы предпочитаем использовать один из других прокси для наблюдения и манипуляций. Я всегда могу добавить Charles в цепочку и использовать его для проверки в процессе работы.

Поскольку Charles является кроссбраузерным, я использую его для тестирования на Windows и Mac.

Резюме


  • Изучите свой собственный рабочий процесс.
  • Найдите инструменты, которые вписываются в него.
  • Узнайте, что умеют делать инструменты, которыми вы уже пользуетесь.
  • Попытайтесь плавно добавить автоматическую валидацию в свой рабочий процесс.
  • Charles Proxy может использовать валидатор w3.org для проверки HTML.

Признаю, что с этими пунктами у меня возрос объем работы и количество процессов, требующих наблюдения. Но я все же надеюсь, что эти нововведения положительно скажутся на процессе тестирования в общем.

Теги:
Хабы:
Всего голосов 10: ↑8 и ↓2+8
Комментарии0

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS