分类: 网络教程

  • 密码保护:Cloudflare Tunnel 内网穿透:从入门到大神终极指南

    密码保护:Cloudflare Tunnel 内网穿透:从入门到大神终极指南

    此内容受密码保护。如需查阅,请在下方输入密码。

  • 📌 Cloudflare Firewall 规则设计备忘录

    📌 Cloudflare Firewall 规则设计备忘录

    主题:Rule 01(白名单 / Skip 规则)的设计原则与最终定稿


    一、背景与问题起点

    在 Begoodtex 外贸 B2B 网站的实际运行中,持续发现大量异常访问请求,具备以下特征:

    • 伪装成 Googlebot / Bingbot / SEO 工具
    • 实际来源为 Hostinger、公有云、中国云厂商
    • 高频访问 WooCommerce 分类页,携带 filter_ 等筛选参数
    • 明确目的为:
      • 参数枚举
      • 产品矩阵抓取
      • 竞品数据分析

    因此,问题的本质并不是「是否允许爬虫」,而是:

    如何在 Cloudflare 中,只放行“真正可信”的搜索引擎 / 社媒 Bot,同时彻底阻断伪装 Bot 与中国云厂商来源?


    二、总体设计目标(不可妥协)

    在规则设计阶段,明确以下 硬性目标

    1. 唯一信任根:Cloudflare 验证结果
      • 不信任 User-Agent
      • 不信任自称 Googlebot / Bingbot
    2. 中国云厂商必须作为全局否决条件
      • 不论是否为 Bot
      • 不论是否声称官方
    3. 仅允许极少量“业务必要”的第三方 Bot
      • 只能通过 ASN
      • 且必须排除中国云厂商
    4. 避免 Skip 短路问题
      • 不允许出现「先 Skip,后 Block 永远不执行」的逻辑
    5. 长期可维护
      • 半年或一年后回看,无需重新分析即可理解
      • 扩展时不容易误放流量

    三、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 的结构支持这种“随时降级”,无需重构整体规则。


    六、明确的禁忌事项(防误改清单)

    以下行为 明确禁止

    1. ❌ 在 Rule 01 中加入 User-Agent 判断
    2. ❌ 将 AWS / GCP / Azure / Cloudflare 等公有云 ASN 加入白名单
    3. ❌ 将中国云 ASN 从 and not 中移除
    4. ❌ 将 Rule 01 拆分为「先 Skip / 后 Block」
    5. ❌ 将 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隔离、全屋漫游扩展与旁路由联动全攻略

    前言

    在家庭网络配置中,为了使家人网络和客人网络有效隔离,我们需要设置多个 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 路由的设置,步骤完全一致。

    注意有两个关键细节:

    1. 管理 IP 避让:B 上的网关(管理地址)要跟 A 不同,但必须在同一个网段内。例如 A 是 192.168.10.1,则 B 设为 192.168.10.2。
    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 计划任务清理操作文档(Hostinger 专用)

    📘 一、功能原理说明

    WooCommerce 使用 Action Scheduler 来管理各种后台定时任务(WP Cron 的队列系统)。
    常见任务包括:

    • 库存同步
    • 邮件发送
    • 自动更新价格、订单状态
    • 计划任务日志保存

    这些任务保存在数据库中(默认表名):

    • wp_actionscheduler_actions
    • wp_actionscheduler_claims
    • wp_actionscheduler_groups

    任务状态字段 status 的常见取值如下:

    状态名含义是否可安全删除
    complete已执行完成✅ 可删
    cancelled已取消✅ 可删
    expired已过期未执行✅ 可删
    failed执行失败✅ 可删
    pending即将执行 / 待执行⚠ 可删(WooCommerce 会重新生成)
    running正在执行中❌ 不建议删

    ⚙️ 二、Hostinger 环境下的清理方式

    由于 Hostinger 的共享主机环境对 WP-CLI 命令 支持不完整,action-scheduler list / delete / reset 等子命令不可用。
    因此推荐以下三种清理方式。


    🧩 方法一:通过 phpMyAdmin 清理(最通用)

    1. 登录 Hostinger → hPanel → 数据库 → phpMyAdmin
    2. 选择你的网站数据库(一般名称中包含你的域名)。
    3. 打开 SQL 选项卡。
    4. 输入以下语句并执行:
    DELETE FROM wp_actionscheduler_actions 
    WHERE status IN ('complete', 'canceled', 'expired', 'pending', 'failed');
    

    ⚠️ 如果你的数据库表前缀不是 wp_(比如 wp7a_),请相应修改。
    💡 WooCommerce 会自动重新生成必要的任务,删除不会导致系统崩溃。


    🧩 方法二:通过 PHP 脚本清理(适合不会操作 SQL 的情况)

    1. 在网站根目录(public_html)中新建文件:
      clear-as.php
    2. 内容如下:
    <?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";
    
    1. 执行方法(任选一种):
      • Hostinger → 开发 → PHP 命令行 中运行: php clear-as.php
      • 或直接访问网址: https://你的域名/clear-as.php
    2. 清理完毕后删除该文件,避免被他人访问。

    🧩 方法三:使用后台插件临时清理(可视化操作)

    安装官方插件 Action Scheduler(WooCommerce 官方维护):

    1. WordPress 后台 → 插件 → 安装插件
    2. 搜索 “Action Scheduler”
    3. 安装并启用
    4. 前往 工具 → 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 上传大型数据库

    告别 phpMyAdmin 限制:通过 SSH 向 Hostinger 上传大型数据库

    当您需要将一个大型数据库(比如超过 256MB 或 500MB)导入到 Hostinger 主机时,您可能会遇到一个熟悉的错误:phpMyAdmin 的上传限制。这通常会让新手感到困惑和沮丧。

    但别担心,有一个更专业、更可靠的方法可以轻松解决这个问题——那就是使用 SSH(Secure Shell)命令行。

    本文将为您详细介绍如何分步完成这个过程,让您轻松搞定大型数据库的迁移。


    步骤一:获取您的 SSH 登录信息

    首先,您需要从 Hostinger 的 hPanel 后台获取 SSH 访问权限。

    1. 登录您的 hPanel
    2. 导航到 SSH 访问
    3. 在这里,您将找到您的 SSH 用户名、IP 地址和端口号
    4. 记下这些信息,稍后会用到。

    步骤二:通过终端上传数据库文件

    有了 SSH 登录信息后,您就可以使用 scp 命令将本地的数据库文件上传到服务器。

    什么是 scp

    scp(Secure Copy)是一个基于 SSH 的文件传输协议,用于在本地和远程服务器之间安全地复制文件。

    打开您的终端(Windows 用户可以使用 Git BashPuTTY,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 主机与 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:准备工作

    1. 在 Cloudflare 添加你的域名(如果还没添加)。
    2. 确保你在 Cloudflare 的 DNS 管理界面可以正常修改记录。

    步骤 2:临时切换到 Hostinger DNS

    1. 登录域名注册商(阿里云/腾讯云等)。
    2. 找到域名的 DNS 服务器(Nameserver) 设置。
    3. 临时改为 Hostinger 提供的 NS,例如: ns1.dns-parking.com ns2.dns-parking.com
    4. 保存并等待生效(通常 5 分钟到 2 小时)。

    步骤 3:在 Hostinger 绑定域名

    1. 登录 Hostinger → hPanelWebsites → 找到你的网站 → 点击 Manage
    2. Domains → Add Website / Add Domain 中添加你的域名。
    3. 系统检测到域名 NS 在 Hostinger 后,就会允许绑定。
    4. 绑定完成后,Hostinger 会给出解析记录(A 记录、CNAME、MX 等)。

    步骤 4:改回 Cloudflare DNS

    1. 回到域名注册商,把 NS 改回 Cloudflare 提供的两条记录,例如: ada.ns.cloudflare.com ben.ns.cloudflare.com
    2. 在 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 的主机服务

  • 🎯 WordPress 批量上传图片并按指定时间写入媒体库的完整方法(FTP + WP CLI)

    🎯 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 局域网共享文件夹,允许匿名访问(无账号密码)

    Windows 10 局域网共享文件夹,允许匿名访问(无账号密码)

    1. 将网络设置为“专用网络”

    匿名共享只在“专用网络”下可靠运行。
    操作方法:

    1. 点击右下角任务栏的 网络/Wi-Fi 图标 → 选择当前连接 → 属性
    2. 在“网络配置文件”部分选择 专用(而不是“公用”)。
    3. 专用网络的含义是:你信任这个局域网环境,允许设备互相发现。

    检查是否成功:
    控制面板 → 网络和共享中心,当前网络应显示“专用网络”。


    2. 打开文件共享功能

    1. 打开 控制面板(可按 Win+R 输入 control)。
    2. 进入 网络和共享中心 → 更改高级共享设置
    3. 找到“专用”部分:
      • 勾选 启用网络发现 → 展开 → 选中“启用网络发现并自动设置网络连接设备”。
      • 勾选 启用文件和打印机共享
    4. 找到“所有网络”部分:
      • 启用共享,允许用户访问公共文件夹。
      • 关闭密码保护共享 ← 这是匿名访问的关键。

    3. 设置共享文件夹

    1. 找到需要共享的文件夹,右键 → 属性 → 切换到“共享”标签页。
    2. 点击 高级共享 → 勾选 共享此文件夹
    3. 点击 权限
      • 删除其他用户,点击 添加 → 输入 Everyone → 确定。
      • 选择 Everyone,勾选:
        • 读取(只读共享)。
        • 或勾选 完全控制(允许修改/删除/新增文件)。
    4. 点击 确定 → 依次关闭窗口。

    4. 调整本地安全策略(防止匿名访问被拒绝)

    1. Win + R 输入 secpol.msc → 回车,打开本地安全策略
    2. 找到:
      安全设置 → 本地策略 → 安全选项
      修改以下策略:
      • 网络访问: 本地账户的共享和安全模型 → 设置为 仅来宾 – 对本地用户进行来宾级别验证
      • 网络访问: 不允许SAM帐户和共享的匿名枚举 → 设为 已禁用
      • 网络访问: 让Everyone权限应用于匿名用户 → 设为 已启用
    3. 关闭窗口。

    ⚠️ 注意:如果是 Windows 10 家庭版,没有 secpol.msc,需要改注册表才能实现(可以提供方法)。


    5. 防火墙检查

    1. 打开 控制面板 → Windows Defender 防火墙 → 允许应用通过防火墙
    2. 找到“文件和打印机共享”,确保 专用网络一栏打勾。
    3. 如果你的电脑还安装了第三方防火墙(如安全软件),也要确认它允许局域网共享。

    6. 其他电脑访问共享文件夹

    1. 在另一台局域网电脑上按 Win + R → 输入: 复制编辑\\共享电脑的IP地址 例如: 复制编辑\\192.168.1.100
    2. 回车后应直接显示共享文件夹内容,无需输入用户名和密码。
    3. 若无法访问,检查:
      • 两台电脑是否在同一网段(如都是 192.168.1.x)。
      • 共享电脑的防火墙是否放行。
      • 是否有安全策略未修改。

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

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

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

    一、解决方案

    使用m3u8DL,网址:简介

    官方项目地址:地址

    下载完整版N_m3u8DL-CLI

    N_m3u8DL-CLI_v2.9.9_with_ffmpeg_and_SimpleG.zip

    二、使用方式

    1. 复制视频下载地址当弹出由于法律原因,IDM无法下载此受保护的数据时,就可以使用这个神器了,然后复制m3u8链接

    1. 打开软件

    1. 等待执行完毕后即可

  • 宝塔面板配置 Nginx 和 frps 共存 80/443 端口及配置SSL证书

    宝塔面板配置 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_portvhost_https_port需修改为其他端口,本文以12345678为例.

    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