+38 (093)  990-30-70

Новости

Королевский бал у Вас дома

Управління трафіком з використанням Fiddler

У таких випадках можна використовувати проксі-сервер Fiddler - проміжна ланка між клієнтом (браузер, мобільний додаток і т. Д.) І цільовим сервером. Швидше за все, цей інструмент вам відомий, але зазвичай говорять про нього мимохіть. Ми крок за кроком розберемо, як перевірити за допомогою Fiddler, що відобразиться на UI при зміні запиту до сервера або повертається відповіді.

Припустимо, є сайт dataart.ru . На його головній сторінці виводиться блок з майбутніми івентами. Якщо ніяких подій немає, то і секція, відповідно, не повинна відображатися разом із заголовком і допоміжними іконками.

Але що робити, якщо контент є, а перевірити кейс з відсутністю майбутніх івентів потрібно? Один з варіантів - використовувати Fiddler.

Отже, моделюємо випадок, коли на головній сторінці немає майбутніх івентів:

  • Запускаємо Fiddler. Чистимо Web Sessions list зліва.

    Чистимо Web Sessions list зліва

  • Включаємо Capturing в лівому нижньому кутку, щоб відловлювати трафік.

    Включаємо Capturing в лівому нижньому кутку, щоб відловлювати трафік

  • оновлюємо сторінку dataart.ru в браузері і бачимо відправлені запити в лівій частині вікна Fiddler. Нас цікавить запит GET "/ Umbraco / Api / Events / GetEventsForHomePage? Tags = 8", який повертає майбутні події для нашої сторінки. Якщо у відповіді нічого не приходить, то блок з івентами, заголовком і допоміжними іконками не відображаються.

    Якщо у відповіді нічого не приходить, то блок з івентами, заголовком і допоміжними іконками не відображаються

  • В цьому випадку можна модифікувати або запит перед відправкою на сервер, або відповідь на цей запит перед тим, як його отримає клієнт.

    У Fiddler це можна реалізувати за допомогою breakpoints. Вручну breakpoints можуть задаватися через QuickExec консоль наступним чином:

    bpu https://dataart.ru/Umbraco/Api/Events/GetEventsForHomePage?tags=8

    - створюємо breakpoint перед відправкою потрібного запиту на сервер.

    bpа https://dataart.ru/Umbraco/Api/Events/GetEventsForHomePage?tags=8

    - створюємо breakpoint перед поверненням відповіді клієнту.

    - створюємо breakpoint перед поверненням відповіді клієнту

    Давайте розглянемо кожен варіант окремо.

  • Щоб змінити запит перед відправкою на сервер, виконуємо команду в QuickExec консолі:

    bpu https://dataart.ru/Umbraco/Api/Events/GetEventsForHomePage?tags=8

    Оновлюємо в браузері сторінку dataart.ru (В цей час Capturing потрібно включити для Fiddler) і бачимо, що виконання потрібного нам запиту призупинено. На це вказують іконка червоного кольору навпроти запиту в інтерфейсі Fiddler і відсутність блоку з івентами на самій веб-сторінці.

    На це вказують іконка червоного кольору навпроти запиту в інтерфейсі Fiddler і відсутність блоку з івентами на самій веб-сторінці

    Що можна зробити на цьому етапі? Змінити / додати / видалити заголовки, куки, параметри запиту та т. Д. Щоб у відповіді нічого не прийшло, нам достатньо, наприклад, у вкладці WebForms вказати таке значення параметра tags, який мав би повернути ніяких результатів.

    Після необхідних змін запиту все, що залишається зробити - натиснути на Run to Completion і подивитися на результат в браузері.

    Важливий момент: щоб відключити breakpoints, потрібно ввести в QuickExec консоль команди "bpu" або "bpa" без аргументу. Перед тим як перейти до розгляду наступного варіанта, бажано прибрати створений breakpoint для запиту через "bpu" відповідно.

  • Щоб змінити відповідь на запит перед поверненням його клієнту, виконуємо команду в QuickExec консолі:

    bpa https://dataart.ru/Umbraco/Api/Events/GetEventsForHomePage?tags=8

    Оновлюємо в браузері сторінку dataart.ru (В цей час Capturing потрібно включити для Fiddler) і бачимо, що відправка клієнту потрібного нам відповіді припинена. На це вказують іконка червоного кольору навпроти запиту в інтерфейсі Fiddler і відсутність блоку з івентами на самій веб-сторінці.

    На це вказують іконка червоного кольору навпроти запиту в інтерфейсі Fiddler і відсутність блоку з івентами на самій веб-сторінці

    Для нашої мети досить підмінити тіло відповіді. Переходимо у вкладку TextView і замість всього вмісту вставляємо відповідь, який приходить в тих випадках, коли немає результатів - { «items»: [], «total»: 0}. Але не забуваємо, що змінювати можна різні дані (статус код, заголовки і т. Д.).

    Тепер все, що залишається зробити - натиснути на Run to Completion і подивитися на результат в браузері.

Існують і інші способи підключення breakpoints, про це можна прочитати в невеликій статті Еріка Лоуренса, творця Fiddler.

Але що робити, якщо контент є, а перевірити кейс з відсутністю майбутніх івентів потрібно?
Нас цікавить запит GET "/ Umbraco / Api / Events / GetEventsForHomePage?
Ru/Umbraco/Api/Events/GetEventsForHomePage?
Ru/Umbraco/Api/Events/GetEventsForHomePage?
Ru/Umbraco/Api/Events/GetEventsForHomePage?
Що можна зробити на цьому етапі?
Ru/Umbraco/Api/Events/GetEventsForHomePage?