Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Программа для работы с сайтом

Ответить
Настройки темы
Delphi - [решено] Программа для работы с сайтом

Аватара для CJ F.A.N.

Ветеран


Сообщения: 565
Благодарности: 30


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Всем привет! Никогда не делал программы такого направления, но пришлось. Есть сайт http://www.orenfoms.ru/. Необходима программа для работы с этим сайтом. Задача в том чтобы авторизоваться на сайте, и из программы (из полей ввода текста)передать данные в нужные поля которые расположены на странице, и программно нажать кнопку на странице. Все бы ничего, но не могу авторизоваться на сайте, много кодов перепробовал. Подскажите если можете ;-) Заранее спасибо

Отправлено: 07:36, 26-08-2010

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Не получается именно авторизоваться, или же послать запрос на авторизацию?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 08:08, 26-08-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для RUVATA

Старожил


Сообщения: 301
Благодарности: 16

Профиль | Отправить PM | Цитировать


вообще то авторизация, на то и авторизация... обычно все специально предусмотрено так, чтобы ее не реально было пройти автоматически... защищаясь от злодейских ботов или хаков-самоучек
Скорее всего тебе не удастся решить эту проблему программным путем, по крайней мере без содействия разработчиков сайта.

Опиши ситуацию по подробнее... может что придумаем

-------
Одно дело искать сиюминутное решение, другое - искать знания...
вот и думай - что ты ищешь...


Отправлено: 08:10, 26-08-2010 | #3


Аватара для CJ F.A.N.

Ветеран


Сообщения: 565
Благодарности: 30

Профиль | Сайт | Отправить PM | Цитировать


В общем, так. Везде примеры авторизации с работой PHP страниц, там все в принципе просто, а тут сама кнопка, точнее ссылка Войти - это ява скрипт, я в этом не силен. Есть идея - просто открыть страницу в TWebBrowser, и программно заполнить поля Имя и Пароль, и нажать ссылку Войти. Но как это сделать?

Программу делаю для больницы))) Просто сами понимаете, люди часто ошибаются, вводят не то что надо, потом звонят и говорят что не работает, приходится бежать и объяснять что да как. С программой будет проще, ибо идея в том что как программа откроется, и появляется сразу форма с необходимыми полями для ввода

-------
Опыт растет прямо пропорционально выведенному из строя оборудованию


Отправлено: 08:29, 26-08-2010 | #4


Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


Отследите заголовки (в ff c плугином), и делайте такой же запрос своим софтом, принимая кукисы. Думайте на уровне протокола, а не кнопочек...
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:53, 26-08-2010 | #5


Аватара для RUVATA

Старожил


Сообщения: 301
Благодарности: 16

Профиль | Отправить PM | Цитировать


А эти самые юзвери... кроме этого сайта и-нет используют... я имею виду браузерами пользуются...
Если Да, то решение в приципе простое:
ты из проги запускаешь браузер с параметрами... (предварительно в браузере, сохранив условия входа на сайт)
Delphi - не знаю... пишу на vb.NET
у меня это выглядит так:

возьмем на примере того-же forum.ozone.net
у меня в браузере сохранены условия входа (запомнен пароль и логин)
ежели я из проги запускаю процесс с атрибутом URL сайта - то открывается браузер на этой страничке, уже прошедший авторизацию

Код: Выделить весь код
Dim MyProcess As New Process
        
        MyProcess.StartInfo.FileName = "MzF"
        '           StartInfo.FileName  - если приложение не описанно в sys.переменной PATH, у меня описанно как MzF
        '           то указывать полное имя к программе... н\п "C:\Program Files\Mozilla Firefox\firefox.exe"
        MyProcess.StartInfo.Arguments = "forum.ozone.net"  
        MyProcess.Start()
        '           запуск процесса.
вот так...

-------
Одно дело искать сиюминутное решение, другое - искать знания...
вот и думай - что ты ищешь...

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:15, 26-08-2010 | #6


Аватара для CJ F.A.N.

Ветеран


Сообщения: 565
Благодарности: 30

Профиль | Сайт | Отправить PM | Цитировать


Спасибо! Ну я тут уже кое что намудрил, единственное что интересует теперь, это следующее. Ну допустим на сайте Два поля ввода текста. Как к ним получить доступ зная их имя? Ну вот например,

WebBrowser1.OleObject.Document.all('ctl00$LoginViewCtrl$Login1$UserName').value:='Имя'; - это я пытался заполнить поле для ввода имени. Но не работает. А как правильно надо?

-------
Опыт растет прямо пропорционально выведенному из строя оборудованию


Отправлено: 10:26, 26-08-2010 | #7


Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


CJ F.A.N., берёте какой нибудь снифер (браузерный или обычный... не важно). Снифаете данные при нажатии на какой нибудь элемент формы (форма авторизации например). Далее в программе воспроизводите этот запрос с помощью Winsock, WinInet, TNMHTTP, TIdHTTP.

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:53, 27-08-2010 | #8


Вредитель


Сообщения: 460
Благодарности: 126

Профиль | Отправить PM | Цитировать


CJ F.A.N., посмотрите здесь и более общее здесь

-------
Все сказаное является только моим личным мнением.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:54, 27-08-2010 | #9


Аватара для CJ F.A.N.

Ветеран


Сообщения: 565
Благодарности: 30

Профиль | Сайт | Отправить PM | Цитировать


DedAlex, огромное спасибо, ссылки помогли!
Помогли вот эти процедуры:

Код: Выделить весь код
function tform1.GetFormByNumber(document: IHTMLDocument2;
    formNumber: integer): IHTMLFormElement;
var
  forms: IHTMLElementCollection;
begin
  forms := document.Forms as IHTMLElementCollection;
  if formNumber < forms.Length then
    result := forms.Item(formNumber,'') as IHTMLFormElement
  else
    result := nil;
end;

procedure tform1.SetFieldValue(theForm: IHTMLFormElement;
  const fieldName: string; const newValue: string;
  const instance: integer=0);
var
  field: IHTMLElement;
  inputField: IHTMLInputElement;
  selectField: IHTMLSelectElement;
  textField: IHTMLTextAreaElement;
begin
  field := theForm.Item(fieldName,instance) as IHTMLElement;
  if Assigned(field) then
  begin
    if field.tagName = 'INPUT' then
    begin
      inputField := field as IHTMLInputElement;
      if (inputField.type_ <> 'radio') and
         (inputField.type_ <> 'checkbox')
      then
        inputField.value := newValue
      else
        inputField.checked := (newValue = 'checked');
    end
    else if field.tagName = 'SELECT' then
    begin
      selectField := field as IHTMLSelectElement;
      selectField.value := newValue;
    end
    else if field.tagName = 'TEXTAREA' then
    begin
      textField := field as IHTMLTextAreaElement;
      textField.value := newValue;
    end;
  end;
end;[/b]

Потом просто сделал дополнительную процедуру Autologin:

[b]procedure tform1.autologin;
var
  document: IHTMLDocument2;
  theForm: IHTMLFormElement;
 begin
  document := WebBrowser1.Document as IHTMLDocument2;
  theForm := GetFormByNumber(WebBrowser1.Document as IHTMLDocument2,0);
  SetFieldValue(theForm,'Имя поля ввода логина','Имя пользователя');
   form1.prog.Progress:= 4;
  SetFieldValue(theForm,'Имя поля ввода пароля','Пароль');
  form1.prog.Progress:= 3;
  webbrowser1.Navigate('А тут код той ссылки, нажав на которую происходил вход на сайт. Тут Ява скрипт был какой то');
  form1.prog.Progress:= 6;

  ready:= false;
end;
Очень полезные ссылки, а то сколько не искал примеров, там ничего подходящего не оказалось! Проблема решена!

-------
Опыт растет прямо пропорционально выведенному из строя оборудованию


Последний раз редактировалось Drongo, 01-09-2010 в 11:10. Причина: Использовать тег код - #

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:36, 01-09-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Программа для работы с сайтом

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Wireless - Программа для работы с WiFI _Kaban_ Сетевое оборудование 3 28-01-2010 14:49
[решено] Программа для работы с векторной графикой Naiad Программное обеспечение Linux и FreeBSD 4 14-11-2008 18:41
ПРограмма для работы с видео файлами .mkv D.A.E. Программное обеспечение Windows 1 24-03-2008 00:39
программа для работы с Apparmor vol4enok Программное обеспечение Linux и FreeBSD 0 01-05-2007 00:25
Программа для работы с телефоном на ПК Qwe1 Мобильные ОС, смартфоны и планшеты 2 26-09-2006 22:42




 
Переход