You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置网站仅允许EDGE和SAFARI浏览器访问?

仅允许Edge和Safari浏览器访问网站的实现方案

前端JavaScript检测(基础拦截)

这种方式属于客户端侧的初步筛选,虽可被技术用户绕过,但能阻挡大部分普通非授权访问。核心逻辑是解析浏览器的User-Agent字符串,识别目标浏览器:

const userAgent = navigator.userAgent;
// 匹配Edge(含Chromium版)和Safari
const isEdge = /Edg/i.test(userAgent) || /Edge/i.test(userAgent);
// Safari的UA含Safari字段,但Chrome也会包含,需排除Chrome和Edge
const isSafari = /Safari/i.test(userAgent) && !/Chrome/i.test(userAgent) && !/Edg/i.test(userAgent);

if (!isEdge && !isSafari) {
    document.body.innerHTML = `
        <div style="text-align:center; padding:50px; font-family:Arial;">
            <h2>抱歉,本网站仅支持Edge和Safari浏览器访问</h2>
            <p>请切换至Edge或Safari浏览器打开页面</p>
        </div>
    `;
}

后端语言检测(更可靠)

后端直接读取请求头中的User-Agent进行判断,不会被前端篡改,安全性更高。

PHP示例

<?php
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$isEdge = preg_match('/Edg/i', $userAgent) || preg_match('/Edge/i', $userAgent);
$isSafari = preg_match('/Safari/i', $userAgent) && !preg_match('/Chrome/i', $userAgent) && !preg_match('/Edg/i', $userAgent);

if (!$isEdge && !$isSafari) {
    http_response_code(403);
    echo '<h2>抱歉,本网站仅支持Edge和Safari浏览器访问</h2>';
    exit;
}
?>

Node.js(Express框架)示例

const express = require('express');
const app = express();

// 全局中间件检测浏览器
app.use((req, res, next) => {
    const userAgent = req.get('User-Agent');
    const isEdge = /Edg/i.test(userAgent) || /Edge/i.test(userAgent);
    const isSafari = /Safari/i.test(userAgent) && !/Chrome/i.test(userAgent) && !/Edg/i.test(userAgent);

    if (!isEdge && !isSafari) {
        res.status(403).send('<h2>抱歉,本网站仅支持Edge和Safari浏览器访问</h2>');
        return;
    }
    next();
});

// 业务路由示例
app.get('/', (req, res) => {
    res.send('欢迎访问!');
});

app.listen(3000, () => {
    console.log('服务器运行在端口3000');
});

服务器层面拦截(最高效)

直接在Web服务器配置中过滤请求,无需经过应用程序处理,性能最优。

Nginx配置

在网站的server或location配置块中添加:

# 先排除Chrome(UA含Safari但属于非目标浏览器)
if ($http_user_agent ~* "Chrome") {
    return 403;
}
# 仅允许Edge和Safari浏览器
if ($http_user_agent !~* "(Edg|Edge|Safari)") {
    return 403;
}

Apache配置

在.htaccess或虚拟主机配置中添加:

RewriteEngine On
# 排除Chrome浏览器
RewriteCond %{HTTP_USER_AGENT} Chrome [NC]
RewriteRule ^ - [R=403,L]
# 拦截所有非Edge/Safari的请求
RewriteCond %{HTTP_USER_AGENT} !(Edg|Edge|Safari) [NC]
RewriteRule ^ - [R=403,L]

注意事项

  • User-Agent字符串可被伪造,无法实现100%拦截技术型用户,但足以满足绝大多数场景需求。
  • 优先选择后端或服务器层面的检测方案,安全性和可靠性远高于前端检测。

内容的提问来源于stack exchange,提问作者High Chief

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:30:43