分类: 网络教程
-

📌 Cloudflare Firewall 规则设计备忘录
主题:Rule 01(白名单 / Skip 规则)的设计原则与最终定稿
一、背景与问题起点
在 Begoodtex 外贸 B2B 网站的实际运行中,持续发现大量异常访问请求,具备以下特征:
- 伪装成 Googlebot / Bingbot / SEO 工具
- 实际来源为 Hostinger、公有云、中国云厂商
- 高频访问 WooCommerce 分类页,携带
filter_等筛选参数 - 明确目的为:
- 参数枚举
- 产品矩阵抓取
- 竞品数据分析
因此,问题的本质并不是「是否允许爬虫」,而是:
如何在 Cloudflare 中,只放行“真正可信”的搜索引擎 / 社媒 Bot,同时彻底阻断伪装 Bot 与中国云厂商来源?
二、总体设计目标(不可妥协)
在规则设计阶段,明确以下 硬性目标:
- 唯一信任根:Cloudflare 验证结果
- 不信任 User-Agent
- 不信任自称 Googlebot / Bingbot
- 中国云厂商必须作为全局否决条件
- 不论是否为 Bot
- 不论是否声称官方
- 仅允许极少量“业务必要”的第三方 Bot
- 只能通过 ASN
- 且必须排除中国云厂商
- 避免 Skip 短路问题
- 不允许出现「先 Skip,后 Block 永远不执行」的逻辑
- 长期可维护
- 半年或一年后回看,无需重新分析即可理解
- 扩展时不容易误放流量
三、Rule 01 的核心设计思想
1️⃣ 核心原则(一句话)
先定义谁“永远不可信”,再在剩余范围内谈放行。
结论是:
- ❌ 中国云厂商:永远不在信任边界
- ✅ Cloudflare 已验证 Bot:最高可信
- ⚠️ 少量第三方 Bot:只能通过 ASN 白名单
2️⃣ 为什么 Rule 01 不使用 User-Agent
- User-Agent 可 100% 伪造
- 实际攻击日志中,大量伪装 Bot 正是通过 UA 绕过低级规则
- 仅依赖 UA 等同于给爬虫开后门
结论:Rule 01 中严禁使用 UA 作为放行依据。
3️⃣ 为什么不能“先 Skip 再 Block”
Cloudflare Firewall 的执行机制为:
一旦命中 Skip,后续所有 Firewall / WAF 规则将不再执行
因此:
- 若先写
cf.client.bot → Skip - 再写
中国云 ASN → Block
则 中国云上的 Bot 会被提前 Skip,Block 永远无法生效。
最终采用的设计是:在同一条规则中,通过
and not实现全局否决。
四、Rule 01 最终定稿(生产环境版本)
✅ 规则用途
- 作为 第一条 Firewall 自定义规则
- 动作:
Skip - 用于放行可信 Bot,使其免疫后续防爬 / WAF 规则
✅ 最终可保存的表达式(无注释版)
( cf.client.bot or ip.geoip.asnum in {32934 8075 23033 396982 13414 13238 54113} ) and not ip.geoip.asnum in {45102 37963 45090 132203 136907}
🧠 规则的人话翻译(快速理解版,非常重要)
只要是:
- Cloudflare 已验证过的 Bot
(如 Google、Bing、Meta、OpenAI 等,cf.client.bot = true)
或 - 来自明确列入白名单 ASN 的官方社媒 / 搜索生态 Bot
(如 Facebook、Microsoft、Pinterest、X、Yandex、DuckDuckGo)
并且:
- 不来自任何中国云厂商(阿里 / 腾讯 / 华为)
👉 才允许直接放行(Skip),不再进入后续 Firewall 与 WAF 规则。
📌 中国云厂商 = 全局否决条件
无论是否为 Bot、是否自称官方、是否被 Cloudflare 识别,都不在信任边界内。
🔍 ASN 含义说明(仅用于备忘,不写入表达式)
允许放行(S / A 级):
- 32934 — Meta / Facebook
- 8075 — Microsoft(Bing / LinkedIn / OpenAI)
- 23033 — Moz(DotBot)
- 396982 — Pinterest
- 13414 — X / Twitter
- 13238 — Yandex(A 级,业务取舍)
- 54113 — DuckDuckGo(A 级,业务取舍)
全局否决(X 级):
- 45102 / 37963 — 阿里云体系
- 45090 / 132203 — 腾讯云体系
- 136907 — 华为云
五、关于 A 级 ASN(13238 / 54113)的说明
- 放行 Yandex、DuckDuckGo 属于 业务曝光层面的权衡
- 并非安全必需
- 已达成共识:
- 若后续发现其大量访问带
filter_参数 - 或行为明显偏离搜索引擎特征
👉 可直接从白名单中移除,降级为 Challenge
- 若后续发现其大量访问带
Rule 01 的结构支持这种“随时降级”,无需重构整体规则。
六、明确的禁忌事项(防误改清单)
以下行为 明确禁止:
- ❌ 在 Rule 01 中加入 User-Agent 判断
- ❌ 将 AWS / GCP / Azure / Cloudflare 等公有云 ASN 加入白名单
- ❌ 将中国云 ASN 从
and not中移除 - ❌ 将 Rule 01 拆分为「先 Skip / 后 Block」
- ❌ 将 Ahrefs / Semrush / MJ12bot 等 SEO 工具加入 Skip 白名单
七、Rule 01 与后续规则的分工关系
- Rule 01:只解决“身份是否可信”
- 行为层(如
filter_、参数枚举)交由:- Managed Challenge
- Bot Score / Threat Score
- 结果:
- 搜索引擎完全不受影响
- 可疑爬虫持续被消耗成本
八、长期维护原则(给未来的你)
Rule 01 是“信任边界”,不是“放行名单”。
任何一个来源,只要开始表现得像爬虫,就不应继续享受 Skip 特权。
九、最终总结(一句话版本)
Rule 01 以 Cloudflare 的 Bot 验证为唯一信任根,结合极小化 ASN 白名单,并通过
and not 中国云 ASN作为全局否决条件,从逻辑与执行层面彻底避免 Skip 短路与 Bot 伪装问题,是一条可长期运行、可审计、可交接的生产级白名单规则。
-

高恪固件进阶指南:多VLAN隔离、全屋漫游扩展与旁路由联动全攻略
前言
在家庭网络配置中,为了使家人网络和客人网络有效隔离,我们需要设置多个 VLAN 网段,并将不同的 SSID 分别绑定在不同的 VLAN 上,以此达到网段间的物理隔离。同时,通过这种配置,不同的网段还可以在多个路由器之间进行漫游扩展,从而实现家里多楼层、无死角的 WiFi 覆盖,让设备在不同楼层、房间移动时依然能稳定漫游,并保持不同用途设备之间的互相隔离。

专家视点:这种方案的核心在于 802.1Q 协议。我们不仅仅是在做覆盖,而是在通过逻辑切分(VLAN)和主干链路(Trunk)技术,构建一个具备企业级安全特性的家庭内网。
组网设备与环境准备
- 核心设备:1 台 R2S(充当旁路由),2 台路由器(刷上高恪固件)。
- 角色分配:一台作为主路由(简称 A),另一台作为 AP(简称 B)。
- 固件建议:不要使用最新版本固件。因为高恪在最新固件中取消了关键的“交换机”管理功能。建议使用 5.2.2.21653 版本,这是目前公认的功能最全、组网最灵活的版本。
一、 主路由 A:新增多 VLAN 网段
按照下图进行设置。注意:所有的 VLAN 绑定接口都必须选用同一个物理接口,例如在本案例中,我统一选用 LAN:4。
[此处插入图片:image_15c9c5.png] [此处插入图片:image_15c9c8.png]
由于系统中已有一个默认的内网口网段(LAN),因此我们只需额外增加 2 个 VLAN 段:
- LAN(默认):用于主力设备,计划用于科学上网。
- LAN_V20:用于智能家居等不需要科学上网的设备(实现安全隔离)。
- LAN_V30:用于访客网络。
工程师点评:将所有 VLAN 绑定在 LAN:4 口,本质上是将该口配置成了 Trunk 模式。它像一条高速公路的多条车道,同时承载了不同 VLAN 的标记(Tag)数据。


二、 配置 DHCP 服务器
为了让不同网段的设备能自动获取 IP,需要针对每个接口开启 DHCP 服务。


三、 无线 SSID 与网段的精准绑定
这一步是将虚拟的网段落实到可见的 WiFi 信号上。将无线 SSID 分别绑定在上述 3 个网段上。
设置完成后,主路由 A 上的 VLAN 和 WiFi 状态如下:
- LAN 网段(IP 段:192.168.10.X,WiFi 名称:Local):绑定科学上网流量。
- LAN20 网段(IP 段:192.168.20.X,WiFi 名称:Iot):绑定家庭智能设备。
- LAN30 网段(IP 段:192.168.30.X,WiFi 名称:Guest):绑定客人网络。
到此为止,主路由 A 已经完美实现了不同网络的物理隔离。

四、 AP 路由 B:同步 VLAN 配置
为了让漫游到路由 B 上的设备依然保持网段隔离,我们需要在路由 B 上重复 A 路由的设置,步骤完全一致。
注意有两个关键细节:
- 管理 IP 避让:B 上的网关(管理地址)要跟 A 不同,但必须在同一个网段内。例如 A 是 192.168.10.1,则 B 设为 192.168.10.2。
- 关闭 DHCP:在路由 B 上,必须关掉所有 DHCP 服务。
技术要点分析:AP 节点关闭 DHCP 是为了将 IP 分配权统一交给主路由 A,防止内网出现两个 DHCP 服务器导致设备获取 IP 混乱。


五、 建立主干链路:连接 A 和 B 的 LAN:4 口
注意:必须是 LAN:4 口,其它口不行。因为 A 和 B 的 VLAN 都是绑定在 LAN:4 口上面的。
专家级解析:在网络工程中,这根连接两个 LAN 4 口的网线被称为 Trunk 链路。因为你在步骤一中将 VLAN 20 和 30 绑定在该物理口,这意味着该端口现在能够识别 802.1Q 标签。当主路由 A 的数据通过此口发出时,会自动给 IoT 数据打上 VLAN 20 标签,给访客数据打上 VLAN 30 标签。如果连接其他非绑定端口,由于缺乏标签识别能力,AP 路由 B 将无法区分流量,导致 VLAN 隔离失效。
六、 连接验证
到这一步,就已经完成设置了,已经实现不同多 VLAN 多子网在多个路由器之间的漫游,并且不同设备之间的网络隔离。
专家建议的验证清单:
- 漫游测试:拿手机连接 WiFi_Iot,从 A 路由房间走到 B 路由房间,观察 IP 是否始终保持在 192.168.20.X 段且网络不中断。
- 隔离测试:尝试用连接 WiFi_Guest 的手机去 Ping 连接 WiFi_Local 的 NAS 地址(如 192.168.10.10),正常的反馈应该是无法 Ping 通。
- 覆盖一致性:确保在 B 路由下获取的网关、DNS 均由主路由 A 下发,且属性与 A 端完全一致。
七、 设置 R2S 为旁路由模式
电脑直连 R2S,进入后台设置 LAN 口。将网关和 DNS 指向接口 LAN。
网管技术细节:
- 静态 IP:将 R2S 的 LAN 口设为静态 IP 192.168.10.3(需在主路由 LAN 网段内且不冲突)。
- 物理网关指向:R2S 自身的 IPv4 网关必须指向主路由 A 的 IP(192.168.10.1)。
- DNS 指向:R2S 的 DNS 同样建议指向主路由 A 或公网 DNS(如 223.5.5.5),确保其自身能够正常拉取规则。
- 防火墙:记得在 R2S(通常是 OpenWrt)中开启“IP 动态伪装”(MSS 锁定),这是旁路由模式下流量顺利回流的关键。

八、 R2S 与主路由物理连接
用网线把 R2S 的 LAN 口连接到主路由 A 的任意普通 LAN 口(非 LAN:4 亦可,只要处于同一个 VLAN1 逻辑下)。
深度解析:由于旁路由 R2S 只需要为默认的 LAN 网段(192.168.10.X)提供加速服务,因此它只需要接入主路由 A 的普通物理网口(这些网口默认属于 VLAN 1)。千万不要接在 LAN:4 口上,除非你对 R2S 也进行了 VLAN 划分,否则会导致 R2S 无法识别 Trunk 链路上的标记数据。
九、 修改主路由 A 的 DHCP 指向
这是实现“按需加速”的关键。进入主路由 A 的 LAN 接口设置,将 DHCP 的网关和 DNS 服务改成 R2S 的地址(本案中为 192.168.10.3)。

专业级操作:通过修改 DHCP 下发的网关地址,我们实现了流量的“逻辑重定向”。当新设备连接到 WiFi_Local 时,主路由 A 会告诉它:“你的网关是 192.168.10.3(R2S)”。于是,主网流量会先跳到 R2S 进行处理,再由 R2S 发送回主路由 A 出站。
注意:仅修改 LAN 接口的 DHCP,保持 LAN_V20 和 LAN_V30 的网关仍指向主路由自己(192.168.20.1 和 192.168.30.1),这样就实现了旁路由只影响特定网段的效果。
十、 最终验证
全部设置完成!现在,客人网络和家庭网络完全分开,且支持不同路由间的无缝漫游。连接 WiFi_Local(LAN 网段)的设备可以享受科学上网,而其他网段设备保持直连,稳定互不干扰。
十一、 进阶知识:为什么“交换机”功能必不可少?
前文提到为什么不用高恪最新固件,核心原因就在于最新固件取消了“交换机”管理功能。
在目前的组网情况下,如果你有 PC 等有线设备插在 A 或 B 的普通 LAN 口,它默认获取的是 VLAN1(192.168.10.X)的地址。如果有线设备也想加入其他网段(如 VLAN20)该怎么办? 这就需要用到“交换机”功能。
在 VLAN 的技术标准中,数据包是带着“标签”传输的。要理解具体操作,必须先搞清楚 已标记(Tagged)、未标记(Untagged) 和 关闭(Off) 这三个核心动作的含义:
1. 核心术语科普
- 已标记 (Tagged / 已标记):数据包通过该端口时,保留其 VLAN 标签。用于“路由与路由”或“路由与交换机”之间的连接。在您的设置中(如 image_4b4336.png),端口 4 针对 VLAN 20 和 30 都设为“已标记”。
- 未标记 (Untagged / 未标记):数据包进入网口时,路由器帮它打上标签;数据包离开网口发给电脑时,路由器把标签撕掉。用于连接普通的电脑、电视等“非 VLAN 识别设备”。
- 关闭 (Off / 关闭):该端口不属于该 VLAN,任何属于该 VLAN 的数据都不准从此口进出。
2. 实战场景:如何让有线 PC 加入 VLAN 20?
先看现在的交换机里面的设置情况:VLAN20、VLAN30对应的端口4 状态是:已标记。

假如我们想让插入 端口 3 的有线设备获取 VLAN20 的网络(192.168.20.X),你应该按下图所示进行配置:
- 第一步:将 VLAN 1 在端口 3 设为“关闭”。每一个物理网口只能拥有一个“未标记(U)”身份。为了防止冲突,必须先切断它与默认 VLAN 1 的联系。
- 第二步:将 VLAN 20 在端口 3 设为“未标记”。当 PC 包进入端口 3 时,路由器自动贴上“VLAN 20”标签。当数据回传时,路由器剥离标签,PC 就能正常通信。

专业原则:每个物理端口可以“已标记”多个 VLAN(用于 Trunk,如端口 4),但每个物理端口只能“未标记”一个 VLAN(用于 Access 接入,如端口 3)。
这样,当你将网线插入端口 3 时,该口就成了 VLAN20 的专用口。
十二、 深度问答:关于 VLAN 标记的进阶思考
1. 为什么原设置中,VLAN 1 的端口 4 是“未标记”也能正常通信?
这涉及到 Native VLAN(本征 VLAN) 的机制。
- 逻辑:在一个 Trunk 链路(如端口 4)上,可以有一个 VLAN 是不打标签传输的。主路由 A 发出不打标的包,AP 路由 B 收到后,默认将其归为自己的默认网段(VLAN 1)。
- 好处:这种设置增加了兼容性。如果你在端口 4 上临时插一个不懂 VLAN 的普通电脑,它依然能直接连上 VLAN 1 上网。
2. 能不能把 VLAN 1 的端口 4 也改为“已标记”?
完全可以,而且这在专业组网中更严谨。
- 操作:你需要同时将主路由 A 和 AP 路由 B 的端口 4 在 VLAN 1 下都修改为“已标记”。
- 意义:这样全屋所有网段的数据在网线里传输时都带有明确的 ID,消除了逻辑误判的可能,安全性更高。
- 代价:修改后,端口 4 将彻底失去对普通 PC 的直接兼容性。
工程师推荐参考
- 用最野的路子教你布局家庭网络@第二期 —— 通过 VLAN 实现单网口软路由网口复用。
- OpenWrt 实现多 VLAN 多子网在多个路由器之间的扩展 —— 实现全域不同设备之间的网络隔离,护航网络安全和个人隐私安全。
教程完毕!
关于“交换机” 更专业更详细的教程参考下面2个:
1:用最野的路子教你布局家庭网络@第二期——通过VLAN实现单网口软路由网口复用
2:openwrt实现多VLAN多子网在多个路由器之间的扩展,实现全域不同设备之间的网络隔离,护航网络安全和个人隐私安全
-

WooCommerce 计划任务清理操作文档(Hostinger 专用)
📘 一、功能原理说明
WooCommerce 使用 Action Scheduler 来管理各种后台定时任务(WP Cron 的队列系统)。
常见任务包括:- 库存同步
- 邮件发送
- 自动更新价格、订单状态
- 计划任务日志保存
这些任务保存在数据库中(默认表名):
wp_actionscheduler_actionswp_actionscheduler_claimswp_actionscheduler_groups
任务状态字段
status的常见取值如下:状态名 含义 是否可安全删除 complete已执行完成 ✅ 可删 cancelled已取消 ✅ 可删 expired已过期未执行 ✅ 可删 failed执行失败 ✅ 可删 pending即将执行 / 待执行 ⚠ 可删(WooCommerce 会重新生成) running正在执行中 ❌ 不建议删
⚙️ 二、Hostinger 环境下的清理方式
由于 Hostinger 的共享主机环境对 WP-CLI 命令 支持不完整,
action-scheduler list / delete / reset等子命令不可用。
因此推荐以下三种清理方式。
🧩 方法一:通过 phpMyAdmin 清理(最通用)
- 登录 Hostinger → hPanel → 数据库 → phpMyAdmin
- 选择你的网站数据库(一般名称中包含你的域名)。
- 打开 SQL 选项卡。
- 输入以下语句并执行:
DELETE FROM wp_actionscheduler_actions WHERE status IN ('complete', 'canceled', 'expired', 'pending', 'failed');⚠️ 如果你的数据库表前缀不是
wp_(比如wp7a_),请相应修改。
💡 WooCommerce 会自动重新生成必要的任务,删除不会导致系统崩溃。
🧩 方法二:通过 PHP 脚本清理(适合不会操作 SQL 的情况)
- 在网站根目录(
public_html)中新建文件:clear-as.php - 内容如下:
<?php require_once( dirname(__FILE__) . '/wp-load.php' ); global $wpdb; // 删除所有非运行中的任务 $deleted = $wpdb->query(" DELETE FROM {$wpdb->prefix}actionscheduler_actions WHERE status IN ('complete', 'cancelled', 'expired', 'pending', 'failed') "); echo "已删除任务总数:{$deleted} 个\n";- 执行方法(任选一种):
- 在 Hostinger → 开发 → PHP 命令行 中运行:
php clear-as.php - 或直接访问网址:
https://你的域名/clear-as.php
- 在 Hostinger → 开发 → PHP 命令行 中运行:
- 清理完毕后删除该文件,避免被他人访问。
🧩 方法三:使用后台插件临时清理(可视化操作)
安装官方插件 Action Scheduler(WooCommerce 官方维护):
- WordPress 后台 → 插件 → 安装插件
- 搜索 “Action Scheduler”
- 安装并启用
- 前往 工具 → Scheduled Actions
- 选择状态为 Complete, Failed, Pending, Cancelled, Expired 的任务
- 批量删除即可
✅ 优点:安全、可视化操作,不需要 SQL
⚠️ 缺点:如果任务数量太多(上千条),操作会变慢。
🧩 可选优化:清理后压缩表体积
清理大量任务后,表空间不会立即缩小,可以执行以下语句优化数据库:
OPTIMIZE TABLE wp_actionscheduler_actions; OPTIMIZE TABLE wp_actionscheduler_claims; OPTIMIZE TABLE wp_actionscheduler_groups;执行后数据库空间会立即回收,提升后台查询速度。
⚠️ 三、操作前后建议
操作前
- 务必备份数据库:Hostinger → hPanel → 备份 → “生成新备份”
- 建议记录清理前任务数量,方便对比效果。
操作后
- WooCommerce 会自动重新生成必要任务(如库存同步、订单清理)。
- 可以在后台 WooCommerce → 状态 → 日志 / 计划任务 查看是否正常运行。
- 清理完成后可在 phpMyAdmin 中查看表记录数是否减少。
✅ 四、常用 SQL 汇总表
目标 SQL 命令 删除已完成 DELETE FROM wp_actionscheduler_actions WHERE status='complete';删除失败任务 DELETE FROM wp_actionscheduler_actions WHERE status='failed';删除已取消任务 DELETE FROM wp_actionscheduler_actions WHERE status='cancelled';删除即将进行任务 DELETE FROM wp_actionscheduler_actions WHERE status='pending';删除所有非运行任务 DELETE FROM wp_actionscheduler_actions WHERE status IN ('complete','cancelled','expired','pending','failed');清空整个任务表 TRUNCATE TABLE wp_actionscheduler_actions;(谨慎)优化表体积 OPTIMIZE TABLE wp_actionscheduler_actions; -

告别 phpMyAdmin 限制:通过 SSH 向 Hostinger 上传大型数据库
当您需要将一个大型数据库(比如超过 256MB 或 500MB)导入到 Hostinger 主机时,您可能会遇到一个熟悉的错误:phpMyAdmin 的上传限制。这通常会让新手感到困惑和沮丧。
但别担心,有一个更专业、更可靠的方法可以轻松解决这个问题——那就是使用 SSH(Secure Shell)命令行。
本文将为您详细介绍如何分步完成这个过程,让您轻松搞定大型数据库的迁移。
步骤一:获取您的 SSH 登录信息
首先,您需要从 Hostinger 的 hPanel 后台获取 SSH 访问权限。
- 登录您的 hPanel。
- 导航到 SSH 访问。
- 在这里,您将找到您的 SSH 用户名、IP 地址和端口号。
- 记下这些信息,稍后会用到。
步骤二:通过终端上传数据库文件
有了 SSH 登录信息后,您就可以使用
scp命令将本地的数据库文件上传到服务器。什么是
scp?scp(Secure Copy)是一个基于 SSH 的文件传输协议,用于在本地和远程服务器之间安全地复制文件。打开您的终端(Windows 用户可以使用 Git Bash 或 PuTTY,macOS/Linux 用户直接使用系统自带的终端)。
Bash
scp /本地路径/your_database.sql 用户名@IP地址或域名:/远程目录/命令参数详解:
/本地路径/your_database.sql:替换为您电脑上数据库文件的实际路径。用户名@IP地址或域名:用您在 hPanel 中找到的 SSH 用户名和服务器 IP 地址或域名替换。/远程目录/:这是您想将文件上传到服务器上的位置。/home/您的用户名/domains/是一个很好的选择,因为它易于访问且安全。
例如:
Bash
scp ~/Downloads/my_site.sql u647917458_website@185.185.185.185:/home/u647917458_website/domains/输入命令后按回车,系统会提示您输入 SSH 密码。输入密码后,文件就会开始上传。
步骤三:通过 SSH 导入数据库
文件上传成功后,现在是时候通过
mysql命令行工具将数据导入到您的数据库了。首先,您需要连接到您的服务器:
Bash
ssh 用户名@IP地址或域名 -p 端口号然后,使用以下命令导入数据库。请确保将命令中的数据库名、用户名和文件名替换为您的实际信息。
Bash
mysql -u [数据库用户名] -p [数据库名] < /远程目录/your_database.sql例如,如果您已创建数据库
u647917058_data123,用户名也为u647917458_website,并且文件上传到了/home/u647917458_website/domains/,那么命令如下:Bash
mysql -u u647917458_website -p u647917058_data123 < /home/u647917458_website/domains/my_site.sql执行命令后,系统会提示您输入数据库用户的密码。输入密码(输入时不会显示任何字符),然后按回车键。如果您的数据库文件很大,导入过程可能需要一些时间。
步骤四:完成后的清理工作
导入成功后,为了您的数据安全,请立即从服务器上删除上传的
.sql文件。使用以下命令删除文件:
Bash
rm /远程目录/your_database.sql例如:
Bash
rm /home/u647917458_website/domains/my_site.sql总结
使用 SSH 命令行导入大型数据库,不仅可以绕过 phpMyAdmin 的文件大小限制,还能提供更稳定和高效的传输方式。虽然这个方法可能对新手来说稍显复杂,但掌握它将极大地提升您管理服务器和数据库的能力。
现在,您可以自信地处理任何规模的数据库文件了。
-

Hostinger 主机与 Cloudflare 分开托管域名的完整方法(含 .cn 域名)
前言
很多人购买 Hostinger 主机后,发现它要求把域名的 DNS(域名服务器 / NS 记录) 改到 Hostinger 平台才能绑定和使用网站。但如果你想用 Cloudflare 做加速、防御和解析,就需要让域名“分开托管”:域名解析留在 Cloudflare,网站托管在 Hostinger。
本篇文章会详细介绍如何一步一步实现这个目标,并解决.cn域名的绑定问题。
一、为什么要分开托管?
- Cloudflare 优势
- CDN 加速,提升全球访问速度
- 防 DDoS、防攻击
- 灵活的 DNS 解析管理
- Hostinger 优势
- 性价比高的主机空间
- 一键部署 WordPress 等建站工具
- 分开托管
- 域名的 DNS 托管在 Cloudflare
- 网站文件放在 Hostinger
- 邮箱解析等也可以在 Cloudflare 统一管理
二、
.cn域名的特殊说明.cn域名由 CNNIC 管理,必须通过国内注册商(阿里云、西部数码、腾讯云等)购买。- Hostinger 不是 CNNIC 授权注册商,无法直接注册
.cn域名。 - 绑定
.cn域名时,Hostinger 系统会检测域名是否指向他们的 DNS,如果不是会报错。 - 解决办法:临时改 NS 到 Hostinger → 完成绑定 → 再改回 Cloudflare
三、完整操作流程
步骤 1:准备工作
- 在 Cloudflare 添加你的域名(如果还没添加)。
- 确保你在 Cloudflare 的 DNS 管理界面可以正常修改记录。
步骤 2:临时切换到 Hostinger DNS
- 登录域名注册商(阿里云/腾讯云等)。
- 找到域名的 DNS 服务器(Nameserver) 设置。
- 临时改为 Hostinger 提供的 NS,例如:
ns1.dns-parking.com ns2.dns-parking.com - 保存并等待生效(通常 5 分钟到 2 小时)。
步骤 3:在 Hostinger 绑定域名
- 登录 Hostinger → hPanel → Websites → 找到你的网站 → 点击 Manage。
- 在 Domains → Add Website / Add Domain 中添加你的域名。
- 系统检测到域名 NS 在 Hostinger 后,就会允许绑定。
- 绑定完成后,Hostinger 会给出解析记录(A 记录、CNAME、MX 等)。
步骤 4:改回 Cloudflare DNS
- 回到域名注册商,把 NS 改回 Cloudflare 提供的两条记录,例如:
ada.ns.cloudflare.com ben.ns.cloudflare.com - 在 Cloudflare → DNS 面板,添加 Hostinger 提供的解析记录,例如:
A @ 46.202.xxx.xxx (Hostinger 服务器 IP) CNAME www yourdomain.com MX @ mx1.hostinger.com 优先级 5 MX @ mx2.hostinger.com 优先级 10(根据你之前在 Hostinger DNS 看到的内容填写)
步骤 5:测试访问
- 浏览器访问你的域名,看是否能正常打开网站。
- 邮箱解析(如果用 Hostinger 邮箱)也要测试收发。
四、常见问题
Q1:临时改 NS 会影响网站访问吗?
A1:短时间可能有影响,但一般切换完成后很快就恢复。整个过程建议在访问量低的时段进行。Q2:Cloudflare 代理(橙色云)和 Hostinger 有冲突吗?
A2:大多数情况下没有冲突,但如果 Hostinger 后台某些功能异常,可以先把对应记录的代理关掉(灰色云)。Q3:能直接用 Cloudflare 解析,不改 NS 到 Hostinger 也绑定吗?
A3:不行,Hostinger 必须先验证 NS 才能绑定,所以需要用“临时切换”的办法。
五、总结
- Hostinger 虽然默认要求 NS 指向他们,但通过 临时切换 → 绑定 → 改回 Cloudflare 的方法,可以实现分开托管。
.cn域名一样可以使用这个方法,只是要通过国内注册商购买。- 完成绑定后,你就可以同时享受 Cloudflare 的加速和安全,以及 Hostinger 的主机服务。
- Cloudflare 优势
-

🎯 WordPress 批量上传图片并按指定时间写入媒体库的完整方法(FTP + WP CLI)
在 WordPress 开发或内容迁移过程中,我们常常需要:
- 批量上传大量图片
- 希望图片在媒体库中显示为某个特定年月
- 按顺序写入媒体库(保持排序一致)
- 避免服务器反复拷贝文件(节省空间)
默认后台上传无法实现这些高级需求,但借助 FTP + WP CLI + functions.php 定制代码,可以完美实现。
🧩 实现目标
- ✅ 图片实际文件存在于
/wp-content/uploads/2023/03/ - ✅ 媒体库中显示“上传于 2023 年 3 月”
- ✅ 上传时间按照你设定的起点时间,每张图 +10 秒
- ✅ 媒体库按时间顺序排序展示(非乱序)
- ✅ 不重复复制图片文件(节省空间)
📦 所需准备工具
工具 用途 是否必须 FTP / 文件管理器 上传图片到服务器 ✅ WP-CLI 命令行导入媒体 ✅ functions.php 注入上传目录与时间控制逻辑 ✅
🧰 Step 1:上传图片到指定目录
通过 FTP 或主机自带文件管理器:
- 将图片上传到目录,例如:
/wp-content/uploads/2023/03/
注意文件命名统一格式(如 001.jpg、002.jpg),便于后续排序。
🧠 Step 2:在
functions.php中加入控制代码在你的主题(如
wp-content/themes/your-theme/functions.php)中加入以下代码:// 1. 固定上传目录为 /2023/03 add_filter('upload_dir', function ($uploads) { $custom_subdir = '/2023/03'; // ← 可自定义为你需要的目录 $uploads['subdir'] = $custom_subdir; $uploads['path'] = $uploads['basedir'] . $custom_subdir; $uploads['url'] = $uploads['baseurl'] . $custom_subdir; return $uploads; }); // 2. 设置上传时间从某日起,每张图增加 10 秒 add_filter('wp_insert_attachment_data', function ($data) { static $i = 0; $base_time = strtotime('2023-03-04 14:00:00'); // 起始时间 $custom_time = date('Y-m-d H:i:s', $base_time + ($i * 10)); // 每张图 +10秒 $data['post_date'] = $custom_time; $data['post_date_gmt'] = get_gmt_from_date($custom_time); $i++; return $data; });📝 说明:
- 你可以修改路径
/2023/03为任意目标年月 - 起始时间
2023-03-04 14:00:00也可自定义 - 每张图递增 10 秒,确保时间唯一,防止排序混乱
💻 Step 3:使用 SSH 进入 WordPress 根目录
登录你的服务器 SSH 后,进入 WordPress 安装目录:
cd /home/你的用户名/domains/你的域名/public_html确认是否是正确目录:
ls -al | grep wp-config.php能看到
wp-config.php,说明你就在根目录 ✅
🚀 Step 4:用 WP CLI 导入媒体文件(不复制)
执行以下命令:
wp media import $(ls -1v wp-content/uploads/2023/03/*.{jpg,jpeg,png,gif,webp,svg}) --skip-copy参数说明:
ls -1v:按自然顺序列出文件名(001.jpg → 002.jpg → …)--skip-copy:跳过复制操作,避免浪费磁盘空间wp media import:通过 WP CLI 将文件注册到媒体库
✅ 成功后你将在媒体库看到图片,上传时间按你设定的顺序排列,并显示“上传于 2023 年 3 月”。
📌 注意事项
✅ 避免乱序的关键:
WordPress 后台上传多个文件是并发异步,可能导致
$i++紊乱;而 WP CLI 是串行执行,可以确保每张图的时间顺序与文件名一致。
🧪 常见问题解答
❓ 后台上传为什么排序会乱?
后台上传多张图是同时发起多个异步请求,
$i++无法保证顺序。只能通过 WP CLI 保证顺序导入。
❓ 媒体库只显示 80 张图,怎么办?
媒体库的“网格视图”默认最多只加载前 80 张,可以切换到“列表视图”查看更多,或者使用媒体分页插件。
❓ 如何改成导入到别的月份,比如 2024/08?
只需修改 2 个地方:
- functions.php 中的:
$custom_subdir = '/2024/08'; $base_time = strtotime('2024-08-01 10:00:00');- 上传图片到
/wp-content/uploads/2024/08/
然后执行导入命令:
wp media import $(ls -1v wp-content/uploads/2024/08/*.{jpg,jpeg,png,gif,webp,svg}) --skip-copy
✅ 总结
步骤 说明 上传 FTP 将图片上传到目标年月的文件夹 控制 在 functions.php中设置上传目录和上传时间规则导入 用 WP CLI + --skip-copy将图片写入数据库效果 图片显示为指定年月,排序整齐,避免乱序
🧾 附加建议
- ✅ 可以写成 Shell 脚本批量导入多个目录
- ✅ 上传大量媒体前备份数据库
- ✅ 可结合自定义字段实现更复杂的图片管理
-

Windows 10 局域网共享文件夹,允许匿名访问(无账号密码)
1. 将网络设置为“专用网络”
匿名共享只在“专用网络”下可靠运行。
操作方法:- 点击右下角任务栏的 网络/Wi-Fi 图标 → 选择当前连接 → 属性。
- 在“网络配置文件”部分选择 专用(而不是“公用”)。
- 专用网络的含义是:你信任这个局域网环境,允许设备互相发现。
检查是否成功:
控制面板 → 网络和共享中心,当前网络应显示“专用网络”。
2. 打开文件共享功能
- 打开 控制面板(可按
Win+R输入control)。 - 进入 网络和共享中心 → 更改高级共享设置。
- 找到“专用”部分:
- 勾选 启用网络发现 → 展开 → 选中“启用网络发现并自动设置网络连接设备”。
- 勾选 启用文件和打印机共享。
- 找到“所有网络”部分:
- 启用共享,允许用户访问公共文件夹。
- 关闭密码保护共享 ← 这是匿名访问的关键。
3. 设置共享文件夹
- 找到需要共享的文件夹,右键 → 属性 → 切换到“共享”标签页。
- 点击 高级共享 → 勾选 共享此文件夹。
- 点击 权限:
- 删除其他用户,点击 添加 → 输入 Everyone → 确定。
- 选择 Everyone,勾选:
- 读取(只读共享)。
- 或勾选 完全控制(允许修改/删除/新增文件)。
- 点击 确定 → 依次关闭窗口。
4. 调整本地安全策略(防止匿名访问被拒绝)
- 按
Win + R输入secpol.msc→ 回车,打开本地安全策略。 - 找到:
安全设置 → 本地策略 → 安全选项
修改以下策略:- 网络访问: 本地账户的共享和安全模型 → 设置为 仅来宾 – 对本地用户进行来宾级别验证。
- 网络访问: 不允许SAM帐户和共享的匿名枚举 → 设为 已禁用。
- 网络访问: 让Everyone权限应用于匿名用户 → 设为 已启用。
- 关闭窗口。
⚠️ 注意:如果是 Windows 10 家庭版,没有
secpol.msc,需要改注册表才能实现(可以提供方法)。
5. 防火墙检查
- 打开 控制面板 → Windows Defender 防火墙 → 允许应用通过防火墙。
- 找到“文件和打印机共享”,确保 专用网络一栏打勾。
- 如果你的电脑还安装了第三方防火墙(如安全软件),也要确认它允许局域网共享。
6. 其他电脑访问共享文件夹
- 在另一台局域网电脑上按
Win + R→ 输入: 复制编辑\\共享电脑的IP地址例如: 复制编辑\\192.168.1.100 - 回车后应直接显示共享文件夹内容,无需输入用户名和密码。
- 若无法访问,检查:
- 两台电脑是否在同一网段(如都是
192.168.1.x)。 - 共享电脑的防火墙是否放行。
- 是否有安全策略未修改。
- 两台电脑是否在同一网段(如都是
-

解决 由于法律原因,IDM无法下载此受保护的数据
-

宝塔面板配置 Nginx 和 frps 共存 80/443 端口及配置SSL证书
前言
在
LNMP环境下的 nginx 和 frps 共存配置教程,不过也有小伙伴咨询宝塔面板上配置的方法.鉴于大部分小伙伴只一台服务器,并且已经部署过网站,想同时使用 frps 服务,本文将介绍在宝塔面板的 LNMP 环境来配置 nginx 和 frps 共存 80/443 端口及泛域名支持的方法.一、宝塔面板 nginx 配置
按照常规方法安装宝塔面板,并在宝塔面板上安装
LNMP环境.尝试添加一个网站确保服务能正常运行.如果已有网站正常运行,可以忽略此步.
查询 nginx 配置文件
宝塔面板的
nginx主配置文件所在目录为/www/server/nginx/conf
常规情况下并不会修改默认配置文件,可以执行以下命令查看
include的目录.cat /www/server/nginx/conf/nginx.conf
默认配置中显示
include的目录为/www/server/panel/vhost/nginx,即在此目录下的conf文件也可以被 nginx 使用.宝塔面板上创建的网站域名配置文件也在此目录.
查询站点目录
进入
/www/server/panel/vhost/nginx目录可以看出之前创建的test.ioiox.com的配置文件也在此.
提前配置证书
证书文件可以手动上传,也可以使用已运行的网站证书,其目录为
/www/server/panel/vhost/cert.
修改Nginx配置文件:在Nginx的配置文件中修改配置信息
打开宝塔面板-Nginx软件-配置修改,

或者SSH登陆VPS,打开宝塔面板的nginx主配置文件所在目录/www/server/nginx/conf/nginx.conf

添加以下代码
# 处理特定的子域名 server { listen 80; server_name *.sirenyan.cn/; # 强制使用 HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; # 启用 SSL server_name *.sirenyan.cn/; # Let's Encrypt SSL 证书路径 ssl_certificate /www/server/panel/vhost/certsirenyan.cn/fullchain.pem; #修改为证书路径 ssl_certificate_key /www/server/panel/vhost/certsirenyan.cn/privkey.pem; #修改为证书路径 # 配置 SSL 选项(可选) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass http://localhost:5000; # 将请求代理到5000端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # 处理所有未匹配的子域名 server { listen 80; server_name _; # 处理所有未匹配的子域 location / { return 444; # 返回444(空回应) } }二、frp 配置
frps.ini
由于 nginx 占用
80/443端口,frps.ini中的vhost_http_port和vhost_https_port需修改为其他端口,本文以1234和5678为例.frpc.ini
如果
frps.ini配置了subdomain_host泛域名,那么frpc.ini中域名参数需使用subdomain = xx仅填写二级域名主机头即可,不要填写完整域名.
如果
frps.ini没有配置subdomain_host泛域名,那么frpc.ini中域名参数需使用custom_domains = xx.xxx.com需填写完整的域名.

结语
感谢在上文中的网友留言给出了宝塔面板上的共存解决方案.
转载:https://www.ioiox.com/archives/98.html







