<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[Pureman]]></title> 
<atom:link href="https://www.pureman.top/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[]]></description>
<link>https://www.pureman.top/</link>
<language>zh-cn</language>

<item>
    <title>CAU校园网一键自动登录工具（Windows / 安卓 / iPhone）</title>
    <link>https://www.pureman.top/25</link>
    <description><![CDATA[<blockquote>
<p><strong>TL;DR</strong>：学校 Dr.COM 校园网掉线后要手动打开门户、输学号密码、点登录，太烦。我把它自动化了：Windows 开机自动登录 + 每 1 分钟检测补登，手机点一下主屏图标就登录，不需要装软件、不需要管理员权限、不需要服务器。<br />
<strong>下载</strong>：<a href="https://wwbqh.lanzouc.com/iJH7I4bxy0ve">https://wwbqh.lanzouc.com/iJH7I4bxy0ve</a> ｜ <strong>密码</strong>：<code>5b1a</code></p>
</blockquote>
<hr />
<h2>一、受够了</h2>
<p>我们学校的校园网用的是 <strong>Dr.COM</strong> 认证。它的日常是这样的：</p>
<ul>
<li>挂着挂着就掉线，尤其是电脑待机/休眠回来、或者连着几天没重启</li>
<li>掉线后不会自动重连</li>
<li>每次都要：浏览器自动跳到门户页 → 输学号 → 输密码 → 点&quot;登录&quot;</li>
<li>Windows 还特别&quot;贴心&quot;：一断网就自己弹出门户页，生怕你不知道</li>
</ul>
<p>一天折腾三五次，实在受不了了，于是我决定把它自动化。</p>
<h2>二、最终效果</h2>
<table>
<thead>
<tr>
<th>平台</th>
<th>效果</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Windows</strong></td>
<td>开机自动登录；掉线后最多 <strong>1 分钟</strong>自动补登；后台运行，<strong>连黑框都不会闪</strong></td>
</tr>
<tr>
<td><strong>安卓</strong></td>
<td>浏览器打开一个网页文件就登录；或把网址存成书签</td>
</tr>
<tr>
<td><strong>iPhone</strong></td>
<td>Safari 书签点一下 / 快捷指令一键运行，还能设置&quot;连上校园网 WiFi 自动执行&quot;</td>
</tr>
<tr>
<td><strong>macOS / Linux</strong></td>
<td>一行命令，或加到 crontab</td>
</tr>
</tbody>
</table>
<p>特点：<strong>免安装、免管理员权限、不需要服务器</strong>。整个工具就是几个纯文本文件（HTML / BAT / PS1 / SH），你可以自己打开看它干了什么。</p>
<h2>三、下载</h2>
<p><strong>蓝奏云</strong>：<a href="https://wwbqh.lanzouc.com/iJH7I4bxy0ve">https://wwbqh.lanzouc.com/iJH7I4bxy0ve</a><br />
<strong>密码</strong>：<code>5b1a</code></p>
<p>下载后解压，里面所有文件都是纯文本，<strong>不含任何账号密码</strong>（每个人第一次用会提示填自己的），可以放心查看和转发。</p>
<h2>四、文件说明</h2>
<table>
<thead>
<tr>
<th>文件</th>
<th>用途</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>校园网一键登录.html</code></td>
<td>网页版，双击/浏览器打开即用，手机电脑通用</td>
</tr>
<tr>
<td><code>登录校园网.bat</code></td>
<td>Windows 双击即登录，不弹浏览器</td>
</tr>
<tr>
<td><code>设置自动登录.bat</code></td>
<td>注册自动登录：开机一次 + 每分钟检测补登</td>
</tr>
<tr>
<td><code>取消自动登录.bat</code></td>
<td>不想要了，双击这个</td>
</tr>
<tr>
<td><code>campus-login.ps1</code></td>
<td>Windows 脚本本体</td>
</tr>
<tr>
<td><code>校园网登录.sh</code></td>
<td>macOS / Linux / 路由器 用</td>
</tr>
<tr>
<td><code>使用说明.md</code></td>
<td>完整文档（含排错）</td>
</tr>
</tbody>
</table>
<hr />
<h2>五、怎么用</h2>
<h3>Windows：最省事</h3>
<table>
<thead>
<tr>
<th>想干什么</th>
<th>双击这个</th>
</tr>
</thead>
<tbody>
<tr>
<td>现在就要登录</td>
<td><code>登录校园网.bat</code></td>
</tr>
<tr>
<td>以后全自动</td>
<td><code>设置自动登录.bat</code></td>
</tr>
<tr>
<td>不要自动了</td>
<td><code>取消自动登录.bat</code></td>
</tr>
</tbody>
</table>
<p><code>设置自动登录.bat</code> 会让你输入一次学号和密码，之后：</p>
<ul>
<li><strong>开机自动登录</strong>（在启动文件夹放一个快捷方式）</li>
<li><strong>每 1 分钟检查一次</strong>（计划任务 <code>CampusAutoLogin</code>），掉线自动补登</li>
</ul>
<p>账号密码保存在 <code>%LOCALAPPDATA%\campus-login\config.json</code>，用 Windows <strong>当前用户密钥（DPAPI）加密</strong>，换台电脑或换个用户都解不开。</p>
<p>它很&quot;克制&quot;：<strong>每分钟只是查一下在线状态，在线就什么都不做</strong>，不会反复登录刷认证。</p>
<blockquote>
<p>想看它到底有没有在干活？看日志就行：</p>
<pre><code class="language-powershell">Get-Content "$env:LOCALAPPDATA\campus-login\auto-login.log" -Tail 20</code></pre>
<p>每次运行都会记下结果，登录时还会记下请求的 URL 和门户返回内容。</p>
</blockquote>
<h3>安卓</h3>
<ol>
<li>把 <code>校园网一键登录.html</code> 拷到手机</li>
<li>Chrome 地址栏输入 <code>file:///sdcard/Download/校园网一键登录.html</code></li>
<li>填一次账号密码 → 勾&quot;记住账号密码&quot; → 以后打开就自动登录</li>
<li>也可以选&quot;添加到主屏幕&quot;，变成一个 App 图标</li>
</ol>
<h3>iPhone</h3>
<p>iPhone 上「文件」App 直接点 html 只会<strong>预览源码、不执行脚本</strong>，所以用这两种：</p>
<p><strong>方案 1：Safari 书签（最简单）</strong></p>
<p>新建一个书签，网址填（把中文换成你自己的）：</p>
<pre><code>http://10.7.250.8/drcom/login?DDDDD=你的学号&amp;upass=你的密码&amp;0MKKey=123456&amp;R1=0&amp;R3=0&amp;R6=0&amp;para=00&amp;v6ip=</code></pre>
<p>以后连上校园网，点这个书签就已经登录了（页面会显示一串英文，直接返回即可）。</p>
<p><strong>方案 2：快捷指令（可自动触发）</strong></p>
<ol>
<li>打开「快捷指令」→ 新建</li>
<li>加「<strong>URL</strong>」，粘贴上面那条网址</li>
<li>加「<strong>获取 URL 内容</strong>」（方法 GET）</li>
<li>加「<strong>显示通知</strong>」，内容写&quot;校园网已登录&quot;</li>
<li>命名为&quot;校园网登录&quot;，可&quot;添加到主屏幕&quot;</li>
<li><strong>自动化</strong>（可选）：快捷指令 →「自动化」→ 新建 →「Wi-Fi」→ 选校园网 →「已加入」→ 运行&quot;校园网登录&quot; → 关掉&quot;运行前询问&quot;</li>
</ol>
<p>以后一连上校园网就自动登录，完全不用管。</p>
<h3>macOS / Linux</h3>
<pre><code class="language-bash">sh 校园网登录.sh          # 第一次会提示输入账号密码，自动保存
sh 校园网登录.sh -setup   # 改账号密码
sh 校园网登录.sh -logout  # 注销下线</code></pre>
<p>开机自动登录，加到 <code>crontab -e</code>：</p>
<pre><code>* * * * * /bin/sh /你的路径/校园网登录.sh &gt;/dev/null 2&gt;&amp;1</code></pre>
<hr />
<h2>六、原理：它其实就是个 GET 请求</h2>
<p>顺手扒了一下门户的登录流程。这个 Dr.COM 门户（<code>Server: DrcomServer1.0</code>）的登录<strong>本质就是一个 GET 请求</strong>，而且<strong>原生支持 JSONP</strong>（<code>callback=</code> 参数），所以纯网页就能跨域调用——这就是为什么不需要服务器、不需要装 App。</p>
<table>
<thead>
<tr>
<th>功能</th>
<th>接口</th>
</tr>
</thead>
<tbody>
<tr>
<td>查询在线状态</td>
<td><code>http://&lt;服务器&gt;/drcom/chkstatus?callback=cb&amp;jsVersion=3.3.2</code></td>
</tr>
<tr>
<td>登录</td>
<td><code>http://&lt;服务器&gt;/drcom/login?callback=cb&amp;DDDDD=账号&amp;upass=密码&amp;0MKKey=123456&amp;R1=0&amp;R3=0&amp;R6=0&amp;para=00&amp;v6ip=&amp;v=随机数</code></td>
</tr>
<tr>
<td>注销</td>
<td><code>http://&lt;服务器&gt;/drcom/logout?callback=cb</code></td>
</tr>
</tbody>
</table>
<p>返回 <code>"result":1</code> 就是成功/在线，<code>"result":0</code> 是失败/离线。</p>
<p>所以整个工具的逻辑很简单：<strong>先查状态 → 没在线才登录 → 登录后再查一次状态做校验</strong>。绝不瞎发包。</p>
<p>我们学校有两台认证服务器（无线和有线各一台），工具会先探测拿到本机在校园网里的 IP，按地址段判断该用哪台，猜错了会自动换另一台重试。</p>
<blockquote>
<p>说一下局限：这套参数和服务器地址是<strong>针对我们学校</strong>的。别的学校虽然大概率也是 Dr.COM，但服务器 IP、参数会不一样，需要自己改。</p>
</blockquote>
<hr />
<h2>七、踩过的两个坑（这部分最有意思）</h2>
<h3>坑 1：参数顺序 —— &quot;有时能登上，有时登不上&quot;</h3>
<p>这是最坑的一个。</p>
<p>我第一版脚本写完，测试通过，结果挂上自动运行后<strong>时好时坏</strong>：状态查询一切正常，判断也准确，可就是登不上去，门户返回一句很含糊的：</p>
<pre><code>&lt;html&gt;&lt;body&gt;Error code: 203 Bad request(2)&lt;/body&gt;&lt;/html&gt;</code></pre>
<p>排查了很久才发现：<strong>Dr.COM 内核是按参数「位置」解析查询串的</strong>——<code>callback</code> 必须是第 1 个参数、<code>DDDDD</code> 必须是第 2 个。顺序一错，<strong>账号密码再对也没用</strong>。</p>
<p>实测对照（同一个账号密码，只改顺序）：</p>
<table>
<thead>
<tr>
<th>参数顺序</th>
<th>结果</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>callback, DDDDD, upass, 0MKKey, R1, R3, R6, para, v6ip, v</code></td>
<td>✅ 登录成功</td>
</tr>
<tr>
<td><code>callback, DDDDD, v, upass, ...</code></td>
<td>✅ 成功（<code>v</code> 在 DDDDD 后面就行）</td>
</tr>
<tr>
<td><code>callback, v, DDDDD, upass, ...</code></td>
<td>❌ Bad request(2)</td>
</tr>
<tr>
<td><code>callback, R1, upass, ...</code>（乱序）</td>
<td>❌ Bad request(2)</td>
</tr>
<tr>
<td>少了 <code>callback</code></td>
<td>❌ 404 URL no found</td>
</tr>
</tbody>
</table>
<p>而<strong>大多数编程语言里，哈希表/字典的遍历顺序是随机或不确定的</strong>。所以这个 bug 表现出来就是&quot;玄学&quot;：同一份代码，跑十次总有两三次失败。</p>
<p>改成按门户原生顺序显式拼接参数之后就 100% 稳定了。</p>
<blockquote>
<p>顺带说一句：URL 里那个 <code>v=</code> 后面每次都不同的数字，只是<strong>随机的防缓存参数</strong>，值不重要——<strong>位置才重要</strong>。</p>
</blockquote>
<h3>坑 2：每分钟屏幕闪一下黑框</h3>
<p>自动登录跑起来之后，用户（我）反馈：屏幕偶尔&quot;啪&quot;地闪一个黑框，瞬间消失。</p>
<p>原因是我用计划任务每分钟调 <code>powershell.exe</code>，虽然加了 <code>-WindowStyle Hidden</code>，但这个参数<strong>并不可靠</strong>：Windows 创建控制台窗口的顺序是&quot;<strong>先创建、再按参数隐藏</strong>&quot;，中间那一瞬间窗口是真的会显示出来的。</p>
<p>解决办法是用 <code>wscript</code> 中转一层——VBScript 的 <code>WshShell.Run</code> 可以指定&quot;以隐藏窗口方式创建进程&quot;：</p>
<pre><code class="language-vbs">Set sh = CreateObject("WScript.Shell")
sh.Run "powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File ""C:\...\campus-login.ps1"" -Quiet", 0, False</code></pre>
<p>最后那个 <code>0</code> 就是隐藏窗口。实测采样对比：</p>
<table>
<thead>
<tr>
<th>启动方式</th>
<th>是否出现窗口</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>powershell -WindowStyle Hidden</code></td>
<td><strong>会出现窗口</strong>（就是那个黑框）</td>
</tr>
<tr>
<td><code>wscript → VBS → powershell</code></td>
<td><strong>完全没有窗口</strong> ✅</td>
</tr>
</tbody>
</table>
<hr />
<h2>八、常见问题</h2>
<p><strong>Q：提示&quot;无法连接认证服务器&quot;？</strong><br />
说明还没连上校园网，先连 WiFi 或插网线再运行。</p>
<p><strong>Q：显示已在线，但还是上不了网？</strong><br />
可能是账号在别的设备登录被顶掉了。点网页版里的&quot;注销下线&quot;，等 3 秒再点&quot;立即登录&quot;。</p>
<p><strong>Q：网页版点了没反应 / 一直&quot;正在检测&quot;？</strong><br />
部分浏览器不允许本地文件（<code>file://</code>）请求 http 接口。勾选界面上的「<strong>兼容模式</strong>」再试；或者 Windows 直接用 <code>.bat</code>，手机用书签。</p>
<p><strong>Q：iPhone 上打开 html 只看到一堆代码？</strong><br />
那是「文件」App 的预览，不执行脚本。用上面的 Safari 书签或快捷指令。</p>
<p><strong>Q：移动了文件夹，自动登录失效了？</strong><br />
静默启动器里记的是脚本绝对路径，重新双击一次 <code>设置自动登录.bat</code> 即可。</p>
<p><strong>Q：会被学校发现 / 封号吗？</strong><br />
这只是把你手动点&quot;登录&quot;的动作自动化了，<strong>请求参数和浏览器完全一致</strong>，不涉及破解、不绕过计费。正常使用没有风险。但<strong>别把带密码的链接发到群里</strong>。</p>
<hr />
<h2>九、安全说明</h2>
<ul>
<li>校园网门户本身用 <strong>http 明文</strong>传输密码，这是学校的设计，任何客户端（包括官方客户端）都一样。</li>
<li>Windows 版密码存在你本机 <code>%LOCALAPPDATA%\campus-login\config.json</code>，用 <strong>DPAPI 按当前用户加密</strong>。</li>
<li>网页版的账号密码只存在你自己浏览器的 localStorage 里，不会上传到任何地方。</li>
<li>工具<strong>不含任何人的账号密码</strong>，可以放心转给同学，每人填自己的。</li>
<li>唯一的&quot;明文&quot;场景是 iPhone 书签/快捷指令方案（网址里带密码），介意的话可以在快捷指令里把密码设成运行时输入。</li>
</ul>]]></description>
    <pubDate>Wed, 14 Oct 2026 13:55:13 +0800</pubDate>
    <dc:creator>观众</dc:creator>
    <guid>https://www.pureman.top/25</guid>
</item>
<item>
    <title>Windows 通过USB有线共享网络给vivo手机</title>
    <link>https://www.pureman.top/22</link>
    <description><![CDATA[<blockquote>
<p>文章类型：实操教程 | 适用系统：Windows10/11 + OriginOS（vivo/iQOO） 说明：vivo原生系统<strong>没有电脑USB给手机上网</strong>的功能，自带USB共享是手机流量给电脑。本文使用开源工具 Gnirehtet，借助ADB实现反向USB网络共享。</p>
</blockquote>
<h2>一、原理说明</h2>
<p>Gnirehtet 是开源反向网络共享工具，通过ADB在手机建立虚拟VPN通道，把电脑的网络经由USB数据线转发给手机。</p>
<blockquote>
<p>⚠️ 虚拟VPN仅用于本地流量转发，<strong>不是翻墙代理</strong>，可以放心授权。</p>
</blockquote>
<h2>二、准备工作</h2>
<h3>硬件</h3>
<ol>
<li>支持数据传输的USB数据线（仅充电线无法使用，优先原装线）</li>
<li>Windows电脑，电脑本身可正常上网（有线/WiFi均可）</li>
<li>vivo / iQOO 手机
<blockquote>
<p>建议使用电脑后置 <strong>USB2.0接口</strong>（黑色口），USB3.0容易出现adb识别异常。</p>
</blockquote>
</li>
</ol>
<h3>软件下载（官方地址）</h3>
<ol>
<li>
<p>Gnirehtet（反向网络工具）</p>
<blockquote>
<p>下载地址：<a href="https://github.com/Genymobile/gnirehtet/releases" target="_blank" rel="noopener">https://github.com/Genymobile/gnirehtet/releases</a> 下载文件：<code>gnirehtet-win64.zip</code></p>
</blockquote>
</li>
<li>
<p>Android SDK Platform Tools（ADB工具包）</p>
<blockquote>
<p>下载地址：<a href="https://developer.android.com/studio/releases/platform-tools" target="_blank" rel="noopener">https://developer.android.com/studio/releases/platform-tools</a> 下载文件：<code>platform-tools-latest-windows.zip</code></p>
</blockquote>
</li>
</ol>
<h2>三、文件部署</h2>
<blockquote>
<p>路径<strong>不要使用中文、空格</strong>，推荐放在D盘。</p>
</blockquote>
<ol>
<li>D盘新建文件夹，命名 <code>gnirehtet</code>，路径：<code>D:\gnirehtet</code></li>
<li>解压 <code>gnirehtet-win64.zip</code>，<strong>全部文件提取</strong>到 <code>D:\gnirehtet</code></li>
<li>解压 <code>platform-tools-latest-windows.zip</code>，进入解压后的platform-tools文件夹</li>
<li>复制下面3个文件：
<ul>
<li><code>adb.exe</code></li>
<li><code>AdbWinApi.dll</code></li>
<li><code>AdbWinUsbApi.dll</code></li>
</ul>
</li>
<li>将3个文件粘贴到 <code>D:\gnirehtet</code>，和 <code>gnirehtet-run.cmd</code> 在同一目录。</li>
</ol>
<blockquote>
<p>目录内文件清单：<code>gnirehtet-run.cmd</code>、<code>gnirehtet.apk</code>、<code>adb.exe</code>、<code>AdbWinApi.dll</code>、<code>AdbWinUsbApi.dll</code></p>
</blockquote>
<h2>四、vivo手机开启开发者选项与USB调试</h2>
<ol>
<li>设置 &rarr; 我的设备 &rarr; 更多参数 &rarr; 连续点击<strong>软件版本号7次</strong>，开启开发者选项</li>
<li>返回设置 &rarr; 系统管理 / 其他设置 &rarr; <strong>开发者选项</strong>，打开下面选项：
<ul>
<li>✅ USB调试（必开）</li>
<li>✅ USB安装（必开，用于安装Gnirehtet）</li>
<li>✅ USB调试（安全设置）【新版OriginOS必须开启，否则ADB无法安装应用】</li>
<li>USB连接默认模式：设置为【传输文件(MTP)】</li>
</ul>
</li>
<li>设置 &rarr; 安全 &rarr; <strong>纯净模式，临时关闭</strong>（否则无法通过ADB安装apk）</li>
<li>数据线连接电脑和手机</li>
<li>手机弹窗【允许USB调试吗？】&rarr; 勾选<strong>始终允许此计算机</strong>，点击【允许】</li>
</ol>
<blockquote>
<p>如果没有弹窗：拔线重插、更换USB口，重启开发者选项开关重试。</p>
</blockquote>
<h2>五、验证ADB连通性（前置关键步骤）</h2>
<ol>
<li>打开 <code>D:\gnirehtet</code>，点击文件夹顶部地址栏，输入 <code>cmd</code> 回车，打开命令行窗口</li>
<li>在黑窗口输入命令，回车执行：</li>
</ol>
<pre><code>adb devices
</code></pre>
<h3>结果判断</h3>
<p>✅ 成功示例：</p>
<pre><code>List of devices attached
xxxxxx        device
</code></pre>
<blockquote>
<p><code>xxxxxx</code> 为手机序列号，<code>device</code> 代表电脑成功识别手机，可以继续下一步。</p>
</blockquote>
<p>❌ 常见失败状态</p>
<ul>
<li>空白无设备：数据线仅充电、USB调试未授权、驱动缺失</li>
<li><code>unauthorized</code>：手机未授权这台电脑，拔插数据线，在手机弹窗点允许</li>
<li><code>adb不是内部命令</code>：adb三个文件没有复制到gnirehtet文件夹</li>
</ul>
<blockquote>
<p>✅ 只有 <code>adb devices</code> 正常识别设备，才能继续运行Gnirehtet。</p>
</blockquote>
<h2>六、启动Gnirehtet，USB有线共享电脑网络给手机</h2>
<h3>方式1：一键脚本（推荐）</h3>
<ol>
<li>关闭当前cmd窗口</li>
<li>进入 <code>D:\gnirehtet</code>，<strong>双击 <code>gnirehtet-run.cmd</code></strong></li>
<li>脚本自动执行流程：
<ol>
<li>启动中继服务</li>
<li>通过ADB推送并安装 gnirehtet.apk 到手机</li>
<li>自动启动手机端Gnirehtet程序</li>
</ol>
</li>
<li>手机弹出VPN连接请求 &rarr; <strong>点击允许</strong></li>
<li>手机状态栏出现钥匙（VPN）图标，代表成功。此时手机使用电脑网络上网，不走手机流量。</li>
</ol>
<blockquote>
<p>⚠️<span style="color: #e03e2d;"> 重要：<code>gnirehtet-run.cmd</code> 的黑色命令窗口<strong>不能关闭</strong>，关闭则网络共享立刻断开。</span></p>
</blockquote>
<h3>方式2：手动分步执行（一键脚本报错时备用）</h3>
<p>在 <code>D:\gnirehtet</code> 的cmd窗口，依次输入每行命令，每输完一行按回车：</p>
<pre><code>adb install gnirehtet.apk
adb reverse tcp:31416 tcp:31416
adb shell am start -a com.genymobile.gnirehtet.START -n com.genymobile.gnirehtet/.GnirehtetActivity
</code></pre>
<p>手机弹出VPN授权，点击允许即可。</p>
<h2>七、断开共享</h2>
<ol>
<li>优先关闭cmd黑窗口，Gnirehtet服务停止，VPN自动断开</li>
<li>或者手机通知栏找到VPN，手动断开Gnirehtet VPN</li>
<li>再拔数据线，防止ADB异常残留</li>
</ol>
<blockquote>
<p>下次使用：数据线连接手机电脑，USB调试保持开启，双击 <code>gnirehtet-run.cmd</code> 即可。</p>
</blockquote>
<h2>八、常见报错与故障排查</h2>
<h3>报错1：<code>Cannot start client: Command adb [...] failed: program not found</code></h3>
<p>原因：当前目录缺少adb程序文件。 解决：回到【文件部署】章节，把adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll复制到gnirehtet文件夹。</p>
<h3>报错2：<code>adb devices</code> 看不到设备 / unauthorized</h3>
<ol>
<li>更换支持数据传输的数据线，优先电脑后置USB2.0口</li>
<li>确认开发者选项：USB调试、USB安装、USB调试（安全设置）全部打开</li>
<li>拔插数据线，手机弹窗勾选始终允许并授权USB调试</li>
<li>电脑安装vivo手机助手驱动；设备管理器查看Android设备，消除黄色感叹号</li>
</ol>
<h3>报错3：adb install 安装失败，提示禁止安装应用</h3>
<ol>
<li>关闭手机【纯净模式】</li>
<li>确认打开【USB安装】和【USB调试（安全设置）】</li>
<li>重启手机开发者选项开关</li>
</ol>
<h3>报错4：VPN授权成功，但手机无法上网</h3>
<ol>
<li>确认电脑本身可以正常访问互联网</li>
<li>临时关闭Windows防火墙测试（防火墙可能拦截Gnirehtet流量）</li>
<li>关闭cmd窗口，重新运行脚本</li>
</ol>
<h3>报错5：网络一段时间自动断开</h3>
<ol>
<li>电脑电源管理：设备管理器 &rarr; USB根集线器，取消勾选【允许计算机关闭此设备以节约电源】</li>
<li>更换数据线、更换USB接口</li>
</ol>
<h2>九、限制说明 &amp; 备选方案</h2>
<h3>工具限制</h3>
<ol>
<li>手机重启后USB调试授权会重置，需要重新授权电脑</li>
<li>新版OriginOS对ADB权限管控严格，部分机型会出现安装失败</li>
<li>必须保持cmd窗口打开，一旦关闭共享立即中断</li>
</ol>
<h3>备选方案（更稳定，零折腾）</h3>
<p>台式机购买USB无线网卡（十几元），Windows设置 &rarr; 网络和Internet &rarr; 移动热点，开启WiFi热点。vivo手机WiFi连接热点上网。</p>
<blockquote>
<p>优点：不需要ADB、不需要USB调试，无VPN弹窗，稳定性远高于Gnirehtet。</p>
</blockquote>
<h2>十、卸载Gnirehtet</h2>
<p>手机设置 &rarr; 应用管理，找到 Gnirehtet，卸载应用，VPN授权自动清除。</p>
<h2>快速自检清单</h2>
<ul>
<li>数据线支持数据传输</li>
<li>adb三个文件放入gnirehtet文件夹</li>
<li>手机开发者选项：USB调试、USB安装、USB调试（安全设置）开启，纯净模式关闭</li>
<li><code>adb devices</code> 可识别设备，状态为 <code>device</code></li>
<li>手机USB调试弹窗勾选始终允许并授权</li>
<li>运行脚本后手机VPN弹窗点击允许</li>
</ul>]]></description>
    <pubDate>Thu, 24 Sep 2026 22:53:30 +0800</pubDate>
    <dc:creator>观众</dc:creator>
    <guid>https://www.pureman.top/22</guid>
</item>
<item>
    <title>阿里云服务器 + 宝塔面板 搭建 WebDAV 服务完整教程</title>
    <link>https://www.pureman.top/21</link>
    <description><![CDATA[<!-- ==================== 顶部横幅 ==================== -->
<div class="hero">
<p>适用于阿里云服务器（或其他云服务器），使用宝塔面板搭建支持 HTTPS 的 WebDAV 服务，可作为私人网盘或文件同步服务使用。</p>
</div>
<div class="container"><!-- ==================== 目录 ==================== --><nav class="toc">
<h2>📑 目录</h2>
<ol>
<li><a href="#sec1">准备工作</a></li>
<li><a href="#sec2">申请 SSL 证书（启用 HTTPS）</a></li>
<li><a href="#sec3">确认 Nginx 支持 WebDAV</a></li>
<li><a href="#sec4">配置 Nginx 站点</a></li>
<li><a href="#sec5">创建访问密码</a></li>
<li><a href="#sec6">创建 WebDAV 根目录并设置权限</a></li>
<li><a href="#sec7">重启 Nginx 并验证</a></li>
<li><a href="#sec8">客户端连接</a></li>
<li><a href="#sec9">常见问题与解决方案</a></li>
<li><a href="#sec10">安全提醒</a></li>
<li><a href="#appendix">附录：常用命令速查</a></li>
</ol>
</nav><!-- ==================== 一、准备工作 ==================== -->
<section id="sec1" class="card">
<h2 class="sec-title">一、准备工作</h2>
<h3>1.1 环境要求</h3>
<ul>
<li>一台云服务器（阿里云 / 腾讯云 / 华为云等），已安装宝塔面板</li>
<li>一个已解析到服务器的域名（本教程以 <span class="ph">dav.example.com</span> 为例，请替换为你自己的域名）</li>
<li>服务器操作系统：CentOS / Alibaba Cloud Linux / RHEL 系列</li>
</ul>
<h3>1.2 放行端口</h3>
<p>在开始前，<strong>必须先在云服务商控制台放行端口</strong>：</p>
<div class="table-wrap">
<table>
<tbody>
<tr>
<th>端口</th>
<th>用途</th>
</tr>
<tr>
<td><code>80</code></td>
<td>HTTP 访问</td>
</tr>
<tr>
<td><code>443</code></td>
<td>HTTPS 访问</td>
</tr>
</tbody>
</table>
</div>
<p><strong>操作路径</strong>：阿里云控制台 &rarr; 安全组 &rarr; 配置规则 &rarr; 入方向 &rarr; 添加安全组规则</p>
<div class="callout warn">⚠️ <strong>注意</strong>：宝塔面板自身的「安全」菜单中，也需要放行相应端口，两边缺一不可。</div>
</section>
<!-- ==================== 二、申请 SSL 证书 ==================== -->
<section id="sec2" class="card">
<h2 class="sec-title">二、申请 SSL 证书（启用 HTTPS）</h2>
<ol class="steps">
<li>登录宝塔面板，进入 <strong>「网站」</strong> 页面</li>
<li>点击 <strong>「添加站点」</strong>：
<ul>
<li>域名：填写你的域名（如 <code>www.dav.example.com</code>）</li>
<li>根目录：<code>/WebDAV</code>（建议使用此路径）</li>
<li>PHP 版本：选择任意版本（WebDAV 不需要 PHP，但如果站点有其他用途可按需选择）</li>
</ul>
</li>
<li>站点创建成功后，点击站点 <strong>「设置」</strong> &rarr; <strong>「SSL」</strong></li>
<li>选择 <strong>「Let's Encrypt」</strong>，勾选你的域名，点击 <strong>「申请」</strong></li>
<li>申请成功后，<strong>确保「强制 HTTPS」处于开启状态</strong></li>
</ol>
<div class="callout tip">💡 <strong>提示</strong>：如果申请证书时报 <code>DNS problem: NXDOMAIN</code> 错误，说明域名未解析或解析未生效，请先去域名解析商处添加 A 记录。</div>
</section>
<!-- ==================== 三、确认 Nginx 支持 WebDAV ==================== -->
<section id="sec3" class="card">
<h2 class="sec-title">三、确认 Nginx 支持 WebDAV</h2>
<h3>3.1 检查模块是否已安装</h3>
<p>通过 SSH 连接服务器，执行以下命令：</p>
<pre><code>nginx -V 2&gt;&amp;1 | grep -o with-http_dav_module</code></pre>
<ul>
<li><strong>如果有输出 <code>with-http_dav_module</code></strong>：说明基础模块已安装，继续下一步。</li>
<li><strong>如果没有任何输出</strong>：说明模块未安装，需要重新编译 Nginx。</li>
</ul>
<h3>3.2 如果缺少模块，重新编译 Nginx</h3>
<ol class="steps">
<li>下载 WebDAV 扩展模块：
<pre><code>git clone https://github.com/arut/nginx-dav-ext-module.git /www/server/nginx-dav-ext-module</code></pre>
</li>
<li>在宝塔面板 <strong>「软件商店」</strong> 中，<strong>卸载</strong>当前已安装的 Nginx。</li>
<li>重新点击 Nginx <strong>「安装」</strong>，<strong>务必选择「编译安装」</strong>，在「自定义模块」或「编译参数」中完整填入：
<pre><code>--with-http_dav_module --add-module=/www/server/nginx-dav-ext-module --with-http_ssl_module</code></pre>
</li>
<li>点击提交，等待编译完成（约 15-30 分钟）。</li>
<li>验证安装：
<pre><code>nginx -V 2&gt;&amp;1 | grep -o with-http_dav_module
nginx -V 2&gt;&amp;1 | grep "dav-ext"</code></pre>
<p>两个命令都应有输出。</p>
</li>
</ol>
</section>
<!-- ==================== 四、配置 Nginx 站点 ==================== -->
<section id="sec4" class="card">
<h2 class="sec-title">四、配置 Nginx 站点</h2>
<h3>4.1 修改站点配置文件</h3>
<p>在宝塔面板中，点击站点 <strong>「设置」</strong> &rarr; <strong>「配置文件」</strong>，将以下内容<strong>完整替换</strong>（注意替换其中的域名为你自己的域名）：</p>
<pre><code><span class="cmt"># ============================================================</span>
<span class="cmt"># 请将下方所有 dav.example.com 替换为你的实际域名</span>
<span class="cmt"># ============================================================</span>

server
{
    listen 80;
    listen 443 ssl;
    http2 on;
    server_name dav.example.com www.dav.example.com;   <span class="cmt"># 替换为你的域名</span>
    index index.php index.html index.htm default.php default.htm default.html;
    root /WebDAV;   <span class="cmt"># WebDAV 根目录</span>
    <span class="cmt">#CERT-APPLY-CHECK--START</span>
    include /www/server/panel/vhost/nginx/well-known/dav.example.com.conf;   <span class="cmt"># 替换为你的域名</span>
    <span class="cmt">#CERT-APPLY-CHECK--END</span>
    include /www/server/panel/vhost/nginx/extension/dav.example.com/*.conf;   <span class="cmt"># 替换为你的域名</span>

    <span class="cmt">#SSL-START</span>
    <span class="cmt">#HTTP_TO_HTTPS_START</span>
    set $isRedcert 1;
    if ($server_port != 443) {
        set $isRedcert 2;
    }
    if ( $uri ~ /\.well-known/ ) {
        set $isRedcert 1;
    }
    if ($isRedcert != 1) {
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    <span class="cmt">#HTTP_TO_HTTPS_END</span>
    ssl_certificate    /www/server/panel/vhost/cert/dav.example.com/fullchain.pem;   <span class="cmt"># 替换为你的域名</span>
    ssl_certificate_key    /www/server/panel/vhost/cert/dav.example.com/privkey.pem;   <span class="cmt"># 替换为你的域名</span>
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_tickets on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;
    <span class="cmt">#SSL-END</span>

    <span class="cmt">#ERROR-PAGE-START</span>
    error_page 404 /404.html;
    <span class="cmt">#ERROR-PAGE-END</span>

    <span class="cmt">#PHP-INFO-START</span>
    include enable-php-82.conf;
    <span class="cmt">#PHP-INFO-END</span>

    <span class="cmt">#REWRITE-START</span>
    include /www/server/panel/vhost/rewrite/dav.example.com.conf;   <span class="cmt"># 替换为你的域名</span>
    <span class="cmt">#REWRITE-END</span>

    <span class="cmt"># ============================================================</span>
    <span class="cmt"># 以下为 WebDAV 核心配置（关键！）</span>
    <span class="cmt"># ============================================================</span>

    location / {
        <span class="cmt"># WebDAV 核心指令</span>
        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;
        create_full_put_path on;
        dav_access user:rw group:r all:r;
        client_max_body_size 102400M;

        <span class="cmt"># 密码验证</span>
        auth_basic "WebDAV Login";
        auth_basic_user_file /www/wwwroot/dav.example.com/.htpasswd;   <span class="cmt"># 替换为你的站点目录</span>
    }

    <span class="cmt"># 禁止访问的敏感文件</span>
    location ~* (\.user.ini|\.htaccess|\.htpasswd|\.env.*|\.project|\.bashrc|\.bash_profile|\.bash_logout|\.DS_Store|\.gitignore|\.gitattributes|LICENSE|README\.md|CLAUDE\.md|CHANGELOG\.md|CHANGELOG|CONTRIBUTING\.md|TODO\.md|FAQ\.md|composer\.json|composer\.lock|package(-lock)?\.json|yarn\.lock|pnpm-lock\.yaml|\.\w+~|\.swp|\.swo|\.bak(up)?|\.old|\.tmp|\.temp|\.log|\.sql(\.gz)?|docker-compose\.yml|docker\.env|Dockerfile|\.csproj|\.sln|Cargo\.toml|Cargo\.lock|go\.mod|go\.sum|phpunit\.xml|phpunit\.xml|pom\.xml|build\.gradl|pyproject\.toml|requirements\.txt|application(-\w+)?\.(ya?ml|properties))$
    {
        return 404;
    }

    <span class="cmt"># 禁止访问的敏感目录</span>
    location ~* /(\.git|\.svn|\.bzr|\.vscode|\.claude|\.idea|\.ssh|\.github|\.npm|\.yarn|\.pnpm|\.cache|\.husky|\.turbo|\.next|\.nuxt|node_modules|runtime)/ {
        return 404;
    }

    <span class="cmt"># SSL证书验证目录</span>
    location ~ \.well-known{
        allow all;
    }

    <span class="cmt"># 禁止在证书验证目录放入敏感文件</span>
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null;
    }
    access_log  /www/wwwlogs/dav.example.com.log;   <span class="cmt"># 替换为你的域名</span>
    error_log  /www/wwwlogs/dav.example.com.error.log;   <span class="cmt"># 替换为你的域名</span>
}</code></pre>
<div class="callout warn">⚠️ <strong>注意</strong>：将配置中所有 <code>dav.example.com</code> 替换为你的实际域名。</div>
</section>
<!-- ==================== 五、创建访问密码 ==================== -->
<section id="sec5" class="card">
<h2 class="sec-title">五、创建访问密码</h2>
<h3>5.1 生成密码文件</h3>
<p>WebDAV 需要用户名密码验证。通过 SSH 执行以下命令：</p>
<pre><code><span class="cmt"># 生成加密密码（将「你的密码」替换为你的实际密码）</span>
openssl passwd -apr1 你的密码 &gt; /tmp/pwd.txt

<span class="cmt"># 创建密码文件（将「你的用户名」替换为你的实际用户名）</span>
echo "你的用户名:$(cat /tmp/pwd.txt)" &gt; /www/wwwroot/你的站点目录/.htpasswd

<span class="cmt"># 查看密码文件内容，确认格式正确</span>
cat /www/wwwroot/你的站点目录/.htpasswd</code></pre>
<p>正确的密码文件格式应为：</p>
<pre><code>用户名:$apr1$xxxxx$xxxxxxxxxxxxxxxxxxxxx</code></pre>
<div class="callout tip">💡 <strong>提示</strong>：如果系统提示 <code>openssl: command not found</code>，先安装：<code>yum install -y openssl</code></div>
<h3>5.2 设置密码文件权限</h3>
<pre><code>chown www:www /www/wwwroot/你的站点目录/.htpasswd
chmod 644 /www/wwwroot/你的站点目录/.htpasswd</code></pre>
</section>
<!-- ==================== 六、创建根目录 ==================== -->
<section id="sec6" class="card">
<h2 class="sec-title">六、创建 WebDAV 根目录并设置权限</h2>
<pre><code><span class="cmt"># 创建根目录</span>
mkdir -p /WebDAV

<span class="cmt"># 设置所有者（宝塔 Nginx 运行用户为 www）</span>
chown -R www:www /WebDAV
chmod -R 755 /WebDAV</code></pre>
<div class="callout tip">💡 <code>.user.ini</code> 的权限警告可以忽略，不影响 WebDAV 功能。</div>
</section>
<!-- ==================== 七、重启 Nginx 并验证 ==================== -->
<section id="sec7" class="card">
<h2 class="sec-title">七、重启 Nginx 并验证</h2>
<h3>7.1 测试配置并重启</h3>
<pre><code><span class="cmt"># 测试配置文件语法</span>
nginx -t

<span class="cmt"># 重载 Nginx</span>
nginx -s reload</code></pre>
<p>如果 <code>nginx -t</code> 报错，根据提示修正配置文件后再重试。</p>
<h3>7.2 验证 WebDAV 功能</h3>
<pre><code><span class="cmt"># 测试 PROPFIND（列出文件）</span>
curl -k -u 用户名:密码 -X PROPFIND https://你的域名/ -H "Depth: 1"

<span class="cmt"># 测试上传</span>
echo "Hello WebDAV" &gt; /tmp/hello.txt
curl -k -u 用户名:密码 -T /tmp/hello.txt https://你的域名/hello.txt

<span class="cmt"># 验证上传是否成功</span>
curl -k -u 用户名:密码 -X PROPFIND https://你的域名/ -H "Depth: 1"</code></pre>
<p><strong>成功标志</strong>：返回 <code>HTTP/1.1 207 Multi-Status</code> 和 XML 格式的文件列表，并能看到上传的 <code>hello.txt</code>。</p>
</section>
<!-- ==================== 八、客户端连接 ==================== -->
<section id="sec8" class="card">
<h2 class="sec-title">八、客户端连接</h2>
<h3>8.1 连接信息</h3>
<div class="table-wrap">
<table>
<tbody>
<tr>
<th>项目</th>
<th>内容</th>
</tr>
<tr>
<td><strong>地址</strong></td>
<td><code>https://你的域名/</code></td>
</tr>
<tr>
<td><strong>用户名</strong></td>
<td>你设置的用户名</td>
</tr>
<tr>
<td><strong>密码</strong></td>
<td>你设置的密码</td>
</tr>
</tbody>
</table>
</div>
<h3>8.2 Windows 客户端推荐：RaiDrive</h3>
<ol class="steps">
<li>下载安装 <a href="https://www.raidrive.com/" target="_blank" rel="noopener">RaiDrive</a>（免费版即可）</li>
<li>点击 <strong>「添加」</strong> &rarr; 选择 <strong>「NAS」</strong> &rarr; <strong>「WebDAV」</strong></li>
<li>填写信息：
<div class="table-wrap">
<table>
<tbody>
<tr>
<th>字段</th>
<th>填写内容</th>
</tr>
<tr>
<td><strong>地址</strong></td>
<td><code>你的域名</code>（如 <code>www.dav.example.com</code>，<strong>不要写 <code>https://</code></strong>）</td>
</tr>
<tr>
<td><strong>端口</strong></td>
<td><code>443</code>（保持默认）</td>
</tr>
<tr>
<td><strong>用户名</strong></td>
<td>你设置的用户名</td>
</tr>
<tr>
<td><strong>密码</strong></td>
<td>你设置的密码</td>
</tr>
<tr>
<td><strong>协议</strong></td>
<td>✅ <strong>勾选 HTTPS</strong></td>
</tr>
</tbody>
</table>
</div>
</li>
<li>点击 <strong>「确定」</strong>，即可在「此电脑」中看到映射的磁盘。</li>
</ol>
<h3>8.3 macOS 客户端</h3>
<ol class="steps">
<li>打开 <strong>「访达」</strong></li>
<li>顶部菜单栏 &rarr; <strong>「前往」</strong> &rarr; <strong>「连接服务器」</strong></li>
<li>输入：<code>https://你的域名/</code></li>
<li>点击连接，输入用户名和密码</li>
</ol>
<h3>8.4 手机客户端</h3>
<ul>
<li><strong>Android</strong>：ES文件浏览器、Solid Explorer</li>
<li><strong>iOS</strong>：Documents、FileExplorer</li>
</ul>
</section>
<!-- ==================== 九、常见问题 ==================== -->
<section id="sec9" class="card">
<h2 class="sec-title">九、常见问题与解决方案</h2>
<div class="table-wrap">
<table>
<tbody>
<tr>
<th>问题现象</th>
<th>可能原因</th>
<th>解决方法</th>
</tr>
<tr>
<td><code>405 Not Allowed</code></td>
<td>Nginx 缺少 WebDAV 模块或配置缺失</td>
<td>确认 <code>dav_methods</code> 和 <code>dav_ext_methods</code> 已正确配置；检查是否缺少 <code>dav-ext</code> 模块</td>
</tr>
<tr>
<td><code>500 Internal Server Error</code></td>
<td>密码文件格式错误或路径不对</td>
<td>使用 <code>openssl passwd</code> 重新生成密码文件，确保格式为 <code>用户名:加密密码</code></td>
</tr>
<tr>
<td><code>401 Unauthorized</code></td>
<td>用户名/密码错误或客户端填写方式不对</td>
<td>用 <code>curl</code> 测试验证密码是否正确；检查客户端是否在地址中误写了 <code>https://</code></td>
</tr>
<tr>
<td><code>Connection refused</code></td>
<td>端口未放行</td>
<td>检查云服务商安全组 + 宝塔「安全」菜单，确保 80/443 端口已放行</td>
</tr>
<tr>
<td>证书申请失败 <code>NXDOMAIN</code></td>
<td>域名未解析</td>
<td>去域名解析商添加 A 记录，指向服务器 IP</td>
</tr>
<tr>
<td><code>conflicting server name</code> 警告</td>
<td>多个站点绑定了同一域名</td>
<td>可在宝塔中检查其他站点配置，无影响可忽略</td>
</tr>
</tbody>
</table>
</div>
</section>
<!-- ==================== 十、安全提醒 ==================== -->
<section id="sec10" class="card">
<h2 class="sec-title">十、安全提醒</h2>
<ol>
<li><strong>使用复杂密码</strong>：建议使用大小写字母 + 数字 + 特殊字符的组合</li>
<li><strong>启用 HTTPS</strong>：本教程已配置 SSL 证书，传输过程加密，防止密码被窃听</li>
<li><strong>定期更新证书</strong>：Let's Encrypt 证书有效期为 90 天，宝塔面板会自动续期</li>
<li><strong>限制访问 IP</strong>（可选）：如果只有自己使用，可在 Nginx 配置中添加 <code>allow 你的IP; deny all;</code> 限制来源 IP</li>
</ol>
</section>
<!-- ==================== 附录 ==================== -->
<section id="appendix" class="card">
<h2 class="sec-title">附录：常用命令速查</h2>
<pre><code><span class="cmt"># 检查 WebDAV 模块是否安装</span>
nginx -V 2&gt;&amp;1 | grep -o with-http_dav_module

<span class="cmt"># 检查 dav-ext 扩展模块</span>
nginx -V 2&gt;&amp;1 | grep "dav-ext"

<span class="cmt"># 测试 Nginx 配置语法</span>
nginx -t

<span class="cmt"># 重载 Nginx 配置</span>
nginx -s reload

<span class="cmt"># 重新生成密码文件</span>
openssl passwd -apr1 新密码 &gt; /tmp/pwd.txt
echo "用户名:$(cat /tmp/pwd.txt)" &gt; /www/wwwroot/你的站点目录/.htpasswd

<span class="cmt"># 验证 WebDAV 服务</span>
curl -k -u 用户名:密码 -X PROPFIND https://你的域名/ -H "Depth: 1"

<span class="cmt"># 上传测试文件</span>
curl -k -u 用户名:密码 -T /tmp/hello.txt https://你的域名/hello.txt

<span class="cmt"># 查看 Nginx 错误日志</span>
tail -20 /www/wwwlogs/你的域名.error.log</code></pre>
</section>
<p class="footer-note">📌 教程完成 &middot; 按照以上步骤操作，你的云服务器即可成功搭建 WebDAV 服务，作为私人网盘或文件同步服务使用。<br>如有问题，可根据「常见问题」表格逐一排查。</p>
</div>]]></description>
    <pubDate>Sun, 30 Aug 2026 06:28:01 +0800</pubDate>
    <dc:creator>观众</dc:creator>
    <guid>https://www.pureman.top/21</guid>
</item>
<item>
    <title>为Emlog添加留言板功能</title>
    <link>https://www.pureman.top/8</link>
    <description><![CDATA[<h2>留言板功能</h2>
<ul>
<li>仅登录用户可留言</li>
<li>支持显示用户昵称和头像</li>
<li>支持【所有人可见】、【登录用户可见】、【仅管理员可见】三种可见模式</li>
<li>【仅管理员可见】时必须填写联系方式，另外两种可见方式不强制</li>
<li>后台可对留言进行【标记已读】、【收藏】、【删除】操作（但不支持【标记未读】)</li>
</ul>
<h2>添加教程</h2>
<ol>
<li style="font-size: 15px;"><span style="font-size: 15px;"><span style="font-weight: normal; line-height: 1.5;">下载<span style="color: #000000;"> </span></span><span style="color: #3598db;"><a style="color: #3598db;" href="https://wwbqh.lanzoum.com/iNYry3nhjqpe" target="_blank" rel="noopener"><span style="line-height: 1.5;">[guestbook.zip]</span></a><span style="font-weight: normal;"> </span></span><span style="font-weight: normal; line-height: 1.5;">后解压，将 guestbook.php 添加至 Emlog 根目录</span></span></li>
<li style="font-size: 15px;"><span style="font-size: 15px; font-weight: normal;">打开 Emlog 管理中心-外观-导航-自定义导航 按以下信息填写：</span></li>
</ol>
<table style="border-collapse: collapse; display: table; width: 41.7915%; height: 78.6px;" border="1"><colgroup><col style="width: 29.3303%;"><col style="width: 70.6697%;"></colgroup>
<tbody>
<tr style="height: 39.3px;">
<td><span style="line-height: 1.5; font-size: 15px;">导航名称</span></td>
<td><span style="line-height: 1.5; font-size: 15px;">留言板</span></td>
</tr>
<tr style="height: 39.3px;">
<td><span style="line-height: 1.5; font-size: 15px;">导航网址</span></td>
<td><span style="line-height: 1.5; font-size: 15px;">http://你的域名/guestbook.php</span></td>
</tr>
</tbody>
</table>
<h2>效果展示</h2>
<p>参考本网站【<span style="color: #e03e2d;"><a style="color: #e03e2d;" href="/guestbook.php" target="_blank" rel="noopener">留言板</a></span>】</p>]]></description>
    <pubDate>Fri, 17 Apr 2026 04:23:36 +0800</pubDate>
    <dc:creator>观众</dc:creator>
    <guid>https://www.pureman.top/8</guid>
</item>
<item>
    <title>下雪特效插件</title>
    <link>https://www.pureman.top/6</link>
    <description><![CDATA[<p style="text-indent: 2em;">因为我觉得网站太过单调了，所以借助AI制作了一款可以为网站添加下雪特效的插件。</p>
<h3>1. 可自定义：</h3>
<ul>
<li>颜色</li>
<li>雪花图案，支持符号、汉字、字母等</li>
<li>雪花大小</li>
<li>雪花数量</li>
<li>雪花下落速度</li>
</ul>
<h3>2. 使用方法</h3>
<p style="text-indent: 2em;">管理中心-插件-安装插件</p>
<h3>3. 下载</h3>
<p style="text-indent: 2em;"><a href="/?resource_alias=NpLFvob3nZcE7ycz" target="_blank" rel="noopener">snow.zip</a></p>
<h3>4.效果展示</h3>
<p style="text-indent: 2em;">无</p>]]></description>
    <pubDate>Fri, 17 Apr 2026 01:34:46 +0800</pubDate>
    <dc:creator>观众</dc:creator>
    <guid>https://www.pureman.top/6</guid>
</item>
</channel>
</rss>