Для целей тестирования мне нужно изменить содержимое указанного URL, чтобы увидеть, как приложение отреагирует на него. Есть ли способ сделать это в Windows?
Пример: заставить Foo.exe получать <html><body><p>Hello!</p></body></html>
при запросе GET http://www.google.com
.
решение1
Вы можете использоватьСкрипачдля этого. Он действует как прокси между вашим компьютером и Интернетом. Одна из его функций, называемая AutoResponder, может использоваться для изменения способа обработки определенных запросов. Он даже позволит вам имитировать задержки.
- Запустите Fiddler. Он автоматически установит прокси при запуске и удалит его при выходе.
- Переключить наАвтоответчиктаб. ПроверитьВключить правила.
- Добавьте правило. Для точного соответствия URL используйте
EXACT:
префикс, например.EXACT:http://www.example.com/api/v2/lists
. Выберите файл, который вы хотите использовать в качестве ответа. Файл должен содержать полный ответ HTTP, включая заголовки. - НажмитеСохранятьи наблюдайте, как происходит волшебство.
Конечно, чтобы это работало, ваше приложение должно учитывать конфигурацию прокси-сервера системы. Если нет, но вы можете ввести настройки прокси-сервера вручную, Fiddler будет работать на localhost:8888 по умолчанию — вы можете использовать это.
Если вы не хотите вручную создавать действительный файл ответа HTTP, просто создайте файл с любым содержимым, загрузите его на любой сервер и откройте в браузере. Он должен появиться в Fiddler. Щелкните его правой кнопкой мыши, затем щелкнитеСохранить → Ответ → Весь ответ.
Если веб-сайт, который вы хотите заменить, использует SSL/TLS (подключение HTTPS), это немного сложнее. Fiddler можно настроить для выполнения атаки «человек посередине» на такие соединения (он в основном расшифрует их, используя действительный сертификат, отредактирует ответ в соответствии с вашими инструкциями и повторно зашифрует, используя свой собственный сертификат, который вам нужно добавить в доверенное хранилище сертификатов Windows). Однако это вызовет проблемы в программах, использующих закрепление сертификатов: они обнаружат, что контент подписан неизвестным сертификатом, и будут действовать соответствующим образом. Например, Chrome позвонит домой, чтобы сообщить, если в доменах Google будут обнаружены сертификаты, выпущенные не Google.
решение2
Мне удалось собрать Foo.exe, так что он мне больше не понадобится, но прежде чем сдаться, я нашел сетевой отладчик под названиемЧарльз. Одна из предлагаемых им функций —локальный DNS-спуфинг:
Charles содержит список сопоставлений доменных имен и IP-адресов, которые вы настраиваете. Когда поступает запрос на указанное доменное имя, плагин Spoof DNS обнаруживает поддельный IP и перенаправляет запрос на этот адрес. HTTP-заголовок Host остается нетронутым, так что это точно так же, как если бы ваш DNS-сервер вернул поддельный IP.
Это платное приложение, но оно может быть полезно любому, кто оказался в ситуации, похожей на мою.