Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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. sleep s, --user-agent и --referer могут не понадобиться (бэкэнд не может проверять), но они достаточно просты, что я включаю их, чтобы минимизировать вероятность ошибок.

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

Ответ 2

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

Ответ 3

В Firefox включите параметр Персистент в Firebug, чтобы быть обязательно закрепите POST. Затем установите и используйте надстройку "Закладка POST" для закладки запроса POST для последующего использования.

Ответ 4

Вы пробовали Selenium?

Ответ 5

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

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

Ответ 6

Существует слишком много способов выбора.

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

  • Пользовательский веб-драйвер selenium. Он может имитировать различные действия браузера с помощью script, которые вы пишете в Ruby или Java.

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

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

  • Напишите script (например, PHP), чтобы имитировать фактические сообщения формы или cookie.

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

Ответ 7

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