Доброго времени суток всем! Подскажите, пожалуйста, как в SDK Mozilla 4.0 подменить user agent на какой-нибудь свой, например "Вася Пупкин" или что-то в этом духе?.. Суть в том, что есть самописный http-сервер и самописный браузер на основе xulrunner_sdk_2.0, который пуляет запросы на этот сервер. Вот нужно, чтобы при отправке запроса в качестве user-agent стояло не Mozilla bla-bla-bla, а то, что нужно мне... Я отдалённо слышал, что нужно реализовать какой-то листенер... Может кто-нибудь поподробнее рассказать, а лучше ссылочками помочь?.. )))

Нужно поменять настройки браузера.  На Delphi так:

Выделить код

Код:

procedure ChangeUserAgent(UserAgent:string);
var
  PrefService: nsIPrefService;
  PrefBranch: nsIPrefBranch;
const
  PREFSERVICE_ContractID= '@mozilla.org/preferences-service;1';
begin
  NS_GetService(PREFSERVICE_ContractID, nsIPrefService,PrefService);
  PrefService.GetBranch('general.useragent.',PrefBranch);
  PrefBranch.SetCharPref('override', PChar(UserAgent));
end;
arhberk пишет

Вот нужно, чтобы при отправке запроса в качестве user-agent стояло не Mozilla bla-bla-bla, а то, что нужно мне...

Выставляйте у запроса соответствующие заголовки.

arhberk пишет

Нужно поменять настройки браузера.  На Delphi так:

Выделить код

Код:

procedure ChangeUserAgent(UserAgent:string);
var
  PrefService: nsIPrefService;
  PrefBranch: nsIPrefBranch;
const
  PREFSERVICE_ContractID= '@mozilla.org/preferences-service;1';
begin
  NS_GetService(PREFSERVICE_ContractID, nsIPrefService,PrefService);
  PrefService.GetBranch('general.useragent.',PrefBranch);
  PrefBranch.SetCharPref('override', PChar(UserAgent));
end;

Огромный респект и уважуха за направление! На C существенно отличается:

Выделить код

Код:

BOOL CBrowserWnd::ChangeUserAgent(LPCSTR lpszUserAgentName)
{
    nsresult nsResult = NS_OK;
    nsIServiceManager *p_nsIServiceManager = NULL;
    nsIPrefService *p_nsIPrefService = NULL; 
    nsIPrefBranch *p_nsIPrefBranch = NULL;
    do
    {
        nsResult = NS_GetServiceManager(&p_nsIServiceManager);
        if (nsResult != NS_OK)
            break;
        nsResult = p_nsIServiceManager->GetService(NS_PREFSERVICE_CID, NS_IPREFSERVICE_IID, (LPVOID *)&p_nsIPrefService);
        if (nsResult != NS_OK)
            break;
        nsResult = p_nsIPrefService->GetBranch("general.useragent.", &p_nsIPrefBranch);
        if (nsResult != NS_OK)
            break;
        nsResult = p_nsIPrefBranch->SetCharPref("override", lpszUserAgentName);
    }
    while (0);

    return nsResult == NS_OK;
}

но суть в том, что работает! Ещё раз спасибо! Ловите плюсик! )

Helloween пишет

Ещё раз спасибо!

Не за что :)