Я делаю корреляцию в 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.