很早以前見過手機上用百度時出現自動轉碼後的頁面,在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的判斷後就好了