为什么 Fedora Linux 上的 Midori 会假装是 Mac OS X 上的 Safari?

为什么 Fedora Linux 上的 Midori 会假装是 Mac OS X 上的 Safari?

如果您在 Linux 上使用 Google Chrome,则 User-Agent 请求标头将如下所示:

Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.1 (KHTML,如 Gecko) Chrome/21.0.1180.89 Safari/537.1

从上面我们知道浏览器是 Chrome,操作系统是 Linux(我猜!)。但是当我从浏览器登录时绿使用相同的操作系统 Linux (Fedora) 我可以看到以下情况:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/535+ (KHTML,如 Gecko) Version/5.0 Safari/535.4+ Midori/0.4

为什么说是 Macintosh?

答案1

Midori 设置为时识别为 OS X Safari自动的。 选择绿来覆盖它。

midori/midori-websettings.h

typedef enum
{
    MIDORI_IDENT_MIDORI /* Automatic */,
    MIDORI_IDENT_GENUINE /* Midori */,
    MIDORI_IDENT_SAFARI,
    // etc.
} MidoriIdentity;

midori/midori-websettings.c

switch (identify_as)
{
case MIDORI_IDENT_GENUINE:
    return g_strdup_printf ("Mozilla/5.0 (%s %s) AppleWebKit/%d.%d+ %s",
        platform, os, webcore_major, webcore_minor, appname);
case MIDORI_IDENT_MIDORI:
case MIDORI_IDENT_SAFARI:
    g_object_set (web_settings, "enable-site-specific-quirks", TRUE, NULL);
    return g_strdup_printf ("Mozilla/5.0 (Macintosh; U; Intel Mac OS X; %s) "
        "AppleWebKit/%d+ (KHTML, like Gecko) Version/5.0 Safari/%d.%d+ %s",
        lang, webcore_major, webcore_major, webcore_minor, appname);
// etc.

虽然我没有知道开发人员选择假装成 Safari 的原因,这篇关于两年前用户代理字符串历史的博客文章充斥着早期调整用户代理字符串以欺骗网站功能检测的例子。仅举一个例子:

而Linux的追随者们则非常悲哀,因为他们自己开发了Konqueror,它的引擎是KHTML,他们认为KHTML和Gecko一样好,但它不是Gecko,所以没有得到好的页面,于是Konquerer开始假装“像Gecko”来获得好的页面,并称自己为Mozilla/5.0 (兼容;Konqueror/3.2;FreeBSD) (KHTML,与 Gecko 类似)这引起了很大混乱。

Web 开发人员通常会针对特定浏览器定制网站,为功能较少的浏览器实现回退。Midori 太不为人所知,市场份额太小,因此 Web 开发人员无法专门针对它进行优化。

因此,作为一种解决方法,您的浏览器会假装是 Safari,因为它基于 WebKit 并且行为类似。否则,它可能会在某些网站上获得纯文本的基本设计,而不是它能够提供的现代 HTML5 体验。

由于 Linux 没有 Safari,并且更改默认用户代理字符串会带来无法被识别为可用浏览器的风险,因此他们只能在 Windows 和 Mac OS X 之间进行选择。

支持这一假设,来自 Midori FAQ(data/faq.html当您下载时):

为什么 Google Mail/日历/地图、Facebook 无法使用或显示移动版本?

有些网站歧视您的浏览器。

如果你的 Midori 版本早于 0.3.5,请转到“首选项”>“网络”>“标识为”,然后选择“自定义”。将其粘贴到条目中:

Mozilla/5.0 (X11; Linux) AppleWebKit/531.2+ Midori/0.3

如果这不起作用,请尝试选择 Safari 或 Firefox。

许多其他网站也使用类似的方法来检测浏览器。

相关内容