2016-02-14 47 views
-5

我想通過分析其HTML代碼來檢查網站是否響應。一個類似的問題已經被問到https://stackoverflow.com/questions/29937745/programmatically-checking-whether-a-website-is-responsive-or-not。它只檢查標籤<meta name="viewport" content="width=device-width">檢查網站是否響應或不使用PHP

但是,如果你檢查的網站如google.com,facebook.com,stackoverflow.com等的源代碼,他們沒有這個「視口」標籤。但他們也很敏感。他們正在改變基於用戶代理的HTML代碼。例如,如果谷歌看到用戶代理是iPhone,它會給出一個不同的HTML代碼,以響應。

那麼我如何檢查這些類型的網站是否響應?

+1

...呃,用不同的用戶代理字符串請求頁面也許? –

+0

好的。然後我會將用戶代理設置爲iPhone。但仍然無法檢查它是否具有響應能力。該代碼沒有元視口標籤 –

+0

假設代碼以這種方式響應,它會大不相同?對這兩者的HTML或者只是CSS的區分應該告訴你。或者,我想你可以使用無頭瀏覽器,並檢查滾動條(可能PHP太多管理)。 –

回答

-1

感謝@Alexander O'Mara的建議。這是一個小竅門。不是100%正確的方式。但爲所有網站工作。

<?php 
    ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9'); 
    $html = file_get_contents("http://php.net/"); 

    ini_set('user_agent', 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7'); 
    $html2 = file_get_contents("http://php.net/"); 

    similar_text(substr($html,0,1000),substr($html2,0,1000), $similariy); 
    echo $similariy."<br>"; 


if($similariy<50) 
     echo "It's responsive"; 
else 
     echo "not responsive"; 
?> 

基本上,它所做的是將HTML代碼作爲電腦和手機進行比較。然後找到相似性。如果相似度較低,那意味着它們正在根據用戶代理改變代碼。當然,這應該做的響應網站

+0

btw。你自己沒有找到這個解決方案,你把Alexander O'Mara在評論中告訴你的代碼塊。 – Shomz

+0

@Shomz好吧,我已添加他的信用。但那不是什麼大不了的事。我知道,甚至在他這樣說之前。我的問題很清楚 –