伪404兼容huawei生效显示404

根据上述思考,以下是详细的中文分步说明:

---

**步骤 1:获取目标设备的User-Agent信息**

首先,我们需要收集目标设备的User-Agent字符串,包括:

1. **iPhone设备的User-Agent**:
   ```
   Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1
   ```

2. **安卓设备的User-Agent**:
   ```
   Mozilla/5.0 (Linux; Android 11; Mobile) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.210 Mobile Safari/537.36
   ```

3. **华为鸿蒙设备的User-Agent**:
   ```
   Mozilla/5.0 (Huawei; HWA-AL00; HMA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.210 Mobile Safari/537.36
   ```

**步骤 2:分析User-Agent字符串的特征**

从上述示例中,我们可以总结出不同设备的User-Agent特征:

- **iPhone**:包含“iPhone”关键字。
- **安卓设备**:包含“Android”关键字。
- **华为鸿蒙**:包含“Huawei”或“HMA”关键字。

**步骤 3:修改伪404设置以包括所有目标设备**

根据伪404的实现方式,分别进行以下修改:

* **修改Apache服务器配置(.htaccess文件)**

  假设当前的伪404设置如下:
  ```
  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT} "iPhone|Android" [NC]
  RewriteRule ^ - [L]
  ```

  修改后的设置应包括所有目标设备:
  ```
  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT} "iPhone|Android|Huawei|HMA" [NC]
  RewriteRule ^ - [L]
  ```

  这意味着,当User-Agent包含“iPhone”、“Android”、“Huawei”或“HMA”时,会触发伪404规则。

* **修改Nginx服务器配置**

  如果使用Nginx,假设当前配置如下:
  ```
  location / {
      if ($http_user_agent ~* "iPhone|Android") {
          return 404;
      }
      # 其他配置
  }
  ```

  修改后的配置应包括所有目标设备:
  ```
  location / {
      if ($http_user_agent ~* "iPhone|Android|Huawei|HMA") {
          return 404;
      }
      # 其他配置
  }
  ```

  这样,当User-Agent包含“iPhone”、“Android”、“Huawei”或“HMA”时,会返回404状态。

* **修改服务器端脚本(以PHP为例)**

  如果伪404是通过服务器端脚本实现的,例如:
  ```php
  if (strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false) {
      header('HTTP/1.1 404 Not Found');
      // 展示404页面
  }
  ```

  修改后的条件判断应包括所有目标设备:
  ```php
  $user_agent = $_SERVER['HTTP_USER_AGENT'];
  if (strpos($user_agent, 'iPhone') !== false || strpos($user_agent, 'Android') !== false || strpos($user_agent, 'Huawei') !== false || strpos($user_agent, 'HMA') !== false) {
      header('HTTP/1.1 404 Not Found');
      // 展示404页面
  }
  ```

**步骤 4:测试和验证修改后的伪404设置**

为了确保修改生效,需要进行全面的测试:

1. **多设备测试**:
   - **使用iPhone或安卓设备**访问链接,确认显示伪404页面。
   - **使用华为鸿蒙设备**访问链接,确认也显示伪404页面。

2. **模拟User-Agent测试**:
   - 使用浏览器扩展或工具(如User-Agent Switcher)模拟不同设备的User-Agent,包括华为鸿蒙设备的User-Agent。
   - 确认模拟的User-Agent能够正确触发伪404规则。

3. **查看服务器日志**:
   - 检查服务器日志,确认来自所有目标设备的请求都被正确归类为伪404。
   - 确认没有其他设备误判为伪404。

**步骤 5:持续监控和优化**

完成修改后,应持续监控伪404设置的表现:

1. **用户反馈**:
   - 收集用户的反馈,确认所有目标设备用户都能看到伪404页面。

2. **日志分析**:
   - 定期分析服务器日志,确保所有目标设备都被正确处理,没有遗漏或误判的情况。

3. **更新规则**:
   - 随着设备的更新或新设备的发布,可能需要更新User-Agent判断规则,确保兼容性。

通过以上步骤,可以有效地调整伪404设置,使其在所有目标设备(包括iPhone、安卓设备和华为鸿蒙设备)上正确显示伪404页面,确保所有用户都能获得一致的访问体验。

添加对华为系统的检测并触发伪404页面的详细步骤说明:

### 步骤 1:检测华为系统

在现有的移动设备检测逻辑中,添加对华为系统的检测。华为设备通常会在用户代理字符串中包含“Huawei”或“HONOR”。我们可以修改`andsystem`变量的定义,加入这些关键词的检测。

修改后的代码如下:

```javascript
var andsystem = /Android|Linux|Huawei|HONOR/.test(uagent) ? true : false;
```

### 步骤 2:添加华为系统的关键词检测

在关键词检测部分,添加与华为相关的关键词。例如,添加“华为系统”、“HUAWEI”、“HarmonyOS”等关键词到正则表达式中。

修改后的正则表达式部分如下:

```javascript
if (/Android|webOS|iPhone|iPad|Windows Phone|iPod|BlackBerry|SymbianOS|Nokia|Mobile|华为系统|HUAWEI|HarmonyOS/.test(navigator.userAgent)) {
    // existing logic
}
```

### 步骤 3:在关键词检测中添加华为系统的判断

在检测到移动设备后,进一步判断是否为华为系统,并在满足条件时触发伪404页面。

### 步骤 4:在PC端检测中添加华为系统的判断

### 步骤 5:测试新增功能

在修改代码后,进行测试以确保新增的华为系统检测和伪404触发功能正常工作。可以使用不同的设备和用户代理进行测试,包括华为手机和其他设备,验证是否在预期条件下正确触发伪404页面。

### 总结

代码中添加了对华为系统的检测,并在满足特定条件时触发伪404页面。这将有助于更全面地管理不同设备和系统的访问控制,确保网站资源的合理分配和安全性。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

github配置sshkey

使用命令生成sshkey ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 依此会要求输入以下信息,可以使用默认值 设置保存密钥的路径 设置SSH密钥密码(备注:空内容表示不设置SSH密钥密码) 再次确认SSH密钥密…

深入理解WebSocket接口:如何使用C++实现行情接口

在现代网络应用中,实时数据传输变得越来越重要。通过WebSocket,我们可以建立一个持久连接,让服务器和客户端之间进行双向通信。这种技术不仅可以提供更快的响应速度,还可以减少不必要的网络流量。本文将详细介绍如何使用C来实现We…

FFMPEG编码容错处理解决办法之途径----升级库文件

在qt开发环境下接收网络数据,调用ffmpeg解码播放视频,出现闪屏现象,具体现象可以使用操作系统自带的ffplay播放器播放原始视频流可复现;而使用操作系统自带的mpv播放器播放视频则不会出现闪屏;闪屏时会报Could not fin…

什么是超越编程(逾编程)(元编程?)

超越编程(逾编程)(元编程?)(meta-programming) 目录 1. meta- 的词源 2. 逾编程(meta-programming) 的直实含义 2.1 定义 2.2 说明 3. 翻译成“元编程”应该是一种错误 1. meta- 的词源 这是一个源自希腊语的构词元素,其有三种含义&#xff…

基于Martin的全国基础底图实现

概述 前面有文章基于Martin实现MapboxGL自定义底图分享了Martin的使用,本文使用网络收集的数据实现了全国基础数据的收集和基础底图。 实现后效果 实现 1. 数据准备 实例中包含如下数据: 边界线和九段线数据省边界面数据省会城市点数据市边界面数据…

新版Tomcat MySQL IDEA 安装配置过程遇到的问题

一、IDEA闪退 打不开了 IDEA环境变量路径不对 二、Tomcat 一闪而过 主要是JDK环境变量不对 三、MySQL 重新安装、是否备份以及默认盘问题 看清楚教程基本没问题:Windows 安装配置及卸载MySQL8超详细保姆级教程_mysql8卸载-CSDN博客

链表_两两交换链表中的节点

链表_两两交换链表中的节点 一、leetcode-24二、题解1.引库2.代码 一、leetcode-24 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能…

DAY08 List接口、Collections接口、Set接口

学习目标 能够说出List集合特点1.有序2.允许存储重复的元素3.有带索引的方法(练习 add,remove,set,get) 能够使用集合工具类Collections类:static void sort(List<T> list) 根据元素的自然顺序 对指定列表按升序进行排序。static <T> void sort(List<T> lis…

Zookeeper(58)如何在Zookeeper中实现分布式锁?

在 Zookeeper 中实现分布式锁是一种常见的用例。Zookeeper 提供了强一致性、高可用性的分布式协调服务&#xff0c;使得它非常适合用来实现分布式锁。以下是详细的步骤和代码示例&#xff0c;展示如何在 Zookeeper 中实现分布式锁。 1. Zookeeper 分布式锁的基本原理 Zookeep…

帆软报表FineReport入门:简单报表制作[扩展|左父格|上父格]

FineReport帮助文档 - 全面的报表使用教程和学习资料 数据库连接 点击号>>JDBC 选择要连接的数据库>>填写信息>>点击测试连接 数据库SQLite是帆软的内置数据库, 里面有练习数据 选择此数据库后,点击测试连接即可 数据库查询 方法一: 在左下角的模板数据集…

后台管理系统-项目初始化

认识vue-admin **核心交付:** 为什么要基于现成架子二次开发 什么是二次开发:基于已有的代码(项目工程,脚手架)开进行新功能的开发 所以看懂已有的框架中的既有代码,变得很重要了 1. 背景知识 后台管理系统是一种最常见的应用模式,不同的管理系统之间有很多相似的地方…

DAY07 Collection、Iterator、泛型、数据结构

学习目标 能够说出集合与数组的区别数组:1.是引用数据类型的一种2.可以存储多个元素3.数组的长度是固定的 int[] arr1 new int[10]; int[] arr2 {1,2,3};4.数组即可以存储基本类型的数据,又可以存储引用数据类型的数据int[],double[],String[],Student[]集合:1.是引用数据类…

VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合

VLM&#xff08;视觉语言模型&#xff09;与DeepSeek R1&#xff08;奖励机制&#xff09;如何结合 flyfish VLM的传统训练依赖于监督学习&#xff08;直接拟合问答对&#xff09;&#xff0c;而规则奖励函数通常用于强化学习&#xff08;通过试错和奖励反馈优化策略&#xf…

从零开始构建一个语言模型中vocab_size(词汇表大小)的设定规则

从零开始构建一个语言模型就要设计一个模型框架,其中要配置很多参数。在自然语言处理任务中,vocab_size(词汇表大小) 的设定是模型设计的关键参数之一,它直接影响模型的输入输出结构、计算效率和内存消耗。 本文是在我前文的基础上讲解的:从零开始构建一个小型字符级语言…

计算机网络之物理层——基于《计算机网络》谢希仁第八版

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

实时股票行情接口与WebSocket行情接口的应用

实时股票行情接口与WebSocket行情接口的应用 实时股票行情接口是量化交易和投资决策的核心工具之一&#xff0c;行情接口的种类和功能也在不断扩展。介绍几种常见的行情接口&#xff0c;包括实时股票行情接口、Level2行情接口、WebSocket行情接口以及量化行情接口&#xff0c;…

图论 之 BFS

文章目录 3243.新增道路查询后的最短距离1311.获取你好友已观看的视频 BFS:广度优先搜索&#xff08;BFS&#xff09; 是一种常用的算法&#xff0c;通常用于解决图或树的遍历问题&#xff0c;尤其是寻找最短路径或层级遍历的场景。BFS 的核心思想是使用队列&#xff08;FIFO 数…

ollama stream“:True django如何返回数据

在使用 Django 框架开发 Web 应用时&#xff0c;如果你想要通过 Ollama 流式返回数据&#xff0c;你可以通过 Django 的 HttpResponse 或者 StreamingHttpResponse 来实现。Ollama 主要用于处理文本生成任务&#xff0c;如聊天机器人、自动完成等&#xff0c;通常这些任务会产生…

为什么要用 const 和 let,而不是 var?

JavaScript 中有三种方式声明变量&#xff1a;var、let 和 const。其中&#xff0c;var 是早期版本的 JavaScript 中的标准&#xff0c;但随着 ECMAScript 6&#xff08;ES6&#xff09;引入了 let 和 const&#xff0c;var 的种种问题也显现出来。今天&#xff0c;我们将探讨为…

从零开始玩转TensorFlow:小明的机器学习故事 2

你好&#xff0c;TensorFlow&#xff01;——从零开始的第一个机器学习程序 1. 为什么要写这个“Hello, TensorFlow!”&#xff1f; 无论学习什么新语言或新框架&#xff0c;“Hello World!”示例都能帮助我们快速确认开发环境是否就绪&#xff0c;并掌握最基本的使用方式。对…