您的位置:首页 > 其它

User-Agent来分析来自手机还是电脑

2013-03-16 21:29 387 查看
如题。

本人试过的方法有:

1).通过分辨率来判断,但发现目前有些手机分辨率也很大,其他一些手持设备(比如iPad)的分辨率也比较大。所以分辨率很多时候很难真正分辨出是来自手机或是电脑。

2).通过http head头信息中的User-Agent来分析来自手机还是电脑,但发现准确率也无法保证是100%。

请大家给点建议,不甚感激!

3次浏览 2011-04-27 08:09


18 个回答

这种应用一般都是通过浏览器来分辨的;读取浏览器的头信息来判断来自何种终端。

2011-04-27 08:20

引用 1 楼 promore 的回复:

这种应用一般都是通过浏览器来分辨的;读取浏览器的头信息来判断来自何种终端。

你所说的读取浏览器的头信息不是UA信息吗?

能否再详细一些?

2011-04-27 08:31

引用 1 楼 promore 的回复:

这种应用一般都是通过浏览器来分辨的;读取浏览器的头信息来判断来自何种终端。

请求头是无法区分的

以前见过有人提出这个问题 貌似没有好的办法~~

不过楼主的初衷是什么?

2011-04-27 08:52

ua可以伪造,ip有wifi。。。其实服务器拿到的信息都是客户端告诉你的,凭这些信息很难确定客户端类型,就好比我告诉你说我是个亿万富翁,你根本无从判断真假。

不过ua头+ip段+分辨率还是可以识别大部分的

2011-04-27 09:08

通过User-Agent获取操作系统信息和客户端浏览器判断

Java code
static final String[] MOBILE_SPECIFIC_SUBSTRING = {
"iPad","iPhone","Android","MIDP","Opera Mobi",
"Opera Mini","BlackBerry","HP iPAQ","IEMobile",
"MSIEMobile","Windows Phone","HTC","LG",
"MOT","Nokia","Symbian","Fennec",
"Maemo","Tear","Midori","armv",
"Windows CE","WindowsCE","Smartphone","240x320",
"176x220","320x320","160x160","webOS",
"Palm","Sagem","Samsung","SGH",
"SIE","SonyEricsson","MMP","UCWEB"};

private boolean checkMobile() {
String userAgent = request.getHeader("user-agent");
for (String mobile: MOBILE_SPECIFIC_SUBSTRING){
if (userAgent.contains(mobile)
|| userAgent.contains(mobile.toUpperCase())
|| userAgent.contains(mobile.toLowerCase())){
return true;
}
}

return false;
}


但不能100%的判断准确。比如电脑用户可以在firefox浏览器设置User-Agent,可以模拟手机环境访问。

但我觉得以上代码我觉可以判断99%的手机用户了。

以下是绝大部分手机获取User-Agent的特点

1. “iPhone” – all iPhone models contain string “iPhone” in their user agent properties.

2. “Android” – same note as above with some exceptions.

3. “MIDP” – many mobile devices contain string “MIDP”. Some of this devices can have screen big enough to properly display regular version of your site. So think..

4. “Opera Mobi” – some of mobiles contain this string detecting mobile version of Opera.

5. “Opera Mini” – some of mobiles contain this string …

6. “BlackBerry” – one of most popular smartphones.

7. “HP iPAQ” – Hewlett Packard smartphone?

8. “IEMobile” – microsoft IE mobile version.

9. “MSIEMobile” – the same as above.

10.”Windows Phone” – microsoft mobile OS detection.

11.”HTC” – sometimes htc phones contain nothing specific but this.

12.”LG” – LG.

13.”MOT” – Motorola.

14.”Nokia” – just Nokia.

15.”Symbian” – Symbian OS detection.

16.”Fennec” – mobile Firefox.

17.”Maemo” – linux version from Nokia. Is it may be used only on phones?

18.”Tear” – some mobile browser from/for Nokia?

19.”Midori” – it seems like Nokia gays have nothing to do. For what so many browsers?

20.”armv6l” – some string detecting Nokia phones.

21.”armv7l” – .. above. “armv” can be used as generic version.

22.”Windows CE”.

23.”WindowsCE” – variant of above.

24.”Smartphone” – some smartphones (why not all?!) contain this string.

25.”240×320″ – .. above. I see the future: soon (already?) web designers will take these parameters directly to their site width and height.

26.”176×220″, “320×320″, “160×160″ – same as above.

27.”webOS” – Palm webOS detection.

28.”Palm” – just Palm.

29.”Sagem” – more less known phone.

30.”Samsung”.

31.”SGH” – Samsung.

32.”Siemens”, “SIE” – Siemens.

33.”SonyEricsson”.

34.”MMP” some phones contain this string in their user-agents.

35.”UCWEB” – just another mobile browser.

36. “iPad” – all iPad models contain string “iPad” in their user agent properties.

2011-04-27 09:23

var sUserAgent = navigator.userAgent.toLowerCase();

var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";

var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";

var bIsMidp = sUserAgent.match(/midp/i) == "midp";

var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";

var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";

var bIsAndroid = sUserAgent.match(/android/i) == "android";

var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";

var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";

2011-04-27 09:28

再 根据不同的客户端请求不同的URL

2011-04-27 09:30

User-Agent是最不靠谱的。。。

2011-04-27 10:27

9L 还有什么好方法?

2011-04-27 10:36

没法百分之百的。

可以结合判断User-Agent和屏幕分辨率来判断。

2011-04-27 10:48

分辨率+ua吧识别率高一些

2011-04-27 10:53

貌似通过分析请求头的方法不能实现。

一个人如果对HTTP协议比较熟悉的话,跟本不需要浏览器就可以访问你的服务。

如果你的系统是BS结构的话,还可以通过自定义协议方式来做的。

看看有没有高人出来说两句。

2011-04-27 11:46

原来这样啊,但是我看联通的网站就能够非常快的分辨出来

我是否来着手机wap

2011-04-27 12:01

引用 14 楼 linmarklin 的回复:

原来这样啊,但是我看联通的网站就能够非常快的分辨出来

我是否来着手机wap

他是根据ip段来判断的

2011-04-27 14:08

引用 13 楼 yingzhuo2011 的回复:

貌似通过分析请求头的方法不能实现。

一个人如果对HTTP协议比较熟悉的话,跟本不需要浏览器就可以访问你的服务。

如果你的系统是BS结构的话,还可以通过自定义协议方式来做的。

看看有没有高人出来说两句。

您说具体点好吗?我也想学习··如何自定义协议?

2011-04-27 16:17

学习来的


2011-04-27 16:21

现在好多电脑端软件可以模拟手机联网 登录手机网站 下载wap网站的资源

能完全区分吗
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: