Страница 1 из 1
Скрипт для автозаполнения web-форм
Добавлено: 2008-01-11 14:51:20
Andy2k
Заранее прощу прощения, если вопрос из FAQ
Рискну предположить, что мой "доблестный" интернет-провайдер видимо набрал на работу студентов первого курса филфака

. Иначе как еще объяснить следующее: для того, чтобы использовать услугу "Ночной бонус" (с 0 часов и до 6 утра трафик за полцены) я должен....изменить свой логин в настройках ADSL модема. Причем после 6 утра ночной логин перестанет действовать и надо вернуть старый. Умники каке-то настраивали биллинг, блин.
У меня стоит ADSL модем HUAWAY 800MT, у него есть веб-интерфейс где задаются все настройки. Вопрос: есть ли какой-нибудь скрипт на Perl, где можно задать в виде сценария: на какой адрес зайти, потом по каким ссылкам перейти, куда и что записать и на какие кнопки в веб-форме нажать.
Хочется запускать такой скрипт по cron.
Заранее спасибо.
Re: Скрипт для автозаполнения web-форм
Добавлено: 2008-01-11 15:02:20
hizel
search.cpan.org поможет отцу русской демократии
однако почему свет клином сошелся именно на perl
я когда подбирался к решению этого ворпроса
обратил на отличнейшую библиотеку у python lxml
для распарсивания html очень удобна, работаешь
в терминах объектов\контейнеров изменять
и вводть например через средства входящие в
стандартную библиотеку python
в перле именна та часть которая в python lxml
есть в cpan-е несколько, но не дотягивает по функционалу
Re: Скрипт для автозаполнения web-форм
Добавлено: 2008-01-11 15:59:26
Andy2k
Спасибо за ответ, но мне чем проще - тем лучше, потому что python и html практически не знаю.
В идеале - не библиотеки на search.cpan.org - а какой-нибудь готовый набор, в котором просто настроить конфиг.
Re: Скрипт для автозаполнения web-форм
Добавлено: 2008-01-11 16:16:30
hizel
тогда в гугел

зря вы так насчет cpan
там же валяется не только либы , может что и под ваши запросы найдется
Re: Скрипт для автозаполнения web-форм
Добавлено: 2008-01-12 1:50:27
Alex Keda
руби-питоны-жабы....
какие-то африканские языки...
лучше уж и правда перл

Re: Скрипт для автозаполнения web-форм
Добавлено: 2008-01-12 8:47:38
zg
Andy2k писал(а):Вопрос: есть ли какой-нибудь скрипт на Perl, где можно задать в виде сценария: на какой адрес зайти, потом по каким ссылкам перейти, куда и что записать и на какие кнопки в веб-форме нажать.
Хочется запускать такой скрипт по cron.
а в чём трабла то? смотришь какой запрос отправляется при авторизации, потом через скрипт коннектишься на 80 порт страницы авторизации, отсылаешь точно такой же запрос, в ответ получаешь заголовок, в котором содержится SID (идентификатор сессии, должен быть в куках и в ссылках), потом отсылаешь запрос на смену логина и лепишь туда идентификатор сессии, чтоб авторизации не было. Это всё очень легко, просто поставь снифер http траффика, он тебе покажет запросы от браузера и ответы сервера. Я юзаю wget -S --spider для получения заголовок от сервера
Re: Скрипт для автозаполнения web-форм
Добавлено: 2008-01-12 13:27:28
Andy2k
В далекие времена моего детства по телеку показывали французский мультик "Путешествие вокруг света за 80 дней..."
На всю жизнь запомнилась оттуда фраза мистера Филеаса Фога: "Используй то, что под рукой и не ищи себе другое..."
Короче, проблема решилась так:
1. Берем самый обычный и привычный текстовый браузер Lynx и запускаем вот так:
#lynx -cmd_log=my_log
http://www....
...
тут мы ползаем по страничке, пишем, жмем кнопки и наконец выходим из lynx
Получился у нас текстовый файл my_log с записбю всех наших действий
2. Теперь запускаем lynx так:
#lynx -cmd_script=my_log
http://www....
Вуаля! Все отработало автоматически.
Re: Скрипт для автозаполнения web-форм
Добавлено: 2008-01-12 14:32:33
dikens3
А я CURL ставил и в нём несколько строчек выдумывал.

Re: Скрипт для автозаполнения web-форм
Добавлено: 2008-01-13 15:42:38
Proftp
Код: Выделить всё
#!/usr/bin/perl
$text = StrEscaped("Есть многое на свете, друг Гораций,
что и не снилось нашим мудрецам!");
$url = "https://cgi-bin/LogIn.cgi";
$name = "ЛОГИН";
$pass = "ПАРОЛЬ";
# создадим нового Агента пользователя
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(POST=>$url);
# указываем тип контекста
$req->content_type('application/x-www-form-urlencoded');
# вводим сам контекст для передачи
$req->content("text=$text&name=ЛОГИН&pass=ПАРОЛЬ");
my $res = $ua->request($req);
# получаем ответ от выводим его
print "Content-type: text/html\n\n";
print $res->content;
# если вы хотите получить полный ответ, с заголовком HTTP,
# воспользуйтесь вызовом print $res->as_string
# вспомогательные процедуры
sub StrEscaped {
# используем эту процедуру для преобразования
# передаваемых символов кириллицы
my ($str)=@_;
$str=~s/([^0-9A-Za-z\?&=:;])/sprintf("%%%x", ord($1))/eg;
return $str
}
http://www.sedinko.ru/perl/doc3.php