很早以前见过手机上用百度时出现自动转码后的页面,在2G网络的非智能手机时代还有些用,但我个人用得不太多就没有很留意。昨天晚上家中发现很多小虫,用三星平板电脑Samsung Galaxy Tab P1000查找原因和解决办法,这台Android 2.2平板电脑上预置了百度的搜索框,我进行了很多次搜索,发现百度将很多网站(包括新闻搜索中找到的新闻网站)都进行了转码,这个对于普通浏览者来说确实提供了方便,不过对于网站拥有者来说,无法展示广告、无法控制显示,成了为百度免费提供纯内容的服务商了。:-(
前段时间,我试用“百度移动开放平台”的“移动建站管理系统”,很方便可以搭建手机网站,可以通过嵌入代码来一定程度上控制显示,不过也无法显示广告,就没有多管,后来自行添加了一些手机版网站。百度这个系统有一个后台,可以显示流量情况,我看名录集网站的(百度平台生成的)手机版手机访问量每天有50,000左右,而通过百度搜索进入我们原网站的只有1,000左右,也就是百度“拦截”了我们每天五万的流量,而浏览者继续点击“查看原网页”的比例只有2%左右,这也太坑爹了吧 :-(
我马上把在百度移动建站管理系统中的所有站点全部删除了,但在百度的手机搜索中依然还在转码,我查看了百度提供的“转码声明”,其中说到有三个解决方案可以用于禁止转发:
A. no-transform协议
TC支持的no-transform协议为如下两种形式:
a. HTTP Response中显式声明Cache-control为no-transform。
b. meta标签中显式声明Cache-control为no-tranform,格式为:
<head>
<meta http-equiv="Cache-Control" content="no-transform " />
</head>
如第三方站点不希望页面被转码,可添加此协议,当用户进入第三方网站时,先进入中间提示页,页面将引导用户自主选择跳转至原网页。
B. handheld协议
页面通过<link>标签显式指定WAP网页,声明格式如下:
<link rel="alternate" type="application/vnd.wap.xhtml+xml" media="handheld" href="target"/>
如第三方站点不希望页面被转码,可添加此协议,告知我们原网页对应有一个WAP版页面,当用户进入第三方网站时,先进入中间提示页,让用户自主选择跳转至原网页或第三方网站自有的wap页面。
C. User-Agent相关
TC抓取页面时,使用的User-Agent为:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; baidu Transcoder;)
如第三方站点不希望转码HTML页面,且又可以提供对应的自有WAP页面,则可以根据这个User-Agent,返回自有WAP页,同时在HTTP Response显示声明:Content-Type为:vnd.wap.xhtml+xml,那么TC将不对这个页面转码,而是直接跳转至相应的自有WAP页面。
我决定能采用的尽量采用,把以前的手机版再修改一轮,禁止自动转码,而给浏览者提供我们自己的手机版。这个工作量还很有一些,要逐个站点去修改。
评论13
安装User Agent Switcher来模拟百度转码
上周采用了百度转码声明中的办法A和B来禁止转码,倒是可以禁止成功,可百度手机搜索给出的结果是一个所谓“中间页”,提示浏览者:
一般浏览者也不懂啥转码,很多都是返回上一页去了,我们其实在页面中指出了手机版网址,可百度还是要造这个中间页来截留用户,真是太...了
我们只有设法采用办法C来进行识别和跳转,今天花了好些时间,下载了一个User Agent Switcher,安装到FireFox中,来模拟百度转码的User Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; baidu Transcoder;),再反复设置Apache ReWrite规则,总算是可以设置好了,已经可以识别、跳转了,但并没有“显示声明:Content-Type为:vnd.wap.xhtml+xml”,因为我们现在做的都是适合智能手机的站点,不算是以前的那种wap网站。
目前测试站点通过,准备实施到更多站点中去。
不声明 Content-Type 为 vnd.wap
不声明 Content-Type 为 vnd.wap.xhtml+xml 那是如何做的?百度转码不是在它自己的服务器上做的吗?我们是跳过了百度转码,提供自己的手机版网站
在我们自己的手机版网站中Content-Type是什么就是什么(我们用的drupal的mobile theme提供的主题文件,里面有默认规定的Content-Type),不用管是不是vnd.wap.xhtml+xml,我们是通过上面说的办法C来让手机用户 及百度手机蜘蛛直接跳转到我们提供的手机版上,也就是不用百度转码的内容了。
大哥,具体怎么操作的能教教吗
大哥,具体怎么操作的能教教吗,方法c,直接robot禁止 baidu Transcoder来爬行吗我们的办法就是做自己独立的手机版网站
我们的办法就是做自己独立的手机版网站,然后在apache服务器上判断,对来自baidu转码的蜘蛛就自动重定向到我们自己的手机版网站上,符合百度提供的办法C的规范。
用robots.txt来禁止baidu Transcoder不合适,那样的话,自己做的手机版网站也不会被爬取了。
请问iis中如何去判断user-agent去跳转呢
请问iis中如何去判断user-agent去跳转呢?是要自己写一个index.php设置为默认首页去判断吗?我还没在IIS中设置过,我们都是用的Linux服务器
我还没在IIS中设置过,我们都是用的Linux服务器,Web服务是Apache。估计是在Web服务器中设置,不涉及到PHP程序。这个IIS的设置还得你自己在网上查一查、自己试一试。
微博 手机版 浏览 分享地址 怎样跳过转码
我们的http地址和普通的链接从新浪微博分享后 打开使用手机版 浏览都会被转码,但有些链接却可以直接跳过转码,不知道怎么实现的。是否转码应该与链接放置的地方无关
应该只与自己网站在服务器上的设置有关,与链接放在什么地方(例如微博的手机版或者电脑版)无关。另外,你说的我也没有完全明白,如果必要可以说几个典型例子和详细情况看看。
您能详细讲一下方法c么?
我也是apache请看我另外一篇博文《网站自动判断浏览者所用终端设备,手机用户重定向到手机版》
请看我另外一篇博文《网站自动判断浏览者所用终端设备,手机用户重定向到手机版》
使用了这个方法 还是会显示 该页面不允许进行转码
使用了这个方法 还是会显示 该页面不允许进行转码,您可直接查看原网页, 是怎么回事呢? 直接访问网址是可以跳转的 但是在百度搜索里面不行您对百度的蜘蛛(baidu Transcoder
您对百度的蜘蛛(baidu Transcoder)也进行了判断跳转吗?我增加了对这个user-agent的判断后就好了