获得UA

    技术2022-05-20  51

      233.940 HTTPPLUGIN:MHFRunL: EGotResponseBodyData (5)  233.950 HTTPPLUGIN:MHFRunL: EResponseComplete (6)  233.970 CUserAgent::CUserAgent  233.975 ENTRY CUserAgent::ConstructL()  233.985 EXIT CUserAgent::ConstructL()  233.995 ENTRY CUserAgent::UserAgent()  234.020 ENTRY CUserAgent::ReadUserAgentStringL()  234.035 Reading default UA string from cenrep.  234.040 Default UA string read from cenrep is empty. Will create a new string by reading variants from cenrep  234.050 Reading SymbianVersion from cenrep.  234.050 Reading S60Version from cenrep.  234.055 Reading HardwareType from cenrep.  234.055 Reading MIDPCLDCVersion from cenrep.  234.060 Successfully created a new UA string.  234.060 EXIT CUserAgent::ReadUserAgentDataL()  234.065 EXIT CUserAgent::UserAgent()  234.070 CUserAgent::~CUserAgent

     

    收集自 http://discussion.forum.nokia.com/forum/showthread.php?207580-how-to-get-browser-user-agent

    根据说法,应该是先找下标4的. 如果不存在. 再去构造.(You can find the full logic of creating Symbian^3 browser user agnet string in the /s60/mw/web/BrowserUtilities/WebUtils/src/CUserAgnt.cpp, in brief the browser first read the value of key 4, cenrep 0x101F8731, if not empty then it is used as the UA, ) ... const TInt KDefaultUserAgentString = 4; const TInt KMaxUserAgentStringLength = 256; HBufC8* ua = HBufC8::NewLC(KMaxUserAgentStringLength); TPtr8 ptr = ua->Des(); const TUid KCRUidWebUtils = {0x101F8731}; CRepository* cenrep = CRepository::NewLC(KCRUidWebUtils); TInt err = cenrep->Get(KDefaultUserAgentString, ptr); User::LeaveIfError(err); CleanupStack::PopAndDestroy(cenrep); // here handle the user agent string ... CleanupStack::PopAndDestroy(ua); ... --------------------------------- ... void CUserAgent::ReadUserAgentStringL() { ... retCode = iRepository->Get(EDefaultUserAgentString, tempPtr); if(retCode != KErrNone) { ... User::Leave(retCode); } if(!IsUAStringEmpty(tempPtr)) { ... return; } ... ReadAndCreateUAStringL(tempPtr); ... } ------------------------------------ ... // --------------------------------------------------------- // CUserAgent::ReadAndCreateUAStringL() // Reads verious fragments from OSExt APIs/CenRep and crates the UA string // --------------------------------------------------------- void CUserAgent::ReadAndCreateUAStringL(TPtr &aUAStringPtr) { GetFragmentsL(); // Mozilla/5.0 (<Symbian Version> <Series60Version> <HardwareType> <MIDP_CLDC Version> ) AppleWebKit/413 (KHTML, like Gecko) BrowserName/Version aUAStringPtr.Copy(KPlaceHolderMozillaVer); aUAStringPtr.Append(KSpaceChar); ... } --------------------------------------- 从log看可知S60 3rd似乎多了一个U. // Mozilla/5.0 (<Symbian Version> U; <Series60Version> <HardwareType> <MIDP_CLDC Version> ) AppleWebKit/413 (KHTML, like Gecko) BrowserName/Version -----------------------------------------------------------再分割------------------------------------------------- 但是每个机型上测试出来的结果, 下面是 5630的 major = 3, minor = 2 get 0: ret = 0, buf.Length() = 14, buf = SymbianOS/9.3; get 1: ret = 0, buf.Length() = 12, buf = Series60/3.2 get 2: ret = 0, buf.Length() = 21, buf = Nokia5630d-1/011.020; get 3: ret = 0, buf.Length() = 39, buf = Profile/MIDP-2.1 Configuration/CLDC-1.1 get 4: ret = 0, buf.Length() = 0, buf =  get 5: ret = 0, buf.Length() = 75, buf = Nokia5630d-1/011.020; Series60/3.2.3 Profile MIDP2.1 Configuration/CLDC-1.1 get 6: ret = 0, buf.Length() = 0, buf =  get 7: ret = 0, buf.Length() = 0, buf =  get 8: ret = 0, buf.Length() = 58, buf = "http://nds1.nds.nokia.com/uaprof/Nokia5630d-1r100-2G.xml" get 9: ret = 0, buf.Length() = 58, buf = "http://nds1.nds.nokia.com/uaprof/Nokia5630d-1r100-3G.xml" get a: ret = -1, buf.Length() = 0, buf =  get b: ret = 0, buf.Length() = 20, buf = Nokia5630d-1/011.020 get c: ret = 0, buf.Length() = 12, buf = Series60/3.2 get d: ret = 0, buf.Length() = 16, buf = Profile/MIDP-2.1 get e: ret = 0, buf.Length() = 22, buf = Configuration/CLDC-1.1 ua = 实际是 gw-ua is Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia5630d-1/011.020; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 下面是  E75的 major = 3, minor = 2 get 0: ret = 0, buf.Length() = 14, buf = SymbianOS/9.3; get 1: ret = 0, buf.Length() = 12, buf = Series60/3.2 get 2: ret = 0, buf.Length() = 20, buf = NokiaE75-1/100.48.78 get 3: ret = 0, buf.Length() = 39, buf = Profile/MIDP-2.1 Configuration/CLDC-1.1 get 4: ret = 0, buf.Length() = 0, buf =  get 5: ret = 0, buf.Length() = 74, buf = NokiaE75-1/100.48.78; Series60/3.2 Profile/MIDP-2.1 Configuration/CLDC-1.1 get 6: ret = 0, buf.Length() = 0, buf =  get 7: ret = 0, buf.Length() = 0, buf =  get 8: ret = 0, buf.Length() = 49, buf = "http://nds1.nds.nokia.com/uaprof/NE75-1r100.xml" get 9: ret = 0, buf.Length() = 49, buf = "http://nds1.nds.nokia.com/uaprof/NE75-1r100.xml" get a: ret = -1, buf.Length() = 0, buf =  get b: ret = 0, buf.Length() = 21, buf = NokiaE75-1/100.48.78; get c: ret = 0, buf.Length() = 12, buf = Series60/3.2 get d: ret = 0, buf.Length() = 16, buf = Profile/MIDP-2.1 get e: ret = 0, buf.Length() = 22, buf = Configuration/CLDC-1.1 ua =  实际是 gateway is Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1/100.48.78 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 这个是 N96的 major = 3, minor = 2 get 0: ret = 0, buf.Length() = 14, buf = SymbianOS/9.3; get 1: ret = 0, buf.Length() = 12, buf = Series60/3.2 get 2: ret = 0, buf.Length() = 16, buf = NokiaN96/12.043; get 3: ret = 0, buf.Length() = 39, buf = Profile/MIDP-2.1 Configuration/CLDC-1.1 get 4: ret = 0, buf.Length() = 149, buf = NokiaN96/SymbianOS/9.3 Series60/3.2 Release/12.043; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413 get 5: ret = 0, buf.Length() = 68, buf = NokiaN96/12.043; Series60/3.2 Profile MIDP2.1 Configuration/CLDC-1.1 get 6: ret = 0, buf.Length() = 0, buf =  get 7: ret = 0, buf.Length() = 0, buf =  get 8: ret = 0, buf.Length() = 47, buf = "http://nds1.nds.nokia.com/uaprof/NN96r100.xml" get 9: ret = 0, buf.Length() = 47, buf = "http://nds1.nds.nokia.com/uaprof/NN96r100.xml" get a: ret = -1, buf.Length() = 0, buf =  get b: ret = 0, buf.Length() = 15, buf = NokiaN96/12.043 get c: ret = 0, buf.Length() = 12, buf = Series60/3.2 get d: ret = 0, buf.Length() = 16, buf = Profile/MIDP-2.1 get e: ret = 0, buf.Length() = 22, buf = Configuration/CLDC-1.1 ua = NokiaN96/SymbianOS/9.3 Series60/3.2 Release/12.043; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413 实际值相同 这个是N95的 major = 3, minor = 1 get 0: ret = 0, buf.Length() = 12, buf = NokiaN95/1.0 get 1: ret = 0, buf.Length() = 0, buf =  get 2: ret = 0, buf.Length() = 37, buf = (20.1.001) SymbianOS/9.2 Series60/3.1 get 3: ret = 0, buf.Length() = 16, buf = Profile/MIDP-2.0 get 4: ret = 0, buf.Length() = 22, buf = Configuration/CLDC-1.1 get 5: ret = 0, buf.Length() = 0, buf =  get 6: ret = 0, buf.Length() = 0, buf =  get 7: ret = 0, buf.Length() = 0, buf =  get 8: ret = 0, buf.Length() = 49, buf = "http://nds1.nds.nokia.com/uaprof/NN95-5r100.xml" get 9: ret = 0, buf.Length() = 49, buf = "http://nds1.nds.nokia.com/uaprof/NN95-5r100.xml" get a: ret = -1, buf.Length() = 0, buf =  get b: ret = 0, buf.Length() = 17, buf = NokiaN95/20.1.001 get c: ret = 0, buf.Length() = 26, buf = SymbianOS/9.2 Series60/3.1 get d: ret = 0, buf.Length() = 16, buf = Profile/MIDP-2.0 get e: ret = 0, buf.Length() = 22, buf = Configuration/CLDC-1.1 ua = NokiaN95/1.0 (20.1.001) SymbianOS/9.2 Series60/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 实际值相同 这个是 N82的 major = 3, minor = 1 get 0: ret = 0, buf.Length() = 27, buf = Mozilla/5.0 (SymbianOS/9.2; get 1: ret = 0, buf.Length() = 12, buf = Series60/3.1 get 2: ret = 0, buf.Length() = 18, buf = NokiaN82/31.0.016; get 3: ret = 0, buf.Length() = 16, buf = Profile/MIDP-2.0 get 4: ret = 0, buf.Length() = 22, buf = Configuration/CLDC-1.1 get 5: ret = 0, buf.Length() = 2, buf = U; get 6: ret = 0, buf.Length() = 0, buf =  get 7: ret = 0, buf.Length() = 48, buf = ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 get 8: ret = 0, buf.Length() = 49, buf = "http://nds1.nds.nokia.com/uaprof/NN82-1r100.xml" get 9: ret = 0, buf.Length() = 49, buf = "http://nds1.nds.nokia.com/uaprof/NN82-1r100.xml" get a: ret = -1, buf.Length() = 0, buf =  get b: ret = 0, buf.Length() = 18, buf = NokiaN82/31.0.016; get c: ret = 0, buf.Length() = 12, buf = Series60/3.1 get d: ret = 0, buf.Length() = 16, buf = Profile/MIDP-2.0 get e: ret = 0, buf.Length() = 22, buf = Configuration/CLDC-1.1 ua = Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaN82/31.0.016; Profile/MIDP-2.0 Configuration/CLDC-1.1 实际值  gateway ua is Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN82/31.0.016; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 ------------------------------------------- 应该就是这些情况了.... 应该得增加一种情况. 3.2以上的先读第4个. 如果没有. 就和3.0及3.1一样处理.. 3.0和3.1无论第4个有没有都直接进拼装逻辑. 情况待验证.... 毕竟手上机型太少.... ------------------------------------------ 还没有开始动手, 领导就说不用做这块工作了. 资料先收集好. 待以后有机会的话再次回来看...


    最新回复(0)