![]() |
Парсинг HTML
Будьте любезны, подскажите мне как "вытащить" нужные мне части из HTML и поместить их в переменные для дальнейшего использования. Вот часть кода HTML:
HTML код:
<form name="login" method="post" action="/index.php?again=yes"> Следующей командой я сужаю поиск до тэгов: FOR /F "tokens=2,4 delims=<>" %%A IN ('FIND /I "security_token" index.php') А вот что с этим делать, у меня разобраться не получается. Попытка присвоения а ля DO SET SECTOKLINE = %%A во первых почему-то не совершает присваивания, а во-вторых не обрабатывает второй токен (который, как мне понятно находится в %B) Ох, а потом ведь ещё придётся переводить спецсимволы в переменной security_token в percent‐encoding, т.е. заменять / на %2F, + на %2B и = на %3D. Это вообще реально? |
Smasher,
CMD/BAT принципиален? Для парсинга HTML придуманы браузеры, которыми удобно управлять, например, с помощью скриптовых языков. |
Дело в том, что всё это делается ради того, чтобы совершить WGET'ом авторизацию на одном сайте таким образом:
Код:
:WGET --post-data="security_token=%SECURITY_TOKEN&login_ticket=%LOGIN_TICKET&resolution=&loginname=123&password=123" https://studip.fh-trier.de/index.php --delete.after |
Smasher, всё равно без загрузки страницы с формой и последующего разбора посредством DOM не обойтись. Проще всего это сделать на WSH или PoSH. Страница с формой доступна в глобальной сети?
|
Iska, ну так я и загружал первым делом страницу с формой, а потом уже пытался её разобрать. Вообщем, мне неважно какими средствами это сделать, лишь бы достичь вышеуказанной цели. Если говорить ещё конкретнее, мне нужно в определённое время сделать короткий флуд по адресу https://studip.fh-trier.de/sem_verif...m_p ortal.php
Ну чтобы без криминала, например, в течении 10 секунд 20 вызовов. Почему-то первым в голову пришло написать батник с использованием wget. Страница с формой соответственно находится по адресу studip.fh-trier.de |
Smasher, С помощью голого батника универсального решения нет, кто знает какие символы содержат значения.
На примере твоего index.php: Код:
@echo off |
Код:
for /f "tokens=2,4 delims=<>" %%I in ('find /I "security_token" index.php') do ( |
Bob256, неплохая идея, но у security_token "съедается" последний символ, т.е. знак равенства.
Foreigner, работает, спасибо! Сейчас постараюсь разобраться, что там наколдовано :) Ещё бы для security_token сделать перевод спецсимволов в URL-кодировку (см. первый пост) |
Iska, любопытно посмотреть на решение с помощью DOM-технологии.
Но мне кажется что удобнее использовать утилиты типа sed и awk. Например, с помощью sed эта задача решается в полторы строчки: Код:
@echo off |
Код:
set security_token=!security_token:/=%%2F! |
Smasher, вариант с grep и wget :
Код:
@Echo Off |
Цитата:
|
Всем спасибо за предложенные варианты, буду разбираться как что работает, очень интересно :)
Насчёт замены спецсимволов предложенный Bob256 вариант работает в случае символов "/" и "+", а со знаком равенства следующая конструкция (построенная мной аналогично предложенным) не работает: Код:
set security_token=!security_token:==%%3D! |
Чтобы не открывать новую тему, спрошу здесь: можно ли посредством BAT запустить несколько процессов параллельно, т.е. не дожидаясь пока закончит выполнение первый, запустить ещё несколько? Ну, например, в линуксе можно было бы это реализовать посредством символа "@" в конце строки, таким образом процесс запускается в бэкграунде. А в Windows я не знаю как это сделать. Если с помощью BAT это сделать невозможно (что я подозреваю так и есть), подскажите каким ещё способом это можно автоматизировать?
|
Цитата:
И всё-таки, согласно правилам этого форума - "отдельный вопрос = отдельная тема". |
Время: 18:18. |
Время: 18:18.
© OSzone.net 2001-