精华内容
下载资源
问答
  • 这个项目有很多实用的功能,如识别访问我们网站设备是什么类型的(手机,平板,PC),据域名或者url来切换不同访问内容,据不同的访问设备转到不同的view中。 识别访问设备类型的核心代码在org.springfr

    Spring最近换域名了,去转转,发现了一个有意思的项目:spring mobile。

    http://projects.spring.io/spring-mobile/

    这个项目有很多实用的功能,如识别访问我们网站的设备是什么类型的(手机,平板,PC),据域名或者url来切换不同访问内容,据不同的访问设备转到不同的view中。


    识别访问设备类型的核心代码在org.springframework.mobile.device.LiteDeviceResolver 类中,这个类实际上根据http请求头部的User-Agent的内容来判断设备到底是哪种类型的。

    可以看到,这个类实际上是很简单的。不过字符串的匹配算法可能可以优化下。

    public class LiteDeviceResolver implements DeviceResolver {
    
    	private final List<String> mobileUserAgentPrefixes = new ArrayList<String>();
    
    	private final List<String> mobileUserAgentKeywords = new ArrayList<String>();
    
    	private final List<String> tabletUserAgentKeywords = new ArrayList<String>();
    
    	private final List<String> normalUserAgentKeywords = new ArrayList<String>();
    
    	public LiteDeviceResolver() {
    		init();
    	}
    
    	public LiteDeviceResolver(List<String> normalUserAgentKeywords) {
    		init();
    		this.normalUserAgentKeywords.addAll(normalUserAgentKeywords);
    	}
    
    	public Device resolveDevice(HttpServletRequest request) {
    		String userAgent = request.getHeader("User-Agent");
    		// UserAgent keyword detection of Normal devices
    		if (userAgent != null) {
    			userAgent = userAgent.toLowerCase();
    			for (String keyword : normalUserAgentKeywords) {
    				if (userAgent.contains(keyword)) {
    					return resolveFallback(request);
    				}
    			}
    		}
    		// UAProf detection
    		if (request.getHeader("x-wap-profile") != null || request.getHeader("Profile") != null) {
    			return LiteDevice.MOBILE_INSTANCE;
    		}
    		// User-Agent prefix detection
    		if (userAgent != null && userAgent.length() >= 4) {
    			String prefix = userAgent.substring(0, 4).toLowerCase();
    			if (mobileUserAgentPrefixes.contains(prefix)) {
    				return LiteDevice.MOBILE_INSTANCE;
    			}
    		}
    		// Accept-header based detection
    		String accept = request.getHeader("Accept");
    		if (accept != null && accept.contains("wap")) {
    			return LiteDevice.MOBILE_INSTANCE;
    		}
    		// UserAgent keyword detection for Mobile and Tablet devices
    		if (userAgent != null) {
    			userAgent = userAgent.toLowerCase();
    			// Android special case 
    			if (userAgent.contains("android") && !userAgent.contains("mobile")) {
    				return LiteDevice.TABLET_INSTANCE;
    			}
    			// Kindle Fire special case 
    			if (userAgent.contains("silk") && !userAgent.contains("mobile")) {
    				return LiteDevice.TABLET_INSTANCE;
    			}
    			for (String keyword : tabletUserAgentKeywords) {
    				if (userAgent.contains(keyword)) {
    					return LiteDevice.TABLET_INSTANCE;
    				}
    			}
    			for (String keyword : mobileUserAgentKeywords) {
    				if (userAgent.contains(keyword)) {
    					return LiteDevice.MOBILE_INSTANCE;
    				}
    			}
    		}
    		// OperaMini special case
    		@SuppressWarnings("rawtypes")
    		Enumeration headers = request.getHeaderNames();
    		while (headers.hasMoreElements()) {
    			String header = (String) headers.nextElement();
    			if (header.contains("OperaMini")) {
    				return LiteDevice.MOBILE_INSTANCE;
    			}
    		}
    		return resolveFallback(request);
    	}
    
    	// subclassing hooks
    
    	/**
    	 * List of user agent prefixes that identify mobile devices.
    	 * Used primarily to match by operator or handset manufacturer.
    	 */
    	protected List<String> getMobileUserAgentPrefixes() {
    		return mobileUserAgentPrefixes;
    	}
    
    	/**
    	 * List of user agent keywords that identify mobile devices.
    	 * Used primarily to match by mobile platform or operating system.
    	 */
    	protected List<String> getMobileUserAgentKeywords() {
    		return mobileUserAgentKeywords;
    	}
    
    	/**
    	 * List of user agent keywords that identify tablet devices.
    	 * Used primarily to match by tablet platform or operating system.
    	 */
    	protected List<String> getTabletUserAgentKeywords() {
    		return tabletUserAgentKeywords;
    	}
    
    	/**
    	 * List of user agent keywords that identify normal devices.
    	 * Any items in this list take precedence over the mobile and
    	 * tablet user agent keywords, effectively overriding those. 
    	 */
    	protected List<String> getNormalUserAgentKeywords() {
    		return normalUserAgentKeywords;
    	}
    
    	/**
    	 * Initialize this device resolver implementation.
    	 * Registers the known set of device signature strings.
    	 * Subclasses may override to register additional strings.
    	 */
    	protected void init() {
    		getMobileUserAgentPrefixes().addAll(Arrays.asList(KNOWN_MOBILE_USER_AGENT_PREFIXES));
    		getMobileUserAgentKeywords().addAll(Arrays.asList(KNOWN_MOBILE_USER_AGENT_KEYWORDS));
    		getTabletUserAgentKeywords().addAll(Arrays.asList(KNOWN_TABLET_USER_AGENT_KEYWORDS));
    	}
    
    	/**
    	 * Fallback called if no mobile device is matched by this resolver.
    	 * The default implementation of this method returns a "normal" {@link Device} that is neither mobile or a tablet.
    	 * Subclasses may override to try additional mobile or tablet device matching before falling back to a "normal" device.
    	 */
    	protected Device resolveFallback(HttpServletRequest request) {
    		return LiteDevice.NORMAL_INSTANCE;
    	}
    
    	// internal helpers
    
    	private static final String[] KNOWN_MOBILE_USER_AGENT_PREFIXES = new String[] { "w3c ", "w3c-", "acs-", "alav",
    			"alca", "amoi", "audi", "avan", "benq", "bird", "blac", "blaz", "brew", "cell", "cldc", "cmd-", "dang",
    			"doco", "eric", "hipt", "htc_", "inno", "ipaq", "ipod", "jigs", "kddi", "keji", "leno", "lg-c", "lg-d",
    			"lg-g", "lge-", "lg/u", "maui", "maxo", "midp", "mits", "mmef", "mobi", "mot-", "moto", "mwbp", "nec-",
    			"newt", "noki", "palm", "pana", "pant", "phil", "play", "port", "prox", "qwap", "sage", "sams", "sany",
    			"sch-", "sec-", "send", "seri", "sgh-", "shar", "sie-", "siem", "smal", "smar", "sony", "sph-", "symb",
    			"t-mo", "teli", "tim-", "tosh", "tsm-", "upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi", "wapp",
    			"wapr", "webc", "winw", "winw", "xda ", "xda-" };
    
    	private static final String[] KNOWN_MOBILE_USER_AGENT_KEYWORDS = new String[] { "blackberry", "webos", "ipod",
    			"lge vx", "midp", "maemo", "mmp", "mobile", "netfront", "hiptop", "nintendo DS", "novarra", "openweb",
    			"opera mobi", "opera mini", "palm", "psp", "phone", "smartphone", "symbian", "up.browser", "up.link",
    			"wap", "windows ce" };
    
    	private static final String[] KNOWN_TABLET_USER_AGENT_KEYWORDS = new String[] { "ipad", "playbook", "hp-tablet",
    			"kindle" };
    
    }



    展开全文
  • SEO如何识别垃圾链? 首先,我们必须弄清楚什么垃圾链。根据官方声明:“垃圾链意味着指向目标的网站没有推荐意义,并且不是网站故意制作的超链接。”包括垃圾链不仅限于:搜索结果页面发布的链接,网站管理员服务...

    SEO如何识别垃圾链?

    首先,我们必须弄清楚什么是垃圾链。根据官方声明:“垃圾链意味着指向目标的网站没有推荐意义,并且不是网站故意制作的超链接。”
    包括垃圾链不仅限于:搜索结果页面发布的链接,网站管理员服务类、信息类型网站自动生成链接,一些垃圾作弊网站自动收集并生成链接。
    目前,这种外部链中超过98%的链接可以被搜索引擎识别并在计算中自动过滤掉,而且通常对链接所指向的网站没有直接的负面影响来减少重量或排名。实际上,搜索引擎确定外部链是否是一个问题。外链有两个原则:是否是用户或其他网站的真实推荐;以及是否是特定的高质量推荐。
    那么如何判断实际的实际垃圾链呢?
    SEO外链
    1、链外垃圾通常出现在论坛、博客、微博、企业供求信息、视频网站等,反复出现。这些链接毫无意义。我相信大家经常在论坛上看到这样一个链条,小编不会截取截图。
    2、使用专门的工具,如贴纸、顶级机,自动注释,生成链接,小编这样的链接想要对你的网站影响是不大的。
    3、页面标题和文章描述与页面输出的链接不匹配。许多网站管理员喜欢在一些高权重的网站论坛上写下企业网站的链接,但这些企业网站的标题关键字不在发布的论坛网站的行业主题中,并且它们与页面标题描述不匹配。从官方数据机制来看,这种类型的链接也是垃圾链,因为在搜索引擎排名机制中,无关的外链对其网站的权重投票影响很小。
    一般来说,无关的友情链接也会被视为垃圾链,这对小编来说也很难理解。但是,由于搜索引擎已经说过这一点,所以只能谨慎行事。这就是为什么主要新闻稿不再脱离链条!
    不管小编怎么想,只要它不是一个被作弊所玷污的黑链,那么搜索引擎就不会影响你的网站。退一步并获得更多链接也可以增加您的流量。

    转载于:https://blog.51cto.com/13963381/2175564

    展开全文
  • 很多人都想实现这样一个功能:在电脑上输入域名访问的是PC端的网站,而在手机或者平板电脑等移动设备上输入域名是访问的一个手机网站,而且PC端网站和手机移动端的网站是不一样的,当然手机移动端的网站是简化的,和...

    639b002ad40957a4d23a63d383469459.gif

    随着移动互联网时代的到来,相信很多站长都在想办法把自己的网站做成手机与电脑通用的网站,如何让网站自动识别手机端与PC端是各位站长一直困惑的问题。

    de8259b693067cd219e04caa791dba86.png

    很多人都想实现这样一个功能:在电脑上输入域名访问的是PC端的网站,而在手机或者平板电脑等移动设备上输入域名是访问的一个手机网站,而且PC端网站和手机移动端的网站是不一样的,当然手机移动端的网站是简化的,和微信的微网站一样的,很简洁的。

    比如:我的网站已经建好了,现在又建了一个手机网站,怎么才能访问同一个域名下让网站自动识别设备,比方说用电脑上进入官网,用移动设备自动进入手机站点,这样就实现了,手机网站和PC网站使用同一个域名,不同的设备访问的时候,看到的是各自的网站。

    1、在网站head标签里加跳转语句

    要实现网站根据访问设备自动识别展示手机站或PC站这个功能,需要以下几个步骤:

    (1)、你得有一个PC端,在电脑上访问的官方网站,比如:www.mahaixiang.cn。

    (2)、你需要重新制作一个移动端的手机网站(具体可查看马海祥博客《手机网站制作的常用方法及优化技巧》的相关介绍),比如:m.mahaixiang.cn。

    (3)、在PC端的网站上加上一段代码,每个页面都需要加上,放在PC端网站head标签里面,代码如下:

    //平台、设备和操作系统
    var system = {
    win: false,
    mac: false,
    xll: false
    };
    //检测平台
    var p = navigator.platform;
    system.win = p.indexOf(“Win”) == 0;
    system.mac = p.indexOf(“Mac”) == 0;
    system.x11 = (p == “X11″) || (p.indexOf(“Linux”) == 0);
    //跳转语句
    if (!(system.win || system.mac || system.xll)) {//转向电脑界面
    window.location.href = “http://m.mahaixiang.cn”;
    }

    (4)、进入域名解析系统,做一个别名cname解析,比如:你手机网站制作公司给的地址123.域名.com解析到m.mahaixiang.cn域名解析系统。

    2、根据移动终端和浏览器版本信息判定的语法

    还有一些站长或SEO可能会考虑到移动终端的版本和浏览器版本信息,对此,马海祥也为大家整理了一段比较有效的代码,如下所示:

    3、自动识别手机页面、iPad页面和wap页面

    可以根据不同的终端类型适当的改变正则表达式,这段代码添加到需要识别的网页,会根据客户端的类型自动跳转到手机页、平板页或其他移动设备页面,非常的灵活!

    4、使用PHP语言来识别

    对于一些精通PHP语言的博友来说,也可以通过PHP语法来实现,比如以下的写法:

    //设定Mobile的定义
    $mobileAgent = array("iphone", "ipod", "ipad", "android", "mobile", "blackberry", "webos", "incognito", "webmate", "bada", "nokia", "lg", "ucweb", "skyfire");
    //读取用户的浏览器资料
    $browser = $_SERVER['HTTP_USER_AGENT'];
    $isMobile = false;
    //检查开始
    foreach($mobileAgent as $search){
        if(stristr($browser,$search)!=false){
            $isMobile = true;
            //echo $search;
            //程式码(转址)
            header("Location: http://www.mahaixiang.cn/m/index.html");
            //停止运行程序
            exit;
        }
    }
    ?>

    5、做个自动识别的效果

    经过多次测试,我们也可以做个自动识别的效果,方法很简单,在你需要自动跳转的页面加入以下代码:

    6、自动识别移动端适配跳转网址的代码

    手机版的网站需要简单,以文字为主,才能很好的兼容,可以在网站的首页设置一个程序来判断用户是手机端还是电脑,如果是手机端,直接中转到手机端,如果是电脑端,直接中转到电脑端(大家也可以使用百度提高的百度移动搜索开放适配服务,具体可查看马海祥博客《百度移动搜索开放适配服务的3种方法》的相关介绍)。

    对此,大家可以在网站的首页插入入下代码:

    在马海祥看来,PC版网页自动识别手机客户端并跳转,用js进行判断是否手机客户端进行跳转最好,特别是静态网页,把这个过程通过js的方式放在用户客户端执行,可以大大减少服务器端额外处理的压力,但是有时需要通过在服务器端进行判断的情况除外。

    马海祥博客点评:

    随着移动互联网的降临,移动网站已经一发不可收拾,PC端和移动端官网并存也逐渐成为一大趋势,提前为自己的网站设置好自动识别,无论是从SEO的角度或者用户体验的角度,都有很大的好处。

    d4ac7905a1040a6aa9b8099eac283f4d.gif 如何从用户需求的角度优化移动端网页 移动端页面开发过程中经常碰到的一些问题 PC网站自动适配手机网页的方法技巧● 移动端界面设计的8个优化要点 移动端制作手机版专题页面的优化要点

    5edab95bc172363a89693d99352e34fe.png

    展开全文
  • 很多人都想实现这样一个功能:在电脑上输入域名访问的是PC端的网站,而在手机或者平板电脑等移动设备上输入域名是访问的一个手机网站,而且PC端网站和手机移动端的网站是不一样的,当然手机移动端的网站是简化的,和...

    050ee70a24f5ad59fd5d024e8017274f.gif

    随着移动互联网时代的到来,相信很多站长都在想办法把自己的网站做成手机与电脑通用的网站,如何让网站自动识别手机端与PC端是各位站长一直困惑的问题。

    37f5404cc4e4a87f28b7a25a79c4bde7.png

    很多人都想实现这样一个功能:在电脑上输入域名访问的是PC端的网站,而在手机或者平板电脑等移动设备上输入域名是访问的一个手机网站,而且PC端网站和手机移动端的网站是不一样的,当然手机移动端的网站是简化的,和微信的微网站一样的,很简洁的。

    比如:我的网站已经建好了,现在又建了一个手机网站,怎么才能访问同一个域名下让网站自动识别设备,比方说用电脑上进入官网,用移动设备自动进入手机站点,这样就实现了,手机网站和PC网站使用同一个域名,不同的设备访问的时候,看到的是各自的网站。

    1、在网站head标签里加跳转语句

    要实现网站根据访问设备自动识别展示手机站或PC站这个功能,需要以下几个步骤:

    (1)、你得有一个PC端,在电脑上访问的官方网站,比如:www.mahaixiang.cn。

    (2)、你需要重新制作一个移动端的手机网站(具体可查看马海祥博客《手机网站制作的常用方法及优化技巧》的相关介绍),比如:m.mahaixiang.cn。

    (3)、在PC端的网站上加上一段代码,每个页面都需要加上,放在PC端网站head标签里面,代码如下:

    //平台、设备和操作系统
    var system = {
    win: false,
    mac: false,
    xll: false
    };
    //检测平台
    var p = navigator.platform;
    system.win = p.indexOf(“Win”) == 0;
    system.mac = p.indexOf(“Mac”) == 0;
    system.x11 = (p == “X11″) || (p.indexOf(“Linux”) == 0);
    //跳转语句
    if (!(system.win || system.mac || system.xll)) {//转向电脑界面
    window.location.href = “http://m.mahaixiang.cn”;
    }

    (4)、进入域名解析系统,做一个别名cname解析,比如:你手机网站制作公司给的地址123.域名.com解析到m.mahaixiang.cn域名解析系统。

    2、根据移动终端和浏览器版本信息判定的语法

    还有一些站长或SEO可能会考虑到移动终端的版本和浏览器版本信息,对此,马海祥也为大家整理了一段比较有效的代码,如下所示:

    3、自动识别手机页面、iPad页面和wap页面

    可以根据不同的终端类型适当的改变正则表达式,这段代码添加到需要识别的网页,会根据客户端的类型自动跳转到手机页、平板页或其他移动设备页面,非常的灵活!

    4、使用PHP语言来识别

    对于一些精通PHP语言的博友来说,也可以通过PHP语法来实现,比如以下的写法:

    //设定Mobile的定义
    $mobileAgent = array("iphone", "ipod", "ipad", "android", "mobile", "blackberry", "webos", "incognito", "webmate", "bada", "nokia", "lg", "ucweb", "skyfire");
    //读取用户的浏览器资料
    $browser = $_SERVER['HTTP_USER_AGENT'];
    $isMobile = false;
    //检查开始
    foreach($mobileAgent as $search){
        if(stristr($browser,$search)!=false){
            $isMobile = true;
            //echo $search;
            //程式码(转址)
            header("Location: http://www.mahaixiang.cn/m/index.html");
            //停止运行程序
            exit;
        }
    }
    ?>

    5、做个自动识别的效果

    经过多次测试,我们也可以做个自动识别的效果,方法很简单,在你需要自动跳转的页面加入以下代码:

    6、自动识别移动端适配跳转网址的代码

    手机版的网站需要简单,以文字为主,才能很好的兼容,可以在网站的首页设置一个程序来判断用户是手机端还是电脑,如果是手机端,直接中转到手机端,如果是电脑端,直接中转到电脑端(大家也可以使用百度提高的百度移动搜索开放适配服务,具体可查看马海祥博客《百度移动搜索开放适配服务的3种方法》的相关介绍)。

    对此,大家可以在网站的首页插入入下代码:

    在马海祥看来,PC版网页自动识别手机客户端并跳转,用js进行判断是否手机客户端进行跳转最好,特别是静态网页,把这个过程通过js的方式放在用户客户端执行,可以大大减少服务器端额外处理的压力,但是有时需要通过在服务器端进行判断的情况除外。

    马海祥博客点评:

    随着移动互联网的降临,移动网站已经一发不可收拾,PC端和移动端官网并存也逐渐成为一大趋势,提前为自己的网站设置好自动识别,无论是从SEO的角度或者用户体验的角度,都有很大的好处。

    d43b8e9b86af19001fdd1b8a8671887e.gif 如何从用户需求的角度优化移动端网页 移动端页面开发过程中经常碰到的一些问题 PC网站自动适配手机网页的方法技巧● 移动端界面设计的8个优化要点 移动端制作手机版专题页面的优化要点

    5419aa7f16fcbec86a265fd64bc17b4c.png

    展开全文
  • 由Web Service和其相关网站接收客户端上传的需要识别的证件图片,客户端可以PC的客户端程序,可以PC的浏览器、手机或其他便携式设备。当Web Service接收到图片后将其转发给调度服务器上的任务调度程序,由任务...
  • 实际上:这种二维码指向的某个页面,而该页面写了识别设备并跳转对应链接的脚本,从而实现了一个二维码兼容各平台 有个叫二逼二维码的网站 二逼二维码:将苹果应用,安卓应用合成一个下载二维码 ,生成一个二维码的...
  • 因此,如何识别用户访问网站设备,并且自动跳转到对应的站点呢? navigator.userAgent navigatorJavaScript中的一个独立的对象,用于提供用户所使用的浏览器以及操作系统等信息,以navigator对象属性的形式来...
  • 如果要增加网站流量,优化网站的搜索引擎排名至关重要。...我们将讨论您可能会遇到的最常见的技术SEO问题以及如何解决它们。继续阅读!解决13大技术SEO问题-成都云思禾网络运营优化您的网站涉及许多复杂的过程。在甚...
  • 如何判断访客是否移动设备访问,自动跳转到wap页面 ? 手机自动跳转到手机页面,一个网址区分普通访问与手机访问 ? 手机访问网站域名时如果实现自动跳转到wap页面 ? 本文就可以解决这些问题! <script type="text...
  • 该诉状已提交至北加州地方法院,称Google通过Google Analytics、Google Ad Manager和各种其他应用程序和网站插件,例如移动设备上的Google应用程序和网站的Google登录按钮,跟踪用户的浏览数据和其他识别信息。...
  • 传统的网站如何完成向移动设备的快速转型? 通过移动适配技术可以实现,移动适配主要通过底层的web技术开发手段来完成,下面切图网将从技术角度来告诉你通过7个步骤来完成一个PC网站向移动设备的跳跃! 1允许网页...
  • 如今的组织正在收集来自各种来源的日益增长的信息量,包括网站、企业应用程序、社交媒体、移动设备以及日益增加的物联网(IoT)。 最大的问题如何从这些信息中获得真正的商业价值?数据挖掘可以在很大程度上做出...
  • 2010年,EthanMarcotte提出了"自适应网页设计"(ResponsiveWebDesign)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计,自适应为了解决如何才能在不同大小的设备上呈现同样的网页,很多网站的解决...
  • "自适应网页设计"的概念2010年,Ethan Marcotte提出了"自适应网页设计"(Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计,自适应为了解决如何才能在不同大小的设备上呈现...
  • "自适应网页设计"的概念2010年,Ethan Marcotte提出了"自适应网页设计"(Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计,自适应为了解决如何才能在不同大小的设备上呈现...
  • 现在很多网站有了PC端和H5站点的,因为这样就可以根据客户设备的不同,显示出体验更好的,不同的页面了。 这样的需求有人说拿自适应就可以搞定,比如我们常说的bootstrap和24格布局法,这些确实非常好的方案...
  • 这里有一个问题,如果客户直接拿手机打开我的主域名,我该如何做出判断然后跳转到手机网站呢?以下两个函数就可以做到这一点。以下我正在用的函数,不过好像在iphone上有点问题,如果你有更好的解决方案,可以留言...
  • IP地址既可以识别计算机,又可以对计算机进行寻址。在这方面,它类似于物理地址。公司还使用IP地址来对其网络流量进行地理定位,这有助于企业确定访问其网站的用户所在的位置。你可能听说过有不同类型的IP地址可供...
  • 很多时候也可以通过逻辑程序来进行判断,如PHP、JS常用的两种识别访问设备类型的常用方法。 原理都采用识别访问客户端的HTTP_USER_AGENT,然后进行关键字匹配进行确定设备类型,对于伪造HTTP头的就区分不出来了...
  • 一、什么样的网站适合做自适应 自适应网页设计(Responsive Web Design)指可以自动识别终端设备屏幕的大小从而做出相应调整的网页设计方法。这种网页设计方法完美解决了如何在不同大小的网络设备上呈现同样的网页...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 183
精华内容 73
关键字:

网站是如何识别设备的