Прошло много исследований, но теперь им грустно застряло.Загрузите домашнюю страницу, где аргумент POST генерируется из javascript
Мне нужно скачать html-страницу: Для этого я заполняю разные данные в форме и нажимаю кнопку отправки, а затем я хотел бы сохранить ответы.
Использование Firebug Я могу видеть, что мои данные заполнены и отправляются через POST. К несчастью, есть еще один аргумент, что я не могу отследить , как он сгенерирован, и без этого последнего аргумента я не получаю адекватный html-ответ, а страницу с ошибкой.
wget и curl (файлы cookie, useragent, header, referrer) завершаются без последнего параметра!
Я не слишком знаком с jquery и javascript, поэтому я не могу найти, откуда поступают данные, но если браузер знает это, я тоже должен быть в состоянии!
Я нашел, что это похоже, только мой, кажется, сложнее, как генерируется поле: wget : get field info before sending post-data
В моем случае я проследил его к этому:
<script type="text/javascript">
$(document).ready(function(){
$.get('/getmyData.asp?str=erServiceXUVC',function(string){
$('#oikuZR').append('<input type="hidden" name="lsXUVp" value="'+ string +'">');
});
});
</script>
и отличие от использования реальной браузер и wget (даже с помощью агента пользователя и т. д.) - это потому, что я не могу получить это значение, которое появляется, если я использую обычный браузер.
<input type="hidden" value="34928321" name="lsXUVp">
Это именно то значение, которое мне нужно (по сравнению с POST Firebug)! Но ....
Здесь мои знания заканчиваются.
- Не удается найти «34928321» в коде
- «#oikuZR» не показывает в списке DOM из поджигатель, но, может быть, я делаю что-то неправильно (есть тысячи записей)
- Отладочные в приведенном выше сценарии я могу видеть, что строка = 34928321 как локальная переменная, но я не вижу, откуда эта функция называется
- Если я открою www.homepage.com/getmyData.asp?str=erServiceXUVC (с параметрами или без них) есть только страница с ошибкой.
Мысль об использовании Splash в качестве прокси-сервера для запуска JavaScript для меня, и чем WGET этой страницы, но так как я не понимаю механику пока Im сомнительны.
Так что я могу сделать?
Возможно, браузер, поддерживающий javascript, который принимает команды из командной строки: open, fillout, send, saveHtml? Альтернативы? Решения для wget (любимый!)?
Блестящий! Не могли бы вы добавить, как сделать запрос ajax? Я сохранил cookie-файлы cookie сеанса из первого wget в файле, а второй wget должен использовать те, у которых последний параметр magic, чтобы получить реальные данные. – Stefan
С точки зрения сервера, запрос AJAX не является чем-то особенным. Это обычный запрос, только обычно в запросе добавляется заголовок «X-Requested-With'». Это может использоваться сервером для определения того, является ли это запросом AJAX. Поэтому, используя wget, просто выполните обычный запрос и при необходимости добавьте этот заголовок. – GolezTrol
Работал! Нашел способ, по которому Firefox отправляет заголовок для XRequest в консоль Firebug: также отправил куки и получил результат как простой обычный текстовый номер в html-файле. В начале я забыл, что /getmyData.asp является абсолютным (www.homep.com/getmyData.asp), а не относительно подстраницы. Но все же они каким-то образом сохраняют данные обратно с помощью wget (я уже подделываю каждый заголовок и POST-аргумент FF посылает - очень странно/умно, что они все еще могут различать): Возможно, мне придется использовать iMacros для простого поведения пользователя или альтернативного ParseHub – Stefan