HTTP請求中的User-Agent 判斷瀏覽器類型的各種方法 網絡爬蟲的請求標示


當用戶發送一個http請求的時候,瀏覽的的版本信息也包含在了http請求信息中:

 

如上圖所示,請求 google plus 請求頭就包含了用戶的瀏覽器信息:

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36

我們可以通過服務器端語言提供的相關API獲取客戶端的瀏覽器信息,進而對不同的瀏覽器返回不同的html文檔,這樣就可以針對現代瀏覽器返回絢麗的展示頁面了。

而在Javascript中我們也提供了相關的API獲取當前瀏覽器的信息:
navigator.userAgent

userAgent中提供給了瀏覽器將要發送給服務器端的http請求頭中user-agent的信息。獲取到這個信息之后我們可以通過正則匹配獲取到瀏覽器和版本信息:

//獲取瀏覽器發送的userAgent信息   var userAgentInfo = navigator.userAgent.toLowerCase();
document.write(userAgentInfo + '<br />');
/** * 輸出運行的瀏覽器信息: * Chrome: mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/27.0.1453.94 safari/537.36 * IE10: mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/27.0.1453.94 safari/537.36 */// 通過正則匹配獲取瀏覽類型和版本// 例如可以這樣獲取IE的var agent = {};
if (window.ActiveXObject)
    agent.ie = userAgentInfo.match(/msie ([\d.]+)/)[1];
// 下面就輸出信息if(agent.ie)
    document.write(agent.ie);  // IE瀏覽器下輸出瀏覽下版本號,其他瀏覽器沒有輸出信息
在PHP中也提供了相關的API:
 
strpos() 函數返回字符串在另一個字符串中第一次出現的位置。
如果沒有找到該字符串,則返回 false。
$_SERVER 中存放着很多服務器的變量,其中$_SERVER['HTTP_USER_AGENT'] #當前請求的 User_Agent: 頭部的內容。

可以像下面這樣判斷請求者的瀏覽器和版本,注意,這里的版本可以是訪問者偽造的,不一定正確。

<?php
    if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE8.0"))
        echo"IE8.0";
    elseif(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE7.0"))
        echo"IE7.0";
    elseif(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE6.0"))
        echo"IE6.0";
    elseif(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/17"))
        echo"Firefox17";
    elseif(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/16"))
        echo"Firefox16";
    elseif(strpos($_SERVER["HTTP_USER_AGENT"],"Chrome"))
        echo"Chrome";
    elseif(strpos($_SERVER["HTTP_USER_AGENT"],"Safari"))
        echo"Safari";
    elseif(strpos($_SERVER["HTTP_USER_AGENT"],"Opera"))
        echo"Opera";
    else echo$_SERVER["HTTP_USER_AGENT"];
?>

條件注釋最初於微軟的 Internet Explorer 5瀏覽器中出現,並且直至 Internet Explorer 9 均支持。[1]微軟已宣布於 Internet Explorer 10 中以標准模式處理頁面 - 如 HTML5 - 時停止支持,但是舊版網頁使用這種技術(於兼容性視圖)將繼續有效。

<!--[if !IE]><!--> 除IE外都可識別 <!--<![endif]-->
<!--[if IE]> 所有的IE可識別 <![endif]-->
<!--[if IE 6]> 僅IE6可識別 <![endif]-->
<!--[if lt IE 6]> IE6以下版本可識別 <![endif]-->
<!--[if gte IE 6]> IE6以及IE6以上版本可識別 <![endif]-->
<!--[if IE 7]> 僅IE7可識別 <![endif]-->
<!--[if lt IE 7]> IE7以下版本可識別 <![endif]-->
<!--[if gte IE 7]> IE7以及IE7以上版本可識別 <![endif]-->
<!--[if IE 8]> 僅IE8可識別 <![endif]--><!--[if IE 9]> 僅IE9可識別 <![endif]-->
網絡爬蟲的爬取問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM