伪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.rhkb.cn/news/24010.html

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

相关文章

LLM+多智能体协作:基于CrewAI与DeepSeek的邮件自动化实践

文章目录 引言理解 Flows(工作流)与 Crews(协作组)一、环境准备与工具安装1.1 Python环境搭建1.2 创建并激活虚拟环境1.3 安装核心依赖库(crewai、litellm) 二、本地DeepSeek R1大模型部署2.1 Ollama框架安…

Linux——高级IO

一、前言概念 IO拷贝等待 1. 同步(Synchronous) vs 异步(Asynchronous) 核心区别:关注的是消息通知的机制。 同步:调用方主动等待结果,需持续检查任务是否完成。 异步:调用方发起…

Linux:基础IO

文章目录 一、理解"文件"1、狭义上的理解2、广义上的理解3、文件操作的认知4、系统角度 二、C语言文件接口1、ls /proc/[进程id] -l 命令查看当前正在运⾏进程的信息2、stdin 和 stdout 和 stderr 三、系统文件 I/O1、标志位传递的一种方法2、系统调用 open 三、文件…

zabbix数据采集以及自定义监控

目录 1.数据采集 2.自定义监控 2.1客户端 2.2服务端 ​​​​​​​1.数据采集 点击最新数据页面如下图 往下滑查看具体数据 并点击查看图像就可以看到图像了 就可以看到如下图内容 2.自定义监控 我们通过zabbix客户端任何模板就可以监控我们想要的任何资源 如果…

02.25 继承和多态

编写一个如下场景: 有一个英雄Hero类,私有成员,攻击,防御,速度,生命值,以及所有的set get 方法 编写一个 武器 Weapon 类,拥有私有成员攻击力,以及set get 方法 编写一个…

6. grafana的graph简介

1. Settings功能 2. Visualization功能 (可视化的方式,后续会写一些) 3. Display 功能(显示方面的设置) bars 柱状图方式显示 lines(不选不会出功能) line width 线条的粗细 staircase 会让折…

前缀和代码解析

前缀和是指数组一定范围的数的总和,常见的有两种,一维和二维,我会用两道题来分别解析 一维 DP34 【模板】前缀和 题目: 题目解析: 暴力解法 直接遍历数组,遍历到下标为 l 时,开始进行相加,直到遍历到下标为 r ,最后返回总和.这样做的时间复杂度为: O(n) public class Main …

RoCBert:具有多模态对比预训练的健壮中文BERT

摘要 大规模预训练语言模型在自然语言处理(NLP)任务上取得了最新的最优结果(SOTA)。然而,这些模型容易受到对抗攻击的影响,尤其是对于表意文字语言(如中文)。 在本研究中&#xff0…

【原创工具】文件清单生成器 By怜渠客

【原创工具】文件清单生成器 By怜渠客 刚在论坛看到了一个文件列表生成器 文件列表生成器 - 吾爱破解 - 52pojie.cn ,和我去年写的一个软件很像,当时我也是有需求,要把一个文件夹里及其子文件夹里所有的文件列出来,就临时弄了个小…

深度学习-6.用于计算机视觉的深度学习

Deep Learning - Lecture 6 Deep Learning for Computer Vision 简介深度学习在计算机视觉领域的发展时间线 语义分割语义分割系统的类型上采样层语义分割的 SegNet 架构软件中的SegNet 架构数据标注 目标检测与识别目标检测与识别问题两阶段和一阶段目标检测与识别两阶段检测器…

【Linux】初始操作系统和进程(一)

目录 前言: 一、冯诺依曼体系结构: 二、操作系统: 1.操作系统是什么? 2.为什么要有操作系统? 3.操作系统是如何管理下层的? 4.操作系统是如何对上层提供服务的? 三、进程: …

【链 表】

【链表】 一级目录1. 基本概念2. 算法分析2.1 时间复杂度2.2 空间复杂度2.3 时空复杂度互换 线性表的概念线性表的举例顺序表的基本概念顺序表的基本操作1. 初始化2. 插入操作3. 删除操作4. 查找操作5. 遍历操作 顺序表的优缺点总结优点缺点 树形结构图形结构单链表基本概念链表…

python-leetcode-字符串解码

394. 字符串解码 - 力扣(LeetCode) class Solution:def decodeString(self, s: str) -> str:stack []num 0curr_str ""for char in s:if char.isdigit():num num * 10 int(char)elif char [:stack.append((curr_str, num))curr_str, …

力扣 下一个排列

交换位置,双指针,排序。 题目 下一个排列即在组成的排列中的下一个大的数,然后当这个排列为降序时即这个排列最大,因为大的数在前面,降序排列的下一个数即升序。所以,要是想找到当前排列的下一个排列&…

ProGuard加密混淆SpringBoot应用代码

背景 我们的项目是基于SpringCloud架构的微服务应用,采用Docker离线部署方式交付客户,通过授权证书来控制应用的许可功能模块和使用时间。我们已经在代码层已经实现: 基于多维度硬件指纹的绑定验证,cpu id、mac地址、磁盘序列、…

动态链接器(九):.init和.init_array

ELF文件中的.init和.init_array段是程序初始化阶段的重要组成部分,用于在main函数执行前完成必要的初始化操作。 1 .init段和.init_array 段 1.1 作用 .init段包含编译器生成的初始化代码,通常由运行时环境(如C标准库的启动例程&#xff0…

Ollama微调

Ollama是一款开源工具,其目标是简化大语言模型在本地环境的部署和使用。它支持多种流行的开源大语言模型,如 Llama 2、Qwen2.5等。在上一篇文章中我们部署Ollama,并使用简单命令管理Ollama。接下来我们学习Ollama的高级应用。通过Ollama的Mod…

DeepSeek开源周Day1:FlashMLA引爆AI推理性能革命!

项目地址:GitHub - deepseek-ai/FlashMLA 开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天! ​ 一、开源周震撼启幕 继上周预告后,DeepSeek于北京时间今晨9点准时开源「FlashMLA」,打响开源周五连…

(七)懒加载预加载

(一)懒加载 1. 什么是懒加载 懒加载,即延迟加载。在访问页面时,先将 img 元素或其他元素的背景图片路径替换为占位图(通常是 1*1px 的小图片),仅当元素进入浏览器可视区域时,才设置…

Revisiting Reverse Distillation for Anomaly Detection

重新审视反向蒸馏在异常检测中的应用 文章链接:点这里 源码链接:点这里 前言 此篇文章是在 Anomaly detection via reverse distillation from one-class embedding 这篇的基础上改进创新的。重新审视了反向蒸馏(KD)这一想法&am…