Сценарий: У меня есть внутренний сайт ASP.NET, который позволяет мне поддерживать набор правил (CRUD). Чтобы добавить новое правило, я просто заполняю форму HTML и нажимаю submit. Моя текущая проблема заключается в том, что теперь мне нужно добавить несколько сотен правил, и я хочу использовать сценарий для автоматизации этого.Сценарий Bash для автоматизации представления формы ASP.NET?
Первоначальный план:
- Создайте сценарий, который может принимать X число аргументов и использовать эти поддельные формы представленню вышеуказанного веб-страницы
- Создание разделенных запятыми файл (или аналогичный) с одной строкой на каждое правило, и каждый столбец представляет собой один из входных тегов в HTML-форме.
- Создайте еще один скрипт, который может использовать файл с разделителями-запятыми для выполнения сценария формы для каждой строки.
Мои попытки были сосредоточены вокруг завитка и хорошо работали против online testing page. К сожалению, я не могу заставить его работать против страницы ASP.NET, и я предполагаю, что это должно что-то сделать с помощью Postback и/или Viewstate.
Отрывок:
curl -s -u "DOMAIN\user:password" --ntlm -d "key1=value1" -d "key2=value2" http://internal/page.aspx
(Возвращает страницу, как при использовании GET, никаких сообщений об ошибках)
Вопрос:
Как я могу обмануть страницу ASP, что я 'm посылка Postback? (Альтернативные предложения сценариев приветствуются, а)
EDIT:
Отрывок из ASP страницы:
<asp:LinkButton ... runat="server" OnClick="lbAddRule_Click" PostBackUrl="~/Page.aspx" />
Отрывок из кода позади:
protected void lbAddRule_Click(object sender, EventArgs e) {
if (Page.IsValid == true) {
AddRule(x,y,z);
Вам нужен фактический постбэк или просто пост (это то, что вы хотите быть в состоянии проверить, если у вас есть доступ к источнику страницы)? Хорошим первым ударом будет проанализировать поле ввода ViewState (или полей) со страницы и отправить их вместе с вашим запросом. Этого может быть достаточно, чтобы страница подумала, что это обратная передача.Кроме того, если это довольно прямолинейный CRUD, было бы проще просто вставить материал непосредственно в любую базу данных, поддерживающую это приложение? – R0MANARMY
@ R0MANARMY Я добавил фрагменты кода с веб-страницы. Кажется, мое предположение о том, что предложение if (Page.IsPostBack) было немного преждевременным, хотя я не приблизился к решению. К сожалению, у меня нет доступа к базе данных, что упростило бы скрипты. – erikxiv
Если вы действительно не хотите делать это вручную, вы можете попробовать записать несколько регулярных сообщений с помощью firebug, видя, какие переменные изменяются (в идеале только поля, которые вы хотите отправить), создайте шаблон и отправьте все, что вам нужно. – R0MANARMY