• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Авторизоваться в twebbrowser и выбрать пункт меню

  • Автор темы Shouldercannon
  • Дата начала
S

Shouldercannon

Доброго времени суток!
Есть задача:
1. Загрузить ссылку в TWebBrowser и в нём же произвести авторизацию
2. Войти в нужный пункт меню и нажать кнопку
Помогите, пожалуйста, реализовать?
 
S

sinkopa

Доброго времени суток!
Есть задача:
1. Загрузить ссылку в TWebBrowser и в нём же произвести авторизацию
1. Загрузить страницу
Код:
Webbrowser1.Navigate('http://www.blabla.bla');
while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
2. Получить интерфейсы IHTMLDocument2 и IHTMLWindow2
Код:
uses MSHTML;
// . . .
var
Doc: IHTMLDocument2;
HTMLWindow : IHTMLWindow2;
// . . .
Webbrowser1.Document.QueryInterface(IHTMLDocument2, Doc);
HTMLWindow := Doc.parentWindow;
3. Отыскать форму с авторизацией и заполнить контролы логина и заполнить значения
Код:
var
ovElements: OleVariant;
// . . .
 
for i := 0 to Doc.Forms.Length - 1 do begin
  ovElements := Doc.Forms.Item(i).elements;
 
  for j := ovElements.Length - 1 downto 0 do begin
	 if (ovElements.Item(j).tagName = 'INPUT') and (ovElements.Item(j).type = 'text') then
	   ovElements.item(j).Value := 'блалогин';
  // . . .
  end;
// . . .
end;
4. Отправтить форму (залогиниться)
можно напрямую
Код:
Doc.Forms.Item(i).submit();
или через метод execScript окна (если известен ID имя формы)
Код:
HTMLWindow.execScript('document.<loginFom>.submit()', 'JavaScript'); // <loginForm> - ID имя формы
2. Войти в нужный пункт меню и нажать кнопку
Помогите, пожалуйста, реализовать?
А вот это уже к экстрасенсам...
Меню на HTML-странице можно реализовать 128-ю с половиной способами... :)
 
S

Shouldercannon

Вот так получилось.
Код:
procedure TForm6.Button1Click(Sender: TObject);
var
  Form: OleVariant;
  I, I2: Integer;
begin
  for I := 0 to WebBrowser1.OleObject.Document.Forms.Length - 1 do
  begin
	Form := WebBrowser1.OleObject.Document.Forms.Item(I).elements;
 
 
 
 
	for I2 := 0 to Form.Length - 1 do
	begin
	  if Form.Item(I2).name = 'log_email' then Form.Item(I2).value := ELogin.Text
	  else if Form.Item(I2).name = 'pass' then Form.Item(I2).value := EPassword.Text;
 
 
 
 
	  Button2.Click;
	end;
  end;
end;
 
 
 
 
procedure TForm6.Button2Click(Sender: TObject);
var
  Form: OleVariant;
  I, I2: Integer;
begin
  for I := 0 to WebBrowser1.OleObject.Document.Forms.Length - 1 do
  begin
	Form := WebBrowser1.OleObject.Document.Forms.Item(I).elements;
 
 
 
 
	for I2 := 0 to Form.Length - 1 do
	begin
	  if ((Form.Item(I2).type = 'submit') and (Form.Item(I2).value = 'Войти')) then
	  begin
		Form.Item(I2).Click;
	  end;
	end;
  end;
end;
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!