Russian Qt Forum
Июня 29, 2025, 10:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Захват данных при загрузке дочерних фреймов  (Прочитано 10034 раз)
Den
Гость
« : Июня 27, 2012, 15:47 »

Здравствуйте

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

Код:
QFileInfo info(QApplication::applicationFilePath());
//Путь к файлу
   QString htmlFile = info.dir().filePath("frame.htm");
//Массив в котором будет хранится содержимое файла
    QByteArray data;
//Класс отвечающий за дешифрацию
    Kripto kript;
//Считываем их файла зашифрованные данные, дешифруем и помещаем в data
    data=kript.start(htmlFile);
//(WebV наследник QWebView) загружаем дешифрованные данные в QWebView
    WebV->setHtml(data,QUrl::fromLocalFile(htmlFile));
//Все нормально показывает
    WebV->show();

Проблема заключается в том, что если html файл содержит в себе фреймы <frame> то сам он дешифруется нормально, а вот файлы которые выводятся в фреймах не дешифруются.

Приведу пример:

Есть html с таки кодом

Код:
<html>
    <head>
        <title>Фреймы в html</title>
    </head>
    <frameset rows="50%, 50%" >
        <frame src="1.htm">
        <frame src="2.htm">
    </frameset>
</html>

При срабатывании программы получаем следующее



Как мы видим основная страница выглядит нормально, а вот те две которые подгружаются в нее не дешифрованы.

Требуется перехватить загрузку страниц в дочерние фреймы, дешифровать, а затем отправить обратно.
Записан
Bepec
Гость
« Ответ #1 : Июня 27, 2012, 15:52 »

К сожалению не вижу расшифрованной части Улыбающийся

А в чём проблема фреймы напрямую загрузить?
Записан
mutineer
Гость
« Ответ #2 : Июня 27, 2012, 16:04 »

Покопай в сторону класса QWebFrame
Кроме того посмотри на
Код:
void QWebPage::frameCreated ( QWebFrame * frame ) [signal]
« Последнее редактирование: Июня 27, 2012, 16:06 от mutineer » Записан
Den
Гость
« Ответ #3 : Июня 27, 2012, 16:09 »

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

2) Это как бы очевидно, я уже по уши в QWebFrame закопался пока выхода не вижу.
Записан
mutineer
Гость
« Ответ #4 : Июня 27, 2012, 16:11 »

2) Это как бы очевидно, я уже по уши в QWebFrame закопался пока выхода не вижу.

Откуда это очевидно?
Записан
Den
Гость
« Ответ #5 : Июня 27, 2012, 16:35 »

Ну я сразу начал разбираться в структуре QWebKit и QWebFrame  показался мне наиболее перспективным классом, хотя решение может быть и не в нем.  Улыбающийся

frameCreated интересная идея, только что-то не приходит сигнал
Записан
Bepec
Гость
« Ответ #6 : Июня 27, 2012, 16:48 »

А можно у вас спросить примерчик html ки с алгоритмиков дешифровки? Улыбающийся

Записан
Den
Гость
« Ответ #7 : Июня 28, 2012, 09:49 »

Класс шифровки дешифровки реализовывал не я поэтому извините. Html файл я привел, или какой вам?

Так что, есть идеи?
Записан
Bepec
Гость
« Ответ #8 : Июня 28, 2012, 10:51 »

Я бы упростил задачу % на 350. Улыбающийся

Берёте ссылку на этот html, тупо его читаете. Расшифровываете. Находите там ссылки на фреймы. Читаете, расшифровываете. Находите там ссылки и прочая прочая прочая в цикле.
А потом просто создаёте расшифрованную копию с нужной структурой и усё.

В чём проблема? Улыбающийся

PS и класс расшифровщика у вас видимо подточен на работу с 1 страницей. Так и используйте его. Последовательная расшифровка и никакого волшебства.

PPS *зануда ON* В результате у вас будет темповый расшифрованный результат, который можно открыть в любом браузере(в том числе и вебвьев).*зануда OFF*
« Последнее редактирование: Июня 28, 2012, 10:56 от Bepec » Записан
Den
Гость
« Ответ #9 : Июня 28, 2012, 11:42 »

Такая идея приходила мне в голову, я просто испытываю сомнения, правильно ли так делать? Опыт мне подсказывает что есть место где происходит собственно считывание данных по ссылкам и загрузка считанных тегов в фреймы, если его найти и вставить туда дешифратор то будет элегантное решение, его то я и ищу. Но, конечно, если не найду придется сделать так как вы предложили.
« Последнее редактирование: Июня 28, 2012, 12:02 от Den » Записан
Bepec
Гость
« Ответ #10 : Июня 28, 2012, 12:02 »

Я вам больше скажу - это место вы не сможете использовать. Это приватные вроде бы методы.
И в webView в page() mainFrame() и других frame вы найдете уже "скомпилированный" код html ки.

Я думаю, так даже правильнее делать. QWebView  в вашем случае ммм... избыточен. Ведь задача - расшифровать. А показывать можно и потом.
Записан
Den
Гость
« Ответ #11 : Июня 28, 2012, 14:55 »

Возник еще такой вопрос, некоторые страницы содержат картинки, картинки эти также зашифрованы, где тот механизм который загружает картинку на страницу по тегу <img>?
Записан
Bepec
Гость
« Ответ #12 : Июня 28, 2012, 15:04 »

Недра FrameLoader'а хранят в себе эту тайну.
Записан
Den
Гость
« Ответ #13 : Июня 28, 2012, 15:06 »

Это да, я весь его отDebugил, я так понимаю вмешиваться в работу FrameLoadera не рекомендуется?
Записан
Bepec
Гость
« Ответ #14 : Июня 28, 2012, 15:12 »

Он жеж вроде приватный. Я бы не советовал - слишком ... слишком многое можешь порушить Веселый

Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 3.773 секунд. Запросов: 21.