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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QWebView, проблемы идентификации  (Прочитано 5093 раз)
ufna
Гость
« : Декабрь 12, 2009, 01:06 »

Добрый день,


Нужно сделать так, чтобы яваскрипт знал WebKit'овский браузер как IE, а не Netscape. Грубо говоря, должен обходить простую проверку на navigator.appName. Совершенно не могу понять как Грустный
Записан
sendevent
Гость
« Ответ #1 : Декабрь 12, 2009, 01:19 »

задать юзер-агент IE'шный.
*добавлено чуть подумав: наверное. =)
« Последнее редактирование: Декабрь 12, 2009, 01:22 от sendevent » Записан
ufna
Гость
« Ответ #2 : Декабрь 12, 2009, 01:38 »

На самом деле счас покопался, это в вебките зашито просто так:
Код
C++ (Qt)
String NavigatorBase::appName() const
{
   return "Netscape";
}
 
Т.е. грубо говоря только Qt перекомпиливать и строку менять Грустный


юзер-агент обманывает только пхп и подобное, но не яву.
Записан
SABROG
Гость
« Ответ #3 : Декабрь 12, 2009, 09:35 »

Проще этот самый JavaScript подредактировать на лету и отправить на сервер любую другую информацию.
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #4 : Декабрь 12, 2009, 12:23 »

юзер-агент обманывает только пхп и подобное, но не яву.
Что ты имеешь ввиду? Т.е. хочешь сказать если я укажу
Код
Java
this.userAgent = "Chrome/3.0.195.33";
myReq.setRawHeader( new QByteArray("User-Agent"), new QByteArray(this.userAgent) );
 
то явовский код сайта этому не поверит? И вообще, о чём речь - о java или javascript???
« Последнее редактирование: Декабрь 12, 2009, 14:06 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
sendevent
Гость
« Ответ #5 : Декабрь 12, 2009, 16:09 »

юзер-агент обманывает только пхп и подобное, но не яву.
Что ты имеешь ввиду? Т.е. хочешь сказать если я укажу
Код
Java
this.userAgent = "Chrome/3.0.195.33";
myReq.setRawHeader( new QByteArray("User-Agent"), new QByteArray(this.userAgent) );
 
то явовский код сайта этому не поверит? И вообще, о чём речь - о java или javascript???

речь идет о жабоскрипте.
твой пример кода обманет серверную часть на любом языке (пройдет проверку через $_SERVER['HTTP_CLIENT'], или как оно там).
но джавоскриптовый navigator.appName - клиентсайд, ему накакать на твои хттп-заголовки, важнее чего вкомпиллено в его движок. а вкомпиллено действительно "Netscape" - ufna абсолютно прав.
чтобы обойти - надо в NavigatorBase завести пропертю, ей сделать паблик сеттер, поднять его до уровня QtWebKit - работы не много, но пересобирать весь модуль - очень уж лениво.
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #6 : Декабрь 12, 2009, 17:19 »

вот, другое дело, всё понятно)
Записан

kubuntu/Win7/x64/NetBeans
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #7 : Декабрь 16, 2009, 18:31 »

Всё проще.
Тут основную роль сыграют базовые знания js - переопределяем navigator:
Код
Java
qwebview.page().mainFrame().evaluateJavaScript("var navigator = new Object; navigator.appName = 'Mozilla/4.0 (compatible; MSIE 6.0; Win32)';");
...
qwebview.load(url);
 
На qt jambi я пробовал, всё нормально.
« Последнее редактирование: Декабрь 16, 2009, 18:40 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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