2015-03-31 93 views
1

我知道瀏覽器最初欺騙了用戶代理以便進行功能檢測。但我想知道他們爲什麼仍然這樣做。我認爲用戶代理欺騙在符合標準的現代時代沒有一席之地;與網絡初期的情況相比,基本上是網絡開發者的瀏覽器必殺技。爲什麼瀏覽器仍然欺騙用戶代理?

有人可能會說,它是爲了向後兼容所有舊代碼。這是唯一的原因嗎?畢竟,我認爲瀏覽器供應商會用這些舊代碼來看待這些網站。這是否正在進行中,還是這些用戶代理剛剛從瀏覽器的更困難的時代中遺忘了遺留物?

此外,目前大多數功能檢測似乎都是用JavaScript完成的,這使得用戶代理的功能檢測用例的一部分變得無關緊要。

回答

0

因爲現在我們有多種可能的用戶代理,如Iphone5s,Galaxy SIII,iPad2等。因爲有時需要以不同的方式處理特定規則的網站功能。

想想場景與用戶的需求看起來像:

  • 該網站應該能夠與客戶只平板電腦聊天。
  • 在移動應該不能,因爲它更小。

因此,由於我們有多個設備,我們有時必須以不同的方式處理,以便爲用戶提供良好的體驗。

+0

這是用戶代理的正常用例,而不是用戶代理欺騙。欺騙的一個例子是,即使Netscape不再存在,用戶代理中仍有多少瀏覽器仍然具有「Mozilla」。 – MJWilliams 2015-04-01 01:34:23

0

我不知道他們這樣做。一些較小的瀏覽器用戶代理可能無法被服務器識別,所以他們宣佈自己是主要的瀏覽器之一,所以他們不會被忽視或被視爲惡意,但否則,你是對的;沒有必要這樣做,主要的沒有。

+0

他們至少在某種程度上這樣做。這是我的MacBook Pro上的Chrome:Mozilla/5.0(Macintosh; Intel Mac OS X 10_9_5)AppleWebKit/537.36(KHTML,如Gecko)Chrome/41.0.2272.89 Safari/537.36'。我不明白爲什麼在用戶代理字符串中應該有「Mozilla」或「KHTML,如Gecko」。 Chrome不是Netscape,也不是在Gecko上運行。 – MJWilliams 2015-04-01 01:35:36

+0

@MJWilliams由於Chrome使用了webkit,現在又增加了一個名爲Blink的webkit分支,但webkit已經開始於基於... Gecko的KHTML。 – Rob 2015-04-01 01:42:22