Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Сменить User-Agent в TChromium - Delphi


Автор: QweR1ty 22.10.2015, 23:23
Доброго всем дня. Ломаю голову уже не первый день по поводу смены User-Agent'а в компоненте TChromium TCEF3. Подскажите, пожалуйста, кто знает как это делается? Гугл мне не смог толком помочь. В библиотеке ceflib нашел данный участок кода: 
Код

function CefLoadLib(
  const Cache: ustring = '';
  const UserAgent: ustring = '';
  const ProductVersion: ustring = '';
  const Locale: ustring = '';
  const LogFile: ustring = '';
  const BrowserSubprocessPath: ustring = '';
  LogSeverity: TCefLogSeverity = LOGSEVERITY_DISABLE;
  JavaScriptFlags: ustring = '';
  ResourcesDirPath: ustring = '';
  LocalesDirPath: ustring = '';
  SingleProcess: Boolean = False;
  CommandLineArgsDisabled: Boolean = False;
  PackLoadingDisabled: Boolean = False;
  RemoteDebuggingPort: Integer = 0;
  ReleaseDCheck: Boolean = False;
  UncaughtExceptionStackSize: Integer = 0;
  ContextSafetyImplementation: Integer = 0;
  PersistSessionCookies: Boolean = False;
  IgnoreCertificateErrors: Boolean = False): Boolean;


При смене значения UserAgent, меняется и User-agent браузера. Но это не вариант конечно.
На заморских сайтах видел подобную команду
Код

CefLoadLib('','this_is_my_user_agent','','','','',LOGSEVERITY_DISABLE,ANGLE_IN_PROCESS,0,0);
 , но она также не хочет работать. Выручайте smile

Автор: b8195108 23.10.2015, 08:37
В dpr до вызова CefLoadLibDefault

Код

CefUserAgent := 'this_is_my_user_agent';

Автор: QweR1ty 23.10.2015, 14:19
Цитата(b8195108 @ 23.10.2015,  08:37)
В dpr до вызова CefLoadLibDefault

Код

CefUserAgent := 'this_is_my_user_agent';

Но при этом ведь не получится менять агента во время работы программы? Желательно, чтобы юзер-агента можно было менять во время работы программы. Возможно такое?

Автор: b8195108 23.10.2015, 14:54
В описанном мной варианте: каждый раз разрушать TChromium, выгружать библиотеку, менять UA и далее в обратном порядке.


Чисто теоретически для смены "на лету" можно попробовать менять заголовки напрямую, например в OnBeforeBrowse
1) получаем заголовки request.GetHeaderMap
2) добавляем/меняем UA
3) возвращаем измененные заголовки request.SetHeaderMap

Автор: QweR1ty 23.10.2015, 16:14
b8195108, спасибо огромное за совет smile 

Автор: b8195108 23.10.2015, 18:35
Не за что  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)