Скрипт для автозаполнения web-форм

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Andy2k
ефрейтор
Сообщения: 69
Зарегистрирован: 2007-08-06 16:14:12

Скрипт для автозаполнения web-форм

Непрочитанное сообщение Andy2k » 2008-01-11 14:51:20

Заранее прощу прощения, если вопрос из FAQ

Рискну предположить, что мой "доблестный" интернет-провайдер видимо набрал на работу студентов первого курса филфака :). Иначе как еще объяснить следующее: для того, чтобы использовать услугу "Ночной бонус" (с 0 часов и до 6 утра трафик за полцены) я должен....изменить свой логин в настройках ADSL модема. Причем после 6 утра ночной логин перестанет действовать и надо вернуть старый. Умники каке-то настраивали биллинг, блин.

У меня стоит ADSL модем HUAWAY 800MT, у него есть веб-интерфейс где задаются все настройки. Вопрос: есть ли какой-нибудь скрипт на Perl, где можно задать в виде сценария: на какой адрес зайти, потом по каким ссылкам перейти, куда и что записать и на какие кнопки в веб-форме нажать.

Хочется запускать такой скрипт по cron.

Заранее спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Скрипт для автозаполнения web-форм

Непрочитанное сообщение hizel » 2008-01-11 15:02:20

search.cpan.org поможет отцу русской демократии
однако почему свет клином сошелся именно на perl
я когда подбирался к решению этого ворпроса
обратил на отличнейшую библиотеку у python lxml
для распарсивания html очень удобна, работаешь
в терминах объектов\контейнеров изменять
и вводть например через средства входящие в
стандартную библиотеку python

в перле именна та часть которая в python lxml
есть в cpan-е несколько, но не дотягивает по функционалу
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Andy2k
ефрейтор
Сообщения: 69
Зарегистрирован: 2007-08-06 16:14:12

Re: Скрипт для автозаполнения web-форм

Непрочитанное сообщение Andy2k » 2008-01-11 15:59:26

Спасибо за ответ, но мне чем проще - тем лучше, потому что python и html практически не знаю.
В идеале - не библиотеки на search.cpan.org - а какой-нибудь готовый набор, в котором просто настроить конфиг.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Скрипт для автозаполнения web-форм

Непрочитанное сообщение hizel » 2008-01-11 16:16:30

тогда в гугел :)
зря вы так насчет cpan
там же валяется не только либы , может что и под ваши запросы найдется
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35418
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Скрипт для автозаполнения web-форм

Непрочитанное сообщение Alex Keda » 2008-01-12 1:50:27

руби-питоны-жабы....
какие-то африканские языки...
лучше уж и правда перл =)
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Скрипт для автозаполнения web-форм

Непрочитанное сообщение zg » 2008-01-12 8:47:38

Andy2k писал(а):Вопрос: есть ли какой-нибудь скрипт на Perl, где можно задать в виде сценария: на какой адрес зайти, потом по каким ссылкам перейти, куда и что записать и на какие кнопки в веб-форме нажать.

Хочется запускать такой скрипт по cron.
а в чём трабла то? смотришь какой запрос отправляется при авторизации, потом через скрипт коннектишься на 80 порт страницы авторизации, отсылаешь точно такой же запрос, в ответ получаешь заголовок, в котором содержится SID (идентификатор сессии, должен быть в куках и в ссылках), потом отсылаешь запрос на смену логина и лепишь туда идентификатор сессии, чтоб авторизации не было. Это всё очень легко, просто поставь снифер http траффика, он тебе покажет запросы от браузера и ответы сервера. Я юзаю wget -S --spider для получения заголовок от сервера

Аватара пользователя
Andy2k
ефрейтор
Сообщения: 69
Зарегистрирован: 2007-08-06 16:14:12

Re: Скрипт для автозаполнения web-форм

Непрочитанное сообщение Andy2k » 2008-01-12 13:27:28

В далекие времена моего детства по телеку показывали французский мультик "Путешествие вокруг света за 80 дней..."
На всю жизнь запомнилась оттуда фраза мистера Филеаса Фога: "Используй то, что под рукой и не ищи себе другое..." :D

Короче, проблема решилась так:

1. Берем самый обычный и привычный текстовый браузер Lynx и запускаем вот так:
#lynx -cmd_log=my_log http://www....

...
тут мы ползаем по страничке, пишем, жмем кнопки и наконец выходим из lynx

Получился у нас текстовый файл my_log с записбю всех наших действий

2. Теперь запускаем lynx так:
#lynx -cmd_script=my_log http://www....

Вуаля! Все отработало автоматически.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Скрипт для автозаполнения web-форм

Непрочитанное сообщение dikens3 » 2008-01-12 14:32:33

А я CURL ставил и в нём несколько строчек выдумывал. :-(
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Proftp
проходил мимо

Re: Скрипт для автозаполнения web-форм

Непрочитанное сообщение Proftp » 2008-01-13 15:42:38

Код: Выделить всё

#!/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