首页 > 解决方案 > 如何让我的网站仅在特定浏览器上打开

问题描述

我希望我的网站只能在这些选定的浏览器(Chrome、FireFox、Safari、Opera 和 Edge)中打开。无法弄清楚我是如何做到的,因为 userAgent 为上面提到的台式机或笔记本电脑的每个浏览器提供了这些字符串

Chrome: (Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome /83.0.4103.97 Safari /537.36)

FireFox: (Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0)

Safari: (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome /83.0.4103.97 Safari /537.36)

Opera: (Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome /81.0.4044.138 Safari /537.36 OPR/68.0.3618.125)

Edge: (Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome /83.0.4103.97 Safari /537.36 Edg/83.0.478.45)

其中 4 个的共同点是ChromeSafari关键字接受 FireFox,但 Android 上的 FireFox 在 userAgent 字符串中显示 Safari 关键字,要查看所有这些浏览器的 userAgents 字符串,请转到此链接https://www.whatismybrowser.com/guides /the-latest-user-agent/可能会有更好的主意。

现在 navigator.userAgent.search / .match / indexOf 这些方法中的任何一个或导航器中的任何其他方法都不会给出浏览器的可靠或唯一标识(无论是台式机、笔记本电脑还是移动设备)。

所有其他常用的浏览器也显示ChromeSafari关键字,在桌面、标签和移动设备中同时显示或至少其中一个,例如:三星设备 userAgent 字符串显示三星浏览器,但也显示ChromeSafari关键字。

所以请任何人都可以帮助我找出识别浏览器的最佳脚本,并让我的网站https://justfortrial.com仅在上述浏览器上加载。

标签: google-chromefirefoxbrowserbrowser-detection

解决方案


好吧,我想我找到了一种方法来识别任何设备上的五个浏览器(在问题上面提到过)。不知道它是否适用于 Apple 产品,因为我没有。请尝试您的苹果产品,让我知道它是否有效。我不是专业人士,只是在网上学习东西,购买试错方法。因此,如果它在您的 Windows 或手机上不起作用,请告诉我。

`

var userAgentString = window.navigator.userAgent;
var vendor = window.navigator.vendor;
var mobile = /(Mobile)|(Android)/i.test(userAgentString);
var browserCheckList = userAgentString.split(")");  // Splitting the string and creating a list 
var Edge = /Edg(e|A|iOS)?/i;
var Opera = /OPR/i;
var FireFox = /(Firefox)|(FxiOS)/i;
var Safari = /Safari/i;
var Chrome = /(Chrome)|(CriOS)/i;
var BrowserList = [Edge, Opera, FireFox, Safari, Chrome];
var count = 0;

for (var i = 0; i < BrowserList.length; i++) {
    // Checks the regular expressin in the userAgent String
    if (BrowserList[i].test(userAgentString)) {
        if (vendor === "Apple Computer, Inc.") {
            if (BrowserList[i] === Safari) {
                break;
            }
            else {
                count += 1;
                continue;
            }
        }
        else if (vendor === "Google Inc.") {
            // Removes all unwanted characters like (Dot, Forward Slash, Numbers and empty spaces)
            browserCheckList[2] = browserCheckList[2].replace(/\s?[/]?\.?[0-9]?/g, "");
            // When browser opens in desktop/Laptop
            if (!mobile) {
                // Checking for Chrome Browser
                if (BrowserList[i] === Chrome && browserCheckList[2].length === 12) {
                    break;
                }
                // Checking for Edge Browser
                else if (BrowserList[i] === Edge) {
                    break;
                }
                // Checking for Opera Browser
                else if (BrowserList[i] === Opera) {
                    break;
                }
                else {
                    count += 1;
                    continue;
                }
            }
            // When browser opens in Mobiel Phones
            else {
                if (BrowserList[i] === Chrome && browserCheckList[2].length <= 18) {
                    break;
                }
                else if (BrowserList[i] === Edge) {
                    break;
                }
                else if (BrowserList[i] === Opera) {
                    break;
                }
                else {
                    count += 1;
                    continue;
                }
            }
        }
        else if (vendor === "") {
            if (BrowserList[i] === FireFox) {
                break;
            }
            else {
                count += 1;
                continue;
            }
        }
    }
    else {
        count += 1;
        continue;
    }
}
// If none of the five browser is found in the userAgent String
if (count === 5) {
    // Your code here or redirect to Supported Browser HTML Page
    location.href = "supported_browsers.html";
}

` 当然,至少对我来说,它可以在 Windows 上运行。


推荐阅读