Я делаю корреляцию в Jmeter. Я сталкиваюсь с проблемой ниже, чтобы найти регулярное выражение

<input type="hidden" name="_csrf"
                    value="40ea7f46-799b-4ca0-b8cd-4adfba082aed" />

Выше находится токен, который я получаю в выводе запроса. Я не могу заменить это регулярным выражением в экстракторе регулярных выражений Jmeter.

<input type="hidden" name="_csrf" value="(.+?)" /> не работает.

Пожалуйста помоги.

3 ответа

Решение

Если ваши входные данные на самом деле содержат символ новой строки, то вам необходимо учитывать это в своем регулярном выражении. Кроме того, лучше четко указать действительные символы в вашем регулярном выражении, .+ редко бывает хорошей вещью

<input type="hidden"\s+name="_csrf"\s+value="([^"]+)"\s*/>

Вы должны быть осторожны с spaces/newlines,

попробуйте следующее простое регулярное выражение:

value="(.*?)"\s/>

Если он соответствует более чем одному элементу, чтобы добавить уникальность, вы можете добавить атрибут имени в регулярное выражение следующим образом:

name="_csrf"\s+value="(.*?)"\s/>

Это еще одно доказательство того, что регулярные выражения не используются для анализа HTML, поскольку они очень хрупкие и чувствительны к минимальным изменениям разметки. Более надежное и гибкое решение использует вместо этого CSS/JQuery Extractor или XPath Extractor.

  • Соответствующее CSS-выражение input[name=_csrf]использовать value как "атрибут"
  • Запрос XPath для получения значения //input[@name='_csrf']/@value

Для получения подробной информации об обходе защиты XSRF в тестах JMeter см. Руководство по загрузке тестов веб-сайтов, защищенных CSRF.

Другие вопросы по тегам