it-swarm.com.ru

Записывать сообщения http формы через браузер

Я пытаюсь автоматизировать вход на сайт и отправку формы.

Существует ли плагин для браузера (для Firefox или Chrome), который позволяет записывать запросы HTTP GET и POST в форме, позволяющей воспроизводить их позднее? Я ищу что-то, что можно будет автоматизировать из сценария, например с помощью curl или wget.

Я пытался использовать инструменты разработчика Chrome для захвата POST данных формы, но я получаю ошибки при попытке реплицировать запрос с помощью wget, что говорит о том, что мне не хватает некоторых файлов cookie или других параметров. В идеале это был бы автоматический способ сделать это, а не делать много проб и ошибок.

35
Alex Spurling

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

Вам нужны только инструменты, которые вы уже упоминали:

  1. Chrome уже поставляется с необходимыми вам инструментами разработчика: используйте вкладку «Сеть». Нет плагина для загрузки. Я не знаю, будет ли работать Safari - я не вижу вкладку «Сеть» в ее инструментах разработчика.
  2. И curl, и wget поддерживают файлы cookie и данные POST, но я только попробовал curl для автоматизации.

Есть несколько ключевых шагов, которые нужно сделать правильно (это требует некоторого опыта):

  1. Последовательность запрашиваемых страниц должна моделировать реальное взаимодействие с пользователем. Это важно, потому что вы не знаете точно, как сервер обрабатывает формы или аутентификацию. Именно здесь появляется вкладка «Сеть» инструментов разработчика Chrome. (Обратите внимание, что есть кнопка «запись», которая предотвращает очистку журнала.) Когда вы готовитесь регистрировать реальное взаимодействие с пользователем для анализа, не забывайте очищайте свои куки в начале каждой сессии.
  2. Вам необходимо использовать все надлежащие параметры curl и wget, которые обеспечат правильную обработку файлов cookie и перенаправлений.
  3. Все поля формы POST, вероятно, нужно будет отправить (вы часто будете видеть поля со значениями nonce, чтобы предотвратить CSRF

Вот пример 3 вызовов curl, которые я написал для скрипта Automation , который я написал для загрузки использования широкополосного доступа от моего провайдера:

curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie-jar "$COOKIES_PATH.txt" \
    'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' >$USAGE_PATH-1.html 2>&1 && sleep 3 &&

# --location because the previous request returns with a series of redirects "302 Moved Temporarily" or "302 Found"
curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie "$COOKIES_PATH.txt" \
    --cookie-jar "$COOKIES_PATH.txt" \
    --referer 'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' \
    --data "spEntityID=https://www.optuszoo.com.au/shibboleth&j_principal_type=ISP&j_username=$OPTUS_USERNAME&j_password=$OPTUS_PASSWORD&j_security_check=true" \
    'https://idp.optusnet.com.au/idp/optus/Authn/Service' >$USAGE_PATH-2.html 2>&1 && sleep 1 &&

curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie "$COOKIES_PATH.txt" \
    --cookie-jar "$COOKIES_PATH.txt" \
    --referer 'https://www.optuszoo.com.au/' \
    'https://www.optuszoo.com.au//r/ffmu' >$USAGE_PATH-3.html 2>/dev/null

Обратите внимание на осторожное использование --cookie-jar, --cookie и --location. sleeps, --user-agent и --referer могут быть не нужны (серверная часть может не проверяться), но они достаточно просты, чтобы я включил их, чтобы минимизировать вероятность ошибок.

В этом примере мне повезло, что не было динамических POST полей, например Одноразовые поля anti-CSRF, которые мне пришлось бы извлечь и передать в последующий запрос. Это потому, что эта автоматизация для аутентификации. Для автоматизации других типов веб-взаимодействий после того, как пользователь уже вошел в систему, вы, вероятно, столкнетесь с большим количеством этих динамически генерируемых полей.

23
huyz

Не совсем плагин для браузера, но Fiddler может захватывать все данные HTTP, передаваемые туда и обратно; с помощью FiddlerScript или FiddlerCore , затем просто экспортировать это в текстовый файл - и передать его в cURL в качестве заголовка запроса и тела запроса.

5
Piskvor

В Firefox включите параметр Persist в Firebug, чтобы быть уверенным в захвате СООБЩЕНИЯ. Затем установите и используйте надстройку «Bookmark POST» , чтобы добавить в закладки запрос POST для последующего использования.

4
Finn Haakansson

Firefox Firebug уже имеет функцию, которая позволяет вам копировать веб-запрос как запрос curl, так что вы видите все различные элементы запроса в командной строке.

Включите Firebug и щелкните правой кнопкой мыши запрос на панели «Сеть» и выберите «Копировать как cURL». Затем используйте его в curlhttps://hacks.mozilla.org/2013/08/firebug-1-12-new-features/#copyAsCURL

3
Azi

Вы пробовали Селен ?

3
DanSingerman

Есть слишком много методов для вас, чтобы выбрать.

  1. Используйте Firefox и Selenium IDE. Он может записать действие вашего браузера

  2. Пользователь Selenium Web Driver. Он может имитировать различные действия браузера с помощью сценария, написанного вами на Ruby или Java.

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

  4. Используйте макрос приложения уровня ОС и сделайте то же самое, что и 3.

  5. Напишите скрипт (например, PHP), чтобы имитировать фактическую форму сообщения или взаимодействия cookie.

№ 1 является распространенным и простым в использовании. № 4 может быть мощным, но вам нужно время, чтобы усовершенствовать автоматизацию.
№ 3 находится в середине № 4 и № 1 . № 2 может быть инструментом для тестирования окружающей среды и стресс-тестов также . № 5 кажется наиболее гибким и ресурсным экономии.

2
Abby Chau Yu Hoi

Недавно я наткнулся на это красивое расширение Chrome, которое делает то, что вы просите: Katalon Recorder

Katalon Recorder сделает вашу автоматизацию тестирования намного проще.

  • Запись, воспроизведение, отладка с контролем скорости, пауза/возобновление, возможности точек останова.

  • Наслаждайтесь самой быстрой скоростью выполнения по сравнению с другими расширениями с ядром Selenium 3.

  • Используйте несколько типов локаторов, включая XPath и CSS.

  • Используйте оригинальные команды Selenium IDE (Selenese), плюс оператор блока if ... elseIf ... else ... endIf и while ... endWhile. Поддерживается контроль ввода файла тестирования.

  • Импортируйте тестовые данные из файлов CSV для тестирования на основе данных.

  • Легко составляйте отчеты с помощью журналов, снимков экрана, исторических данных и аналитики из Katalon Analytics.

  • Составьте и организуйте контрольные примеры в пакетах. Никогда не теряйте свою работу с функцией автосохранения.

  • Импортируйте оригинальные тесты Selenium IDE (расширение Firefox).

  • Экспортируйте в сценарии Selenium WebDriver следующие структуры: C # (MSTest и NUnit), Java (TestNG и JUnit), Ruby (RSpec), Python (unittest), Groovy (Katalon Studio), Robot Framework и XML.

0
Promod

Хромированный плагин Request Maker делает это . https://chrome.google.com/webstore/detail/request-maker/kajfghlhfkcocafkcjlajldicbikpgnp?hl=en

0
princecharmx

Инструменты разработчика Safari и Firebug достаточны для ваших нужд.

0
Alessandro