![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 03.12.2009
Сообщений: 5
|
![]()
Здравствуйте, вот после многолетнего перерыва решил начать програмить, но понял что все заросло толстым слоем грязи.
Есть у нас железяка, файрволл, чтобы поиметь выход в инет надо залогиниться, и через некоторое время логиниться надо снова. Процесс происходит простым образом - вводишь в поле на серваке имя_логина, жмешь кнопуек, выводится следующая страница, вводишь имя_пароля, жмешь кнопуек, выводится следующая страница, выбираешь из радиокнопок 1 из 3 вариантов, жмешь кнопуек. Работаешь. Потом заново. А теперь внимание вопрос: при передаче данных на сервер с помощью пост, "кнопку надо нажимать" или она автоматом считается нажатой и сервер ждет данных со второй страницы? И как работать с радиокнопками? В общем я не пойму никак механизьма работы с етой компонентой. Да и для контроля того, как происходит передача надо с вебброузер работать (это просто чтоб посмотреть что передалось), а я чойтоть по интернет передаче данных (да и вообще по программингу) лопух, помогите разобраться, истина где то рядом бродит, все вроде понимаю, но пробелы в знаниях мешают получить желаемое. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#3 |
Регистрация: 03.12.2009
Сообщений: 5
|
![]()
Хм... вопрос в том что у меня хидден, + по радиобаттонам ничо не нашел, как на них выбирать програмно какую кнопку "нажатую" отправлять в запросе. По аналогиям я цифры думаю, но пока не совсем уверен.
|
![]() |
![]() |
![]() |
#4 |
Delphi,Python,PHP
Форумчанин
Регистрация: 04.04.2009
Сообщений: 138
|
![]()
Берите снифер в руки и идите на сайт, там уже отслеживайте пост запрос снифером, и всё станет ясным как Божий день!!!
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 03.12.2009
Сообщений: 5
|
![]()
Что получаем в дебугере при отправке через броузер (Request Stream)
POST / HTTP/1.1 Host: 192.168.0.4:900 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://192.168.0.4:900/ Content-Type: application/x-www-form-urlencoded Content-Length: 41 ID=7c6f004d93df&STATE=1&DATA=S.D.Lo ginenz (на то что стоит после ID= не обращайте внимания - оно все равно изменяется при каждом коннекте и это я ловлю) Что получаем в дебугере при отправке через программу (Request Stream) POST / HTTP/1.0 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 53 Host: 192.168.0.4:900 Accept: text/html, */* User-Agent: Mozilla/3.0 (compatible; Indy Library) ID=e4912e8df141%26STATE%3D1%26DATA% 3DS%2ED%2ELoginenz Так вот несколько вопросов: 1) Как будет выглядеть строка которую читаем в дебугере для вебсервера? (POST / HTTP/1.1&Host: 192.168.0.4:900&...) или еще как? В общем меня интересует формирование строки для отправки через создаваемую программу подобной той которая отправляется через броузер - как это делается? Что из этих данных действительно поймано при отправке, а что дописано самим дебугером? (например вместо POST / HTTP/1.1&Host: 192.168.0.4:900&... идет HTTP/1.1&192.168.0.4:900&...) 2) Какие символы идут вместо пробелов в строке? Или по поводу каких либо символов не стоит особо заморачиваться и программа "сама поймет" что и как ей сформировать и сформированное ей будет принято вебсервером? 3) В ходе вылавливания изменяемого содержимого в ID= ... используется у меня тип переменной PChar - не сбивается ли из-за нее последняя строка, где вместо амперсандов стоят проценты? (просто для проверки правильно ли сформировалась строка я конечный результат вставлял в листбокс и в нем получал строку идентичную той что отправляется на сервер через вебброузер (ID=7c6f004d93df&STATE=1&DATA=S.D.L oginenz)) 4) Почему при получении в RichEdit кода страницы методом Get пишет HTTP/1.1? а при использовании для отправки строки методом Post пишет HTTP/1.0? (При отправке через броузер дебугер выдает HTTP/1.1) Если что напутано или непонятно не серчайте сильно - я просто не знаю какие запросы для поиска по темам форума сформировать чтобы спросить что надо, а на просмотр тем подряд времени не хватает, так как занимаюсь этой прогой в свободное от основной работы время. |
![]() |
![]() |
![]() |
#6 |
Регистрация: 03.12.2009
Сообщений: 5
|
![]()
первая страничка для ввода имени пользователя, dcb1cd18467b генерится постоянно заново, но это я отлавливаю:
<FORM METHOD="POST"> о чём говорит эта строка для программиста и какие ещё METHOD могут быть и в чём их разница для дельфиста? <INPUT TYPE="hidden" NAME="ID" VALUE="dcb1cd18467b"> <P> <INPUT TYPE="hidden" NAME="STATE" VALUE="1"><P> Хиддены заполняются автоматически, пользователь про них и знать не знает, верно я понимаю? FireWall-1 message: User: <p> <P> Input: <INPUT NAME="DATA"> <P> Please press 'Submit' when done: <INPUT TYPE="submit" VALUE="Submit">. <P> А вот про эти выделенные жирным строчки я немного не понял: в TStringList.Add(что здесь вставить?) и сколько этих .Add нужно? потом вторая страничка для ввода пароля: <FORM METHOD="POST"> <INPUT TYPE="hidden" NAME="ID" VALUE="dcb1cd18467b"> <P> <INPUT TYPE="hidden" NAME="STATE" VALUE="2"><P> FireWall-1 message: password: <p> <P> Password: <INPUT TYPE="PASSWORD" NAME="DATA"> <P> Please press 'Submit' when done <INPUT TYPE="submit" VALUE="Submit">. <P> третья страничка для выбора типа авторизации/деавторизации <FORM METHOD="POST"> <INPUT TYPE="hidden" NAME="ID" VALUE="dcb1cd18467b"> <P> <INPUT TYPE="hidden" NAME="STATE" VALUE="3"> <P> FireWall-1 message: User S.D.Loginenz authenticated by FireWall-1 authentication <p><P> <U>Methods:</U><P> <INPUT TYPE="radio" NAME="DATA" VALUE="1" checked><I>Standard Sign-on</I><BR> <INPUT TYPE="radio" NAME="DATA" VALUE="2"><I>Sign-off</I><BR> <INPUT TYPE="radio" NAME="DATA" VALUE="3"><I>Specific Sign-on</I><BR> Select a method, then press 'Submit': <INPUT TYPE="submit" VALUE="Submit">. <P> здесь нужно из радиокнопок значение 1 где. ну и финальная информационная без <INPUT-ов, просто информационная FireWall-1 message: User authorized for standard services (XX rules)<BR><P> <BLINK> End session. </BLINK> вот код моей попытки авторизоваться, если не правильно то поправьте: Application.onMinimize:=OnMinimizeP roc; StList:=TStringList.Create;//создаём в мозгу RichEdit1.Text:=idhttp1.Get('http://192.168.0.4:900'); //получаем страницу GetMem(Buffer,Length(RichEdit1.Line s.Strings[14])); //берём строку с изменяемыми значениями StrCopy(Buffer, PChar(RichEdit1.Lines.Strings[14])+38); //отсекаем StrLCopy(Buffer,Buffer,12); //отбираем изменяемые данные StList.Add('ID=' + buffer);//с изменёнкой StList.Add('STATE=1');//номер страницы 1 из 3 StList.Add('DATA=S.D.Loginenz');//Логин Label1.Caption := StList.Text; //смотрим какая строка получилась idhttp1.Post('http://192.168.0.4:900',StList);//отправляем StList.Clear;//чистим StList.Add('ID='+ buffer);//с изменёнкой StList.Add('STATE=2');//номер страницы 2 из 3 StList.Add('DATA=Loginenz');//пароль Label2.Caption := StList.Text;//смотрим какая строка получилась idhttp1.Post('http://192.168.0.4:900',StList);//отправляем StList.Clear;//чистим StList.Add('ID='+buffer);//с изменёнкой StList.Add('STATE=3');//номер страницы 3 из 3 StList.Add('DATA=1');//Радиокнопка со значением 1 Label3.Caption := StList.Text;//смотрим какая строка получилась idhttp1.Post('http://192.168.0.4:900',StList);//отправляем StList.Free;//чистим мозг FreeMem(Buffer);//чистим мозг Ошибок нет, программа не вылетает, но авторизации не происходит, помогите, люди добрые, разобраться! |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
передача данных | bbk_serg | БД в Delphi | 6 | 15.04.2009 14:23 |
Передача данных по ЛС | PONKA | Работа с сетью в Delphi | 1 | 27.11.2008 09:57 |
Как работает "Удаленный модуль данных"? | kiber0net0 | Общие вопросы Delphi | 0 | 08.10.2008 12:43 |
Передача данных | Ivanich | JavaScript, Ajax | 1 | 29.04.2008 00:25 |