Редагувати та відтворювати XHR chrome / firefox тощо?


144

Я шукав спосіб змінити запит XHR, зроблений у моєму браузері, а потім знову відтворити його. Скажіть, у мене в браузері виконаний повний POST-запит, і єдине, що я хочу змінити, - це невелике значення, а потім знову відтворити його. Це було б набагато простіше і швидше зробити безпосередньо в браузері.

Я трохи розібрався в Google, і не знайшов способу зробити це в Chrome або Firefox. Чи є якийсь спосіб зробити це в одному з цих браузерів, чи, можливо, в іншому?


Якщо ви приземлилися тут, зрозумівши, що "Replay XHR" не працює в Chrome, зауважте, що у випадках із OPTIONSзапитами перед полетом ( ) потрібно натиснути "повторно" на запит перед політ - не фактичний остаточний запит.
Джанака Бандара

Відповіді:


181

Chrome:

  • На панелі "Мережа" на розробниках клацніть правою кнопкою миші та виберіть " Копіювати" як CURL
  • Вставте / відредагуйте запит, а потім надішліть його з терміналу, припускаючи, що у вас є curlкоманда

Дивіться захоплення:

введіть тут опис зображення

Крім того, і якщо вам потрібно надіслати запит у контексті веб-сторінки , виберіть "Скопіювати як отримати" та відредагуйте-надішліть вміст із панелі консолі javascript.


Firefox:

Firefox дозволяє редагувати та надсилати XHR прямо з панелі «Мережа». Захоплення нижче - від Firefox 36:

введіть тут опис зображення


Це насправді може бути те, що я шукаю. Я знав, що можу скопіювати виклик CURL, але не міг запустити це безпосередньо зі свого терміналу, оскільки отримав аутентифікацію. Але, використовуючи термінал, вбудований безпосередньо в Chorme, я вважаю, що дзвінок здійснюється з "браузера" всередині. Якщо так, то це має запечатати угоду.
madsobel

14
У відповідь я додав інформацію про Firefox
Michael P. Bazos

Невелика хитрість: якщо ви хочете побачити вихід CURL у браузері, запустіть його в CLI, як це, curl ... > preview.htmlа потім відкрийте файл у браузері.
afilina

@afilina для ще більшої автоматизації цього процесу можна додати && open preview.htmlна macOS, і файл відкриється безпосередньо після запиту
CodeBrauer

2
У цьому випадку Firefox робить набагато кращу роботу!
jpenna

41

Зараз у Chrome є копія як завантаження у версії 67:

Скопіюйте як видобуток

Клацніть правою кнопкою миші мережевий запит, а потім виберіть Copy> Copy As Fetch, щоб скопіювати fetch()-еквівалентний код для цього запиту у буфер обміну.

https://developers.google.com/web/updates/2018/04/devtools#fetch

Вибірка зразка:

fetch("https://stackoverflow.com/posts/validate-body", {
  credentials: "include",
  headers: {},
  referrer: "https://stackoverflow.com/",
  referrerPolicy: "origin",
  body:
    "body=Chrome+now+has+_Copy+as+fetch_+in+version+67%3A%0A%0A%3E+Copy+as+fetch%0ARight-click+a+network+request+then+select+**Copy+%3E+Copy+As+Fetch**+to+copy+the+%60fetch()%60-equivalent+code+for+that+request+to+your+clipboard.%0A%0A&oldBody=&isQuestion=false",
  method: "POST",
  mode: "cors"
});

Різниця полягає в тому, що Copy як cURL також буде включати всі заголовки запитів (наприклад, Cookie та Accept) і підходить для відтворення запиту за межами Chrome. fetch()Код підходить для відтворення всередині одного і того ж браузера.


6
Дякую за це. Для всіх, хто цікавиться - ви можете просто вставити fetchкоманду безпосередньо в консоль Chrome і відтворити запит.
Ерік Кігаті

7
Ви можете скористатись наступним після вибору для вирішення обіцянки, повернутої виводом, та перегляду органу відповідей (якщо припустити, що це JSON).then(r => r.json()).then(json => console.log(json))
сумісний з POSIX

1
@ Джош Лі, я думаю, що поради, сумісні з POSIX, були гарними, і я можу додати цю відповідь.
Набі КАЗ

@ POSIX-сумісні добрі поради. Чи є менша команда, яку можна тримати в моїй думці ?!
Набі КАЗ

Для тих, хто цікавиться, куди вставити код
вибору

20

Мої дві пропозиції:

  1. Плагін пошти для Chrome + Плагін перехоплювача пошти . Детальніше: Листоноша, що захоплює запити, Документи

  2. Якщо ви перебуваєте в Windows, то Fiddler Telerik - це варіант. У нього є можливість композитора для відтворення http-запитів, і це безкоштовно.


8
Оскільки я почав використовувати Postman + хромоване розширення Interceptor, у мене не було потреби в Fiddler.
нитка

3
Додаток FYI Postman для Chrome тепер застарілий, і налаштувати це в окрему версію трохи складніше
yefrem

дякую багато що я шукав!
Мохаммед


4

Для Firefox проблема вирішилася сама. У ній реалізована функція "Редагувати та повторно".

Для Chrome розширення Tamper, здається, робить свою справу.


Який більше не оновлюється та має досить погані відгуки. Найкраща альтернатива - використовувати Firefox для подібних робіт imo.
T3rm1

Так. Ситуація з повторним перепродажем, здається, змінюється досить швидко. Тепер у Chrome є повторне повторне користування XHR-запитами, але він не дозволяє редагувати.
Ярі Туркія

остерігайтеся Firefox ver.76, який, здається, має проблему з CSRF-маркером у файлах cookie під час редагування та повторного надсилання. Спробувавши версію 37, це спрацювало добре, але у ver76 є питання перевірки лексеми CSRF.
puppyceceyoyo

1

Минуло 5 років, і ця важлива вимога не стала ігнорувати розробники Chrome.
Хоча вони не пропонують жодного способу редагування даних, як у Firefox, вони пропонують повне відтворення XHR.
Це дозволяє налагоджувати дзвінки ajax. "Replay XHR" повторить всю передачу.
введіть тут опис зображення


0

Як було зазначено вище, є декілька способів зробити це, але, на мій досвід, найкращий спосіб маніпулювати запитом XHR та його повторним використанням - це використання інструментів хромованого розробника для копіювання запиту як запиту cURL (клацніть правою кнопкою миші на запиті на вкладці мережі ) та просто імпортувати у додаток Postman (гігантська кнопка імпорту у верхньому лівому куті).


0

Не потрібно встановлювати сторонні розширення!

Існує фрагмент javascript , який ви можете додати як закладку браузера, а потім активувати на будь-якому сайті для відстеження та зміни запитів. Це виглядає як:

введіть тут опис зображення

Щоб отримати подальші вказівки, перегляньте сторінку github.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.