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

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

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

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

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

Нажать кнопку в tchromium

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

Shouldercannon

Доброго времени суток!
Помогите пожалуйста нажать на кнопку в Delphi XE7, которая имеет код
HTML:
<a class="pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary" href="#" rel="async" role="button">Просмотреть еще 134<i class="mhs mts arrow img sp_Ss0nf7RU1fT sx_24510d"></i></a>
Тут нет ни onclick, ни submit.
Код:
JSCode := 'document.getElementById или getElementsByClassName("name").click();';
Не работает.
 
S

sinkopa

Помогите пожалуйста нажать на кнопку в Delphi XE7, которая имеет код
HTML:
<a class="pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary" href="#" rel="async" role="button">Просмотреть еще 134<i class="mhs mts arrow img sp_Ss0nf7RU1fT sx_24510d"></i></a>
Тут нет ни onclick, ни submit.
А что значит нажать на кнопку? :)
Кнопки у Вас никакой и нету. У Вас есть тэг "<a>" (элемент-ссылка)
естественно у него нету ни onclick, ни submit. Ведь у него есть атрибут href.
Кстати href="#" означает что по клику будет произведен релоад URL той самой страницы где Вы сейчас находитесь...

Код:
JSCode := 'document.getElementById или getElementsByClassName("name").click();';
Не работает.
А должно? :)
 
S

Shouldercannon

В данном случае нет. С widget comments VK это работает, да и там хоть по человечески сделано
HTML:
<a href="" onclick="WComments.showMore(); return false;" id="wcomments_more_link" style="">
	  <div class="progress" id="wcomments_more_progress"></div>
	  <div id="wcomments_more">к предыдущим записям ↓</div>
	</a>
Код:
JSCode := 'document.getElementById("wcomments_more_link").click();';
Chromium1.Browser.MainFrame.ExecuteJavaScript(JSCode, '', 0);
Chromium1.Browser.MainFrame.GetSourceProc(CallbackGetSource);
Как теперь проблему решить, из-за неё всё остановилось.
Пробовал так
Код:
var
  JSCode: string;
begin
  JSCode := 'function fireEvent(element,event) {' +
			  'var evt = document.createEvent("HTMLEvents");' +
			  'evt.initEvent(event, true, false); // event type, bubbling, cancelable' +
			  'element.dispatchEvent(evt);' +
			'}' +
			'fireEvent(document.getElementById("pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary"), "click");';
 
  Chromium1.Browser.MainFrame.ExecuteJavaScript(JSCode, '', 0);
А id у ссылки нет и способ бестолковый.
 
Последнее редактирование:
M

-master-

естественно у него нету ни onclick
onclick. я даже и не знаю, есть ли теги у которых его нет, исключая конечно всякие доп параметры обжектов и т.п.
[DOUBLEPOST=1428246567,1428246500][/DOUBLEPOST]
Кстати href="#" означает что по клику будет произведен релоад URL той самой страницы где Вы сейчас находитесь...
это вы выдумали, никакого релоада не происходит, это просто заглушка, правда отскролит в топ
[DOUBLEPOST=1428246833][/DOUBLEPOST]@Shouldercannon, откуда ссылка? надо смотреть что она делает в натуре
 
M

-master-

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

Shouldercannon

То есть сие
HTML:
<div class="clearfix mts mlm uiMorePager stat_elem fbFeedbackPager fbFeedbackTopLevelPager _52jv" id="pager5521628cc35164724602434"><div><a class="pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary" href="#" rel="async" target="_blank" role="button">Просмотреть еще 134<i class="mhs mts arrow img sp_comments sx_comments_arrowb"></i></a><span class="uiMorePagerLoader pam uiBoxLightblue fbFeedbackPagerLink"><img class="img" src="https://fbstatic-a.akamaihd.net/rsrc.php/v2/yb/r/GsNJNwuI-UM.gif" alt="" width="16" height="11"></span></div></div>
Как то запутано всё
 
M

-master-

при чем тут запутано или нет? так сделали так им захотелось
я вижу что фигурирует объект именно дива когда отсылается запрос
 
S

Shouldercannon

Как теперь в таком случае добраться до этого элемента и сделать по нему клик?
 
M

-master-

точно также, только зачем вам браузер? это все можно сделать без него
 
M

-master-

это вы что-то придумываете, TWebBrawser использует ИЕ, а в ие всё видно
а зачем вам все? там мусора 70%
 
S

sinkopa

Как теперь в таком случае добраться до этого элемента и сделать по нему клик?
ну... добраться всегда как нибудь можно...
например можно попробовать собрать лист элементов по имени тэга.

Потом пробежаться по нему и отыскать нужный (к примеру читать/проверять атрибут class у самого элемента и его парента).
А вот с кликом...
Вот я лично подозреваю что обработчик клика приклеивается к элементу только в момент когда мышь над элементом появляется...
(см. страшный код добавляемых через ServerJSQueue.add идущих вслед за контентом)
 
S

sinkopa

sinkopa сказал(а): ↑

Кстати href="#" означает что по клику будет произведен релоад URL той самой страницы где Вы сейчас находитесь...

это вы выдумали, никакого релоада не происходит, это просто заглушка, правда отскролит в топ
угу, согласен... почти... если "href-заглушка" в мэйновом фрейме и отсутствует атрибут target... тогда да... скаконём к шапке... :)
 
S

Shouldercannon

это вы что-то придумываете, TWebBrawser использует ИЕ, а в ие всё видно
а зачем вам все? там мусора 70%
Уже пробовал потому и говорю. Из IE можно получить исходники того, что было загружено в первый раз, то что загружается дальше (нажатие на ссылку Показать ещё) не отображается в исходном коде. Даже если все фреймы из IE сохранить, то всё равно части исходного кода нет. Так бы я никогда TChromium бы не использовал.
 
M

-master-

что вы пробовали не знаю, я говорю то что есть на самом деле
откройте ие, загрузите страницу, нажмите F12 все есть, нажмите подгрузить, опять все есть

никаких исходных кодов не надо, надо смотреть в ДОМ
 
S

Shouldercannon

Решено
Код:
document.getElementsByClassName("pam uiBoxLightblue fbFeedbackPagerLink uiMorePagerPrimary")[0].click();
 
Последнее редактирование:
Мы в соцсетях:

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