<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Sep&#39;s Blog</title>
  
  
  <link href="https://blog.mc-sep.top/atom.xml" rel="self"/>
  
  <link href="https://blog.mc-sep.top/"/>
  <updated>2026-04-11T11:22:47.636Z</updated>
  <id>https://blog.mc-sep.top/</id>
  
  <author>
    <name>MCSep</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>还没有域名建站？2026年最新免费域名推荐</title>
    <link href="https://blog.mc-sep.top/post/erg8.html"/>
    <id>https://blog.mc-sep.top/post/erg8.html</id>
    <published>2026-04-13T10:58:51.000Z</published>
    <updated>2026-04-11T11:22:47.636Z</updated>
    
    <content type="html"><![CDATA[<p>现在都6202年了，你不会还在用古老的 xxx.github.io 吧？</p><p>本期教程我将带你注册免费的二级域名！</p><h2 id="小介绍：什么是DNS？"><a href="#小介绍：什么是DNS？" class="headerlink" title="小介绍：什么是DNS？"></a>小介绍：什么是DNS？</h2><p>DNS 是互联网的域名系统，作用是把好记的网址翻译成电脑能识别的 IP 地址。像 Cloudflare 这类专业 DNS 服务，不仅解析速度快，还采用全球节点就近响应，让网页加载更流畅。同时它具备加密解析、防劫持、防 DDoS 攻击等安全能力，能保护上网隐私和域名安全，既适合个人用来提升上网体验，也能为网站提供稳定可靠的解析与防护，是现代网络中重要的基础服务。</p><p>为什么要绑定到Cloudflare？因为这样子你可以设置很多记录。拿我的mc-sep.top举例，本来只能用MC-Sep.top，但是托管后，就可以添加记录了，比如blog.mc-sep.top，可以添加分支。</p><p>好了，现在开始正片吧！</p><h2 id="提示：如何将域名绑定到其他DNS代理商"><a href="#提示：如何将域名绑定到其他DNS代理商" class="headerlink" title="提示：如何将域名绑定到其他DNS代理商"></a>提示：如何将域名绑定到其他DNS代理商</h2><p>你懂的就直接跳过就行，这里以Cloudflare为例。</p><ol><li><p>注册Cloudflare账号。（<a href="https://dash.cloudflare.com/%EF%BC%89">https://dash.cloudflare.com/）</a></p></li><li><p>在Dashboard选择添加-&gt;连接域。</p></li></ol><p><img src="https://img.mc-sep.top/i/a1dbc555-6fb5-499c-b8e8-277a0b6a3876.webp" alt="image"></p><ol start="3"><li>输入你刚注册的域名。点击下一步。</li></ol><p><img src="https://img.mc-sep.top/i/5b714ebc-f79f-476b-afd9-632a6bf606c2.webp" alt="image"></p><p>提示：如果出现报错：<strong>Please ensure you are providing the root domain and not any subdomains (e.g., example.com, not subdomain.example.com)</strong> 这就意味着你注册的 这个根域名 已经在cloudflare被注册了，你需要换一家DNS代理商。</p><ol start="4"><li><p>选择FREE计划，下一步。</p></li><li><p>在添加记录那个页面直接点下一步，后续再添加记录，前往激活。</p></li><li><p>下个页面，你会看到他给你的两个ns服务器，是类似长这样的：</p></li></ol><p>ns1.example.com</p><p>ns2.example.com</p><ol start="7"><li><p>回到你注册域名的地方，点击“DNS服务器”（或NS服务器等类似的按钮），把其他NS服务器全部删掉，粘贴Cloudflare给你的两个ns服务器，点击应用。</p></li><li><p>现在可以耐心等待了。不出意外的话，等待几分钟你就会看到域名已经被Cloudflare托管。</p></li><li><p>如果后续你的域名出现访问时”重定向次数过多“的问题，请前往Cloudflare-&gt;你注册的域名的管理-&gt;SSL&#x2F;TLS中，把“灵活”改为其他的（完全&#x2F;完全严格&#x2F;关闭）</p></li></ol><p><img src="https://img.mc-sep.top/i/fd6cf11d-d73f-411f-acfd-f5a874a8a651.webp" alt="image"></p><p>其他优秀的DNS：</p><p>Google Public DNS | <a href="https://developers.google.com/speed/public-dns">https://developers.google.com/speed/public-dns</a><br>Quad9 | <a href="https://www.quad9.net/">https://www.quad9.net/</a><br>OpenDNS (Cisco) | <a href="https://www.opendns.com/">https://www.opendns.com/</a><br>AdGuard DNS | <a href="https://adguard-dns.io/">https://adguard-dns.io/</a><br>NextDNS | <a href="https://nextdns.io/">https://nextdns.io/</a></p><h2 id="1-DNSHE"><a href="#1-DNSHE" class="headerlink" title="1. DNSHE"></a>1. DNSHE</h2><p>官网：<a href="https://www.dnshe.com/">https://www.dnshe.com/</a></p><p>可注册的域名（有时候会变）：cc.cd&#x2F;cn.mt(需要邀请码，不可绑CF)&#x2F;ccwu.cc&#x2F;bbroot.com(需要邀请码)</p><p>注册方法：</p><ol><li>访问DNSHE官网，选择免费注册。</li><li>在下一个页面里填写个人信息。</li></ol><p><code>Tips: 现在他们只支持Google, Microsoft, Tencent(QQ), NetEase(163,126), Apple, Yahoo, Sina, Sohu, and others注册商的邮箱</code></p><ol start="3"><li>收取验证码验证账号，登录</li><li>登陆后在上面的图标那里换成中文。</li><li>在左侧选择“免费域名”。</li></ol><p><img src="https://img.mc-sep.top/i/5916fe0b-b0b6-4259-917e-8d7bc567868e.webp" alt="image"></p><ol start="6"><li><p>进入新的界面（<a href="https://my.dnshe.com/index.php?m=domain_hub%EF%BC%89%EF%BC%8C%E9%80%89%E6%8B%A9%E2%80%9C%E6%B3%A8%E5%86%8C%E6%96%B0%E5%9F%9F%E5%90%8D%E2%80%9D%E3%80%82">https://my.dnshe.com/index.php?m=domain_hub），选择“注册新域名”。</a></p></li><li><p>输入你想注册的域名。</p></li><li><p>更改DNS解析商。</p></li><li><p>如果你觉得5个不够，填写我的邀请码，可以增加1个！（位置：免费域名-&gt;邀请好友解锁额度-&gt;使用他人邀请码，填写<strong>ZU9EF99929</strong>。（域名注册那个我就不给了，怕有人乱搞）</p></li></ol><p>续费方法：可用日期&lt;&#x3D;180天时，访问<a href="https://my.dnshe.com/index.php?m=domain_hub%E7%BB%AD%E8%B4%B9%E3%80%82">https://my.dnshe.com/index.php?m=domain_hub续费。</a></p><p><code>Tips: 有些域名是可以注册3650天的！</code></p><p><img src="https://img.mc-sep.top/i/a4c912b3-7ab3-4e1a-b09d-8cb1a04304b0.webp" alt="image"></p><p>到这里你已经有4个选择了，别急，还有！</p><h2 id="2-Stackryze"><a href="#2-Stackryze" class="headerlink" title="2. Stackryze"></a>2. Stackryze</h2><p>官网：<a href="https://domain.stackryze.com/">https://domain.stackryze.com/</a></p><p>可注册：indevs.in&#x2F;sryze.cc</p><p>注册方式是差不多的。只不过他最多可以注册3个域名（2个免费+1个Github加Star）</p><h2 id="3-Digitalplat"><a href="#3-Digitalplat" class="headerlink" title="3. Digitalplat"></a>3. Digitalplat</h2><p>官网：<a href="https://dash.domain.digitalplat.org/">https://dash.domain.digitalplat.org/</a></p><p>可注册：us.kg(要3$)&#x2F;xx.kg(也要3$)&#x2F;qzz.io&#x2F;qd.je&#x2F;dpdns.org</p><p><code>Tips: us.kg和xx.kg因为被滥用了，很多非法网站用这个域名，损坏了他们的声誉，所以现在要钱了...</code></p><p>注意：</p><ul><li><p>这个网站对人物身份比较严格，所以你可以访问这个网站来生成假的身份绕过检测：<a href="https://www.fakepersongenerator.com/">https://www.fakepersongenerator.com/</a></p></li><li><p>这个网站最多创建一个免费域名，建议换多个邮箱来注册。</p></li></ul><h2 id="4-Willin-Domains"><a href="#4-Willin-Domains" class="headerlink" title="4. Willin Domains"></a>4. Willin Domains</h2><p>官网：<a href="https://js.cool/">https://js.cool/</a></p><p>可注册域名：js.cool&#x2F;憨憨.我爱你&#x2F;v0.chat&#x2F;css.fund&#x2F;kaiyuan.fund（都不可以托管到CF，要更改ns服务器要提issue，可参考上面提到的其他dns代理商）</p><p>普通用户可以注册0个，Follow可以注册5个，VIP可以注册20个。</p><h2 id="5-其他小众的！"><a href="#5-其他小众的！" class="headerlink" title="5.其他小众的！"></a>5.其他小众的！</h2><h3 id="Cloudns"><a href="#Cloudns" class="headerlink" title="Cloudns"></a>Cloudns</h3><p>官网：<a href="https://cloudns.net/">https://cloudns.net</a></p><p>可注册：abrdns.com &#x2F;cloud-ip.cc</p><p>是否可以托管到cloudflare：不可以</p><h3 id="Zabc"><a href="#Zabc" class="headerlink" title="Zabc"></a>Zabc</h3><p>官网：zoneabc.net</p><p>可注册：webm.cc &#x2F; zabc.net &#x2F; sylu.cc &#x2F; sylu.net &#x2F; acg.rest &#x2F; vvvv.ee &#x2F; ctrl.li</p><p>是否可以托管到cloudflare：不可以</p><h3 id="FreeDNS"><a href="#FreeDNS" class="headerlink" title="FreeDNS"></a>FreeDNS</h3><p>官网：<a href="https://freedns.afraid.org/">https://freedns.afraid.org/</a></p><p>可注册：bot.nu &#x2F; ftp.sh &#x2F; soon.it &#x2F; v0x.eu 等</p><p>是否可以托管到cloudflare：不可以</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><table><thead><tr><th align="center"></th><th align="center">DNSHE</th><th align="center">Stackryze</th><th align="center">Digitalplat</th><th align="center">Willin Domains</th><th align="center">Cloudns</th><th align="center">Zabc</th><th align="center">FreeDNS</th></tr></thead><tbody><tr><td align="center">可注册种类</td><td align="center">4（有时变化）</td><td align="center">2</td><td align="center">5</td><td align="center">5</td><td align="center">2</td><td align="center">7</td><td align="center">4+</td></tr><tr><td align="center">是否可托管cf</td><td align="center">大部分√</td><td align="center">√</td><td align="center">√</td><td align="center">×</td><td align="center">×</td><td align="center">×</td><td align="center">×</td></tr><tr><td align="center">是否能改NS</td><td align="center">√</td><td align="center">√</td><td align="center">√</td><td align="center">要申请</td><td align="center">×</td><td align="center">×</td><td align="center">×</td></tr><tr><td align="center">限制注册数</td><td align="center">5+5</td><td align="center">2+1</td><td align="center">1</td><td align="center">0+5+15</td><td align="center">未知</td><td align="center">未知</td><td align="center">未知</td></tr><tr><td align="center">时间</td><td align="center">1年&#x2F;10年（可续费）</td><td align="center">1年（可续费）</td><td align="center">1年（可续费）</td><td align="center">永久</td><td align="center">永久</td><td align="center">永久</td><td align="center">永久</td></tr><tr><td align="center">推荐指数（1-5）</td><td align="center">5</td><td align="center">4</td><td align="center">4</td><td align="center">3</td><td align="center">1</td><td align="center">1</td><td align="center">2</td></tr></tbody></table>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;现在都6202年了，你不会还在用古老的 xxx.github.io 吧？&lt;/p&gt;
&lt;p&gt;本期教程我将带你注册免费的二级域名！&lt;/p&gt;
&lt;h2 id=&quot;小介绍：什么是DNS？&quot;&gt;&lt;a href=&quot;#小介绍：什么是DNS？&quot; class=&quot;headerlink&quot; title=&quot;</summary>
      
    
    
    
    <category term="域名" scheme="https://blog.mc-sep.top/categories/%E5%9F%9F%E5%90%8D/"/>
    
    
    <category term="免费域名" scheme="https://blog.mc-sep.top/tags/%E5%85%8D%E8%B4%B9%E5%9F%9F%E5%90%8D/"/>
    
    <category term="域名" scheme="https://blog.mc-sep.top/tags/%E5%9F%9F%E5%90%8D/"/>
    
  </entry>
  
  <entry>
    <title>搞机日记2——华为儿童手表3X优化</title>
    <link href="https://blog.mc-sep.top/post/83sq.html"/>
    <id>https://blog.mc-sep.top/post/83sq.html</id>
    <published>2026-01-03T00:15:00.000Z</published>
    <updated>2026-01-03T05:06:26.046Z</updated>
    
    <content type="html"><![CDATA[<p>续接上文，我们Root失败了。至于网上（酷安）上有大佬说可以拆机进9008模式强制解锁bl，但是我并不想拆。所以我们可以想象该如何优化。</p><h1 id="一：使用无障碍"><a href="#一：使用无障碍" class="headerlink" title="一：使用无障碍"></a>一：使用无障碍</h1><p>无障碍权限对于一个手表来说至关重要。但是我们的设置…</p><p><img src="https://youke3.picui.cn/s1/2026/01/03/69589e4adb1b3.png"></p><p>原有的设置(com.android.settings)被换成了这个：com.huawei.kidwatch.watchsettings。按正常的方法应该行不通了。这时候我们要用这个<br>工具：</p><p><img src="https://youke3.picui.cn/s1/2026/01/03/69589ed74fc7b.png"></p><p>这个软件可以在<a href="https://momoi.top/">小桃应用商店</a>找到。</p><p>初次使用需要授权（可用Root、Shizuku和ADB），重启后照样生效。所以我们可以看到授权的权限：</p><p><img src="https://youke3.picui.cn/s1/2026/01/03/69589f6575c87.png"></p><p>Tips:旁边的小锁是保活功能，保证这个无障碍不被某些东西卡没。</p><h1 id="二、安装优化应用"><a href="#二、安装优化应用" class="headerlink" title="二、安装优化应用"></a>二、安装优化应用</h1><p>可以安装这些应用提升体验：</p><h2 id="1-流体手势导航"><a href="#1-流体手势导航" class="headerlink" title="1. 流体手势导航"></a>1. 流体手势导航</h2><p>可以完美复刻高版本安卓的手势导航。只需要无障碍和悬浮窗授权。</p><p>这里说明一下，我们需要使用<strong>adb shell appops set</strong>命令授权。</p><h3 id="一、adb-shell-appops-set-核心用法"><a href="#一、adb-shell-appops-set-核心用法" class="headerlink" title="一、adb shell appops set 核心用法"></a>一、adb shell appops set 核心用法</h3><p>appops set 是 Android 中用于设置应用操作权限的底层命令，核心语法极简：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">adb shell appops <span class="built_in">set</span> &lt;应用包名&gt; &lt;操作码&gt; &lt;权限状态&gt;</span><br></pre></td></tr></table></figure><ul><li>应用包名：如 com.tombayley.statusbar、com.android.settings；</li><li>操作码：对应具体权限的系统标识（如下方清单）；</li><li>权限状态：仅 3 种可选值<br>allow：允许<br>deny：拒绝<br>ignore：忽略（部分权限生效）</li></ul><h3 id="二、常用-appops-操作码清单（通用版）"><a href="#二、常用-appops-操作码清单（通用版）" class="headerlink" title="二、常用 appops 操作码清单（通用版）"></a>二、常用 appops 操作码清单（通用版）</h3><table><thead><tr><th>操作码</th><th>对应权限说明</th></tr></thead><tbody><tr><td><code>ACCESS_COARSE_LOCATION</code></td><td>访问粗略位置（网络定位）</td></tr><tr><td><code>ACCESS_FINE_LOCATION</code></td><td>访问精确位置（GPS）</td></tr><tr><td><code>ACCESS_BACKGROUND_LOCATION</code></td><td>后台访问位置</td></tr><tr><td><code>CAMERA</code></td><td>使用摄像头</td></tr><tr><td><code>MICROPHONE</code></td><td>使用麦克风</td></tr><tr><td><code>READ_CONTACTS</code></td><td>读取联系人</td></tr><tr><td><code>WRITE_CONTACTS</code></td><td>修改联系人</td></tr><tr><td><code>READ_EXTERNAL_STORAGE</code></td><td>读取外部存储</td></tr><tr><td><code>WRITE_EXTERNAL_STORAGE</code></td><td>写入外部存储</td></tr><tr><td><code>POST_NOTIFICATIONS</code></td><td>发送通知（Android 13+）</td></tr><tr><td><code>WRITE_SETTINGS</code></td><td>修改系统设置</td></tr><tr><td><code>IGNORE_BATTERY_OPTIMIZATIONS</code></td><td>忽略电池优化</td></tr><tr><td><code>RUN_IN_BACKGROUND</code></td><td>后台运行</td></tr><tr><td><code>ACCESS_NOTIFICATIONS</code></td><td>访问通知栏</td></tr><tr><td><code>VIBRATE</code></td><td>使用振动</td></tr><tr><td><code>WAKE_LOCK</code></td><td>唤醒锁（保持屏幕&#x2F;CPU 唤醒）</td></tr><tr><td><code>BLUETOOTH</code></td><td>使用蓝牙</td></tr><tr><td><code>INTERNET</code></td><td>访问网络（部分系统需手动设置）</td></tr></tbody></table><p>补充说明：</p><ol><li>可通过 adb shell appops list 查看当前设备支持的所有操作码；</li><li>部分厂商定制系统（小米 &#x2F; 华为等）会新增专属操作码，以上为通用核心清单；</li><li>高版本 Android（11+）部分权限（如存储）已被 MANAGE_EXTERNAL_STORAGE 替代。</li></ol><p>回到正题。开启后的效果：</p><p><img src="https://youke3.picui.cn/s1/2026/01/03/6958a18a63c0d.png"></p><h2 id="2-Next锁屏-Mi-Control-Center"><a href="#2-Next锁屏-Mi-Control-Center" class="headerlink" title="2. Next锁屏+Mi Control Center"></a>2. Next锁屏+Mi Control Center</h2><p>帮助恢复锁屏和下拉通知栏。</p><p>效果：</p><ol><li>锁屏：</li></ol><p><img src="https://youke3.picui.cn/s1/2026/01/03/6958a20d9ab01.png"></p><ol start="2"><li>下拉通知栏：</li></ol><p><img src="https://youke3.picui.cn/s1/2026/01/03/6958a255db2f9.png"></p><h2 id="3-Button-Mapper"><a href="#3-Button-Mapper" class="headerlink" title="3. Button Mapper"></a>3. Button Mapper</h2><p>可以修改FUN键的功能（电源键改不了）：</p><p><img src="https://youke3.picui.cn/s1/2026/01/03/6958a2c78be6b.png"></p><p>可以按照我这么设置：</p><p><img src="https://youke3.picui.cn/s1/2026/01/03/6958a3094dc20.png"></p><h1 id="三：完成！"><a href="#三：完成！" class="headerlink" title="三：完成！"></a>三：完成！</h1><p>你的手表肯定比之前耐用！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;续接上文，我们Root失败了。至于网上（酷安）上有大佬说可以拆机进9008模式强制解锁bl，但是我并不想拆。所以我们可以想象该如何优化。&lt;/p&gt;
&lt;h1 id=&quot;一：使用无障碍&quot;&gt;&lt;a href=&quot;#一：使用无障碍&quot; class=&quot;headerlink&quot; title=&quot;一：</summary>
      
    
    
    
    <category term="Android" scheme="https://blog.mc-sep.top/categories/Android/"/>
    
    
    <category term="Android 8" scheme="https://blog.mc-sep.top/tags/Android-8/"/>
    
  </entry>
  
  <entry>
    <title>Windows实用软件推荐</title>
    <link href="https://blog.mc-sep.top/post/dw23.html"/>
    <id>https://blog.mc-sep.top/post/dw23.html</id>
    <published>2025-12-20T22:22:00.000Z</published>
    <updated>2026-02-25T10:51:04.150Z</updated>
    
    <content type="html"><![CDATA[<h2 id="1-Everything"><a href="#1-Everything" class="headerlink" title="1. Everything"></a>1. Everything</h2><p>你是否在为系统自带的搜索太慢而烦恼？又或者找不到你保存的文件？没关系，Everything会出手！Everything是一款小巧便携的搜索工具，占用小但是速度明显提升！</p><p>官图：</p><p><img src="https://img.mc-sep.top/i/bec4a684-945a-4315-b6e9-b0d862fa6d4b.webp"></p><p>下载地址：<a href="https://cloud.mc-sep.top/s/BkFW">https://cloud.mc-sep.top/s/BkFW</a></p><p>密码：1145</p><h2 id="2-Geek"><a href="#2-Geek" class="headerlink" title="2. Geek"></a>2. Geek</h2><p>流氓软件的克星！在Geek里，你可以快速解除软件占用，强力卸载软件，系统软件也可！</p><p>官图：</p><p><img src="https://img.mc-sep.top/i/302f4103-4f88-46cb-b6f8-630c654fee1e.webp"></p><p>下载地址：<a href="https://cloud.mc-sep.top/s/aZsx">https://cloud.mc-sep.top/s/aZsx</a></p><p>密码：9178</p><h2 id="3-SpaceSniffer"><a href="#3-SpaceSniffer" class="headerlink" title="3. SpaceSniffer"></a>3. SpaceSniffer</h2><p>利用这个软件你可以便携的找到电脑里的大文件，找到占用多的源头！</p><p>官图：</p><p><img src="https://img.mc-sep.top/i/8965f9b6-a53b-47dc-a880-143ee22ecc13.webp"></p><p>下载地址：<a href="https://pan.quark.cn/s/ee2104b6863a#/list/share">Click</a></p><p>(这是汉化版的，网上没有别的版本了…)</p><h2 id="4-Bongocat"><a href="#4-Bongocat" class="headerlink" title="4. Bongocat"></a>4. Bongocat</h2><p>一个会在桌面上生成小猫的工具！小猫的动作和你使用鼠标、键盘的动作一样！主播必用！</p><p>官图：</p><p><img src="https://img.mc-sep.top/i/f59d9386-5c13-4c70-aac8-796465a724da.webp"></p><p>下载地址：<a href="https://cloud.mc-sep.top/s/dyCG">https://cloud.mc-sep.top/s/dyCG</a></p><p>密码：6666</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;1-Everything&quot;&gt;&lt;a href=&quot;#1-Everything&quot; class=&quot;headerlink&quot; title=&quot;1. Everything&quot;&gt;&lt;/a&gt;1. Everything&lt;/h2&gt;&lt;p&gt;你是否在为系统自带的搜索太慢而烦恼？又或者找不到你保存的</summary>
      
    
    
    
    <category term="Windows" scheme="https://blog.mc-sep.top/categories/Windows/"/>
    
    
    <category term="Windows" scheme="https://blog.mc-sep.top/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>搞机日记——华为儿童手表3X破解</title>
    <link href="https://blog.mc-sep.top/post/3rhi.html"/>
    <id>https://blog.mc-sep.top/post/3rhi.html</id>
    <published>2025-08-26T01:18:00.000Z</published>
    <updated>2026-02-25T11:56:43.129Z</updated>
    
    <content type="html"><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>有一段时间没有更新了。学业问题，好久才能更新一次。对不起大家！</p><p>回到正题。今天，我偶然发现了家里的老古董：</p><p><img src="https://img.mc-sep.top/i/f44c8006-96a2-4211-aa4d-7d7546ef146e.webp"><br>是的，一个特别古老的手表，而今天，我尝试破解这个手表。</p><h2 id="实操"><a href="#实操" class="headerlink" title="实操"></a>实操</h2><h3 id="破解目标"><a href="#破解目标" class="headerlink" title="破解目标"></a>破解目标</h3><ol><li>打开并成功进入adb调试</li><li>自由安装软件</li><li>解除BL锁，Root</li></ol><h3 id="材料"><a href="#材料" class="headerlink" title="材料"></a>材料</h3><ul><li>一个脑子</li><li>一个华为儿童手表3X</li><li>安卓手表ADB实用工具箱（或者WearOS）</li><li>一根数据线（注意，是带数据传输的，而不是充电线）</li><li>手机上安装MT管理器</li></ul><h3 id="开始肘击"><a href="#开始肘击" class="headerlink" title="开始肘击"></a>开始肘击</h3><ol><li><p>老样子看看手表的CPU品牌和安卓版本<br><img src="https://img.mc-sep.top/i/a6934227-56c8-4f95-bae2-7501b40f3084.webp"></p></li><li><p>这个CPU已经很老了，3700多岁了（口误）<br><img src="https://img.mc-sep.top/i/48394080-0074-4689-9879-df6d5e39411e.webp"></p></li><li><p>打开设置，连续点击版本号，进入开发者模式。<br><img src="https://img.mc-sep.top/i/5636a4a6-60ae-4d60-825b-3bd8911acbae.webp"><br><img src="https://img.mc-sep.top/i/6880a5c9-471d-4006-8f76-467e19f6f6c4.webp"></p></li><li><p>打开安卓手表ADB实用工具箱（后简称ADB工具），在手表上选择PTP模式，允许USB调试，出现这个页面就成功了<br><img src="https://img.mc-sep.top/i/7e9d3319-37c7-410b-9645-5bd86a514bcf.webp"><br>至此，我们的目标1：打开并成功进入adb调试已经顺利完成了，开始我们的下一个目标。</p></li><li><p>打开ADB工具，修改一下DPI，以后方便操作。（我建议改成200)<br><img src="https://img.mc-sep.top/i/12ca1ef6-4c7c-434c-a37f-248d3dbe077d.webp"></p></li><li><p>打开你的浏览器，打开<a href="https://vincent8623.lanzn.com/b00zti91i">Wear应用库网页版</a>来下载应用（这里下载过了，不在演示）</p></li><li><p>我们选择安装自定义APK，选择文件后安装。<br><img src="https://img.mc-sep.top/i/3b246eef-0720-423a-90e5-cface2545059.webp"><br><img src="https://img.mc-sep.top/i/22c66c6b-2380-4045-bcdc-17f87152a480.webp"></p></li><li><p>Oh man!失败了！！！<br><img src="https://img.mc-sep.top/i/3504f8d4-96c4-48aa-a644-0d7db1ee4ef9.webp"></p></li><li><p>为什么会失败呢？我让你们装的MT管理器不就来了？来看看安装包！<br><img src="https://img.mc-sep.top/i/7f0579d1-6ac5-47e3-a487-3bbb2b1a838f.webp"><br>这就是问题。HW的工程师对V1的安装包做了限制。我们只需要改成V2,V3,V2+V3任选一个就可以了。</p></li><li><p>重新安装<br><img src="https://img.mc-sep.top/i/835e1657-da72-466e-a0be-9b195da9c602.webp"></p></li><li><p>打开手表确认<br><img src="https://img.mc-sep.top/i/f07aee08-92c1-42eb-a147-fb497be7cd39.webp"><br>APP测试<br><img src="https://img.mc-sep.top/i/bebc6785-1e3f-4f22-b5db-18e7e14d0278.webp"><br><img src="https://img.mc-sep.top/i/7f43e302-9f9a-48a0-9b28-17c53f35cb9c.webp"><br>至此，我们的目标2：安装自定义软件已经顺利:check_mark:了，开始我们的下一个目标。</p></li><li><p>adb重启到fastboot模式</p></li></ol><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">adb reboot fastboot</span><br></pre></td></tr></table></figure><p>很可惜，他失败了。BL锁无法解锁，我还要再花时间研究。。。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h2&gt;&lt;p&gt;有一段时间没有更新了。学业问题，好久才能更新一次。对不起大家！&lt;/p&gt;
&lt;p&gt;回到正题。今天，我偶然发现了家里的老古董：&lt;/p&gt;
&lt;p&gt;&lt;i</summary>
      
    
    
    
    <category term="搞机日记" scheme="https://blog.mc-sep.top/categories/%E6%90%9E%E6%9C%BA%E6%97%A5%E8%AE%B0/"/>
    
    
    <category term="Android" scheme="https://blog.mc-sep.top/tags/Android/"/>
    
  </entry>
  
  <entry>
    <title>提升效率必备Windows神器PowerToys</title>
    <link href="https://blog.mc-sep.top/post/qrea.html"/>
    <id>https://blog.mc-sep.top/post/qrea.html</id>
    <published>2025-07-02T02:18:00.000Z</published>
    <updated>2026-02-24T23:46:49.978Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>终于复活了！！！</p><p>最近blog经常发癫，我还要考试，就停更了好久。</p><p>今天我来讲一讲一个Windows的实用小工具：<strong>PowerToys</strong></p><h1 id="安装、使用"><a href="#安装、使用" class="headerlink" title="安装、使用"></a>安装、使用</h1><p>安装的话直接去Microsoft Store就可以：</p><p><img src="/img/article/21/e684ccc486939315a387bbc53e8c33afda1505da.jpg" alt="Microsoft PowerToys 是一款帮助高级用户优化和简化 Windows 10 和 11 系统体验的实用工具集，以提高生产力。 [App Screenshot] (由 AI 生成标题)|529x499, 100%"></p><p>推荐的功能：</p><ol><li>唤醒：这个功能可以调整你的计算机睡眠状态，如永不睡眠，隔一段时间在睡眠等：</li></ol><p><img src="/img/article/21/b6fa800413a1985483c7b6aa77114eee7c883c70.png" alt="截图显示了一个设置菜单，包含关于保持设备唤醒的选项，包括按时间间隔唤醒、无限期唤醒以及关闭唤醒功能。 {tag:screenshot, menu, settings} (由 AI 生成标题)|538x250"></p><ol start="2"><li>命令面板：快捷的公式计算、指令运行：</li></ol><p><img src="/img/article/21/b4ed65ccc4d794617fda21e7bb92a17afc35bb3a.jpg" alt="截图显示了PowerToys的命令面板设置界面，包括启用&#x2F;禁用命令面板、快捷键设置、以及搜索和运行应用等功能。 (由 AI 生成标题)|395x499"></p><ol start="3"><li>颜色选择器：如果你对颜色的HEX值特别苦恼，就用这个一件取色！</li></ol><p><img src="/img/article/21/edf0599f28d9039870da3f0f87d062adcdd29281.png" alt="PowerToys 颜色选取器设置界面显示了启用状态、快捷键和激活方式等选项。 (由 AI 生成标题)|629x500"></p><p><img src="/img/article/21/6209e90bb2173d4197d47f74dd66024f073b1144.png" alt="图片显示了十六进制颜色代码f3f3f3，它代表白色。 (由 AI 生成标题)|453x200"></p><ol start="4"><li>文本提取器：顾名思义，截图读取文字。</li></ol><p><img src="/img/article/21/7baae8917a20ba5202e594a5b05abc960fe01725.png" alt="这是一张PowerToys文本提取器设置界面的截图，显示了其功能、快捷键和语言设置。 (由 AI 生成标题)|450x500"></p><p>建议使用截图工具而不是 TextExtractor 模块。（文本提取实例）</p><ol start="5"><li>始终置顶：激活后会在窗口旁出现蓝色框，代表完全置顶<br><img src="/img/article/21/62ef1a187883f2ce2d813ddcba403aead16c7747.png" alt="这是PowerToys设置界面，显示了“始终置顶”功能的开关和快捷键设置。 (由 AI 生成标题)|690x390"></li></ol><p>其余的自己可以探索，这5个最好用！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;终于复活了！！！&lt;/p&gt;
&lt;p&gt;最近blog经常发癫，我还要考试，就停更了好久。&lt;/p&gt;
&lt;p&gt;今天我来讲一讲一个Windows的实用小工具</summary>
      
    
    
    
    <category term="软件" scheme="https://blog.mc-sep.top/categories/%E8%BD%AF%E4%BB%B6/"/>
    
    
    <category term="Windows" scheme="https://blog.mc-sep.top/tags/Windows/"/>
    
    <category term="PowerToys" scheme="https://blog.mc-sep.top/tags/PowerToys/"/>
    
  </entry>
  
  <entry>
    <title>【Hexo】如何提高静态博客访问速度？Vercel+Cloudflare+CDN让你的网站速度飞起！</title>
    <link href="https://blog.mc-sep.top/post/5ytg.html"/>
    <id>https://blog.mc-sep.top/post/5ytg.html</id>
    <published>2024-11-16T22:24:00.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>随着博客文章数量的增多，我们的博客可能会变得十分缓慢（比如前段时间的我），今天的教程可以让你的博客提速<strong>90%</strong>！</p><h1 id="实操"><a href="#实操" class="headerlink" title="实操"></a>实操</h1><h2 id="整改1-扔掉Github-Pages"><a href="#整改1-扔掉Github-Pages" class="headerlink" title="整改1 扔掉Github Pages"></a>整改1 扔掉Github Pages</h2><p>Github Pages<del>真垃圾</del>很慢，看看对比：</p><table><thead><tr><th align="center">名称</th><th align="center">Vercel</th><th align="center">CF Workers（反代）</th><th align="center">CF Pages</th><th align="center">Netlify</th><th align="center">Zeabur</th><th align="center">Github Pages</th></tr></thead><tbody><tr><td align="center">速度</td><td align="center">🌟🌟🌟🌟🌟</td><td align="center">🌟🌟🌟🌟</td><td align="center">🌟🌟🌟🌟🌟</td><td align="center">🌟🌟🌟🌟🌟</td><td align="center">🌟🌟🌟🌟🌟</td><td align="center">🌟🌟</td></tr><tr><td align="center">稳定性</td><td align="center">5</td><td align="center">5</td><td align="center">5</td><td align="center">5</td><td align="center">5</td><td align="center">5</td></tr></tbody></table><p>还不把Github Pages扔了！Vercel他不香吗！参考：</p><p>也可以使用 CF Workers反代，参考：<a href="https://blog.mc-sep.top/post/437r.html">利用Cloudflare Workers搭建镜像网站 | Minecraft-Sep (mc-sep.top)</a></p><h2 id="整改2-域名"><a href="#整改2-域名" class="headerlink" title="整改2 域名"></a>整改2 域名</h2><p>参考（有几个提别好的）：</p><h2 id="整改3-CDN"><a href="#整改3-CDN" class="headerlink" title="整改3 CDN"></a>整改3 CDN</h2><p>CDN的全称是Content Delivery Network，即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络，依靠部署在各地的边缘服务器，通过中心平台的负载均衡、内容分发、调度等功能模块，使用户就近获取所需内容，降低网络拥塞，提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。</p><p>通俗易懂的解释： 通过IP访问实际资源时，如果CDN上并没有缓存资源，则会到源站请求资源，并缓存到CDN节点上，这样，用户下一次访问时，该CDN节点就会有对应资源的缓存了。</p><p>Vercel CDN的优化</p><ul><li>使用他人的Vercel CDN（自动使用节点）：<a href="https://vercel.cdn.yt-blog.top/">Vercel CDN:利用CNAME负载均衡实现的Vercel加速CDN (yt-blog.top)</a></li><li>在Vercel里使用Hong Kong节点</li></ul><p>CF的优化</p><ul><li>优化选项卡里的能开就开</li></ul><div class="note  warning flat fas fa-triangle-exclamation"><p>注意：最近推出的Speed Brain有问题，不建议使用！</p></div><h2 id="整改4-图片问题"><a href="#整改4-图片问题" class="headerlink" title="整改4 图片问题"></a>整改4 图片问题</h2><p>最拖慢速度二巨头：图片过大，图片源不同一（特别是butterfly系列主题深有体会）</p><p>建议统一使用一个图床，或者上传到自己的图床，这里提供两个教程</p><ul><li>CF+Telegraph（维护中）</li><li>Vercel+Bulb</li></ul><div class="recent-post-item" onclick="pjax.loadUrl('//post/239d.html')"><div class="post_cover"><a href="//post/239d.html" class="fancybox" title="免费小型数据库——Vercel Blob初体验"><img class="post_bg" src="/img/article/13/th.webp" alt="免费小型数据库——Vercel Blob初体验"></a></div><div class="recent-post-info"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><span class="article-meta sticky-warp"><span class="original">实用教程</span></span></div><a class="article-title fancybox" href="//post/239d.html" title="免费小型数据库——Vercel Blob初体验">免费小型数据库——Vercel Blob初体验</a></div><div class="content"></div><div class="article-meta-wrap"><span class="article-meta tags"><a class="article-meta__tags fancybox" href="tags/Vercel/" onclick="event.stopPropagation();"><span class="tags-punctuation"><i class="solitude fa-solid fa-hashtag"></i>Vercel</span></a><a class="article-meta__tags fancybox" href="tags/图床/" onclick="event.stopPropagation();"><span class="tags-punctuation"><i class="solitude fa-solid fa-hashtag"></i>图床</span></a></span><span class="post-meta-date"><time datetime="Mon Sep 16 2024 20:18:00 GMT+0800" style="display: inline;"></time></span></div></div></div><p>其次，图片过大可以使用<a href="https://tinify.cn/">TinyPNG – 智能压缩您的WebP、JPEG和PNG图片 (tinify.cn)</a>或者<a href="https://tinypng.com/">TinyPNG – Compress WebP, PNG and JPEG images intelligently</a>压缩，是无损压缩，也可以转换为png,jpeg和webp格式。</p><p>或者使用<a href="https://cdn.jsdelivr.net/">Jsdelivr (jsdelivr.net)</a>加速访问托管在github 的图片：</p><ol><li><p>将图片上传到github</p></li><li><p>在网址栏输入：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://cdn.jsdelivr.net/npm/你的github用户名/你保存图片的repo/[图片路径]</span><br></pre></td></tr></table></figure></li><li><p>如果出现图片就代表成功！</p></li></ol><h2 id="整改5-Gulp"><a href="#整改5-Gulp" class="headerlink" title="整改5 Gulp"></a>整改5 Gulp</h2><p>Gulp是一个hexo插件，用于压缩js和css文件。</p><ol><li><p>安装：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install gulp compress gulp-clean-css gulp-html-minifier-terser gulp-htmlclean gulp-terser --save-dev</span><br></pre></td></tr></table></figure></li><li><p>创建 <code>gulpfile.js</code> 文件：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> gulp = <span class="built_in">require</span>(<span class="string">&#x27;gulp&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> cleanCSS = <span class="built_in">require</span>(<span class="string">&#x27;gulp-clean-css&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> htmlmin = <span class="built_in">require</span>(<span class="string">&#x27;gulp-html-minifier-terser&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> htmlclean = <span class="built_in">require</span>(<span class="string">&#x27;gulp-htmlclean&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> terser = <span class="built_in">require</span>(<span class="string">&#x27;gulp-terser&#x27;</span>);</span><br><span class="line"><span class="comment">// 压缩js</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;compress&#x27;</span>, <span class="function">() =&gt;</span></span><br><span class="line">gulp.<span class="title function_">src</span>([<span class="string">&#x27;./public/**/*.js&#x27;</span>, <span class="string">&#x27;!./public/**/*.min.js&#x27;</span>])</span><br><span class="line">.<span class="title function_">pipe</span>(<span class="title function_">terser</span>())</span><br><span class="line">.<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public&#x27;</span>))</span><br><span class="line">)</span><br><span class="line"><span class="comment">//压缩css</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;minify-css&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line"><span class="keyword">return</span> gulp.<span class="title function_">src</span>([<span class="string">&#x27;./public/**/*.css&#x27;</span>])</span><br><span class="line">.<span class="title function_">pipe</span>(<span class="title function_">cleanCSS</span>(&#123;</span><br><span class="line"><span class="attr">compatibility</span>: <span class="string">&#x27;ie11&#x27;</span></span><br><span class="line">&#125;))</span><br><span class="line">.<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public&#x27;</span>));</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">//压缩html</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;minify-html&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line"><span class="keyword">return</span> gulp.<span class="title function_">src</span>(<span class="string">&#x27;./public/**/*.html&#x27;</span>)</span><br><span class="line">.<span class="title function_">pipe</span>(<span class="title function_">htmlclean</span>())</span><br><span class="line">.<span class="title function_">pipe</span>(<span class="title function_">htmlmin</span>(&#123;</span><br><span class="line"><span class="attr">removeComments</span>: <span class="literal">true</span>, <span class="comment">//清除html注释</span></span><br><span class="line"><span class="attr">collapseWhitespace</span>: <span class="literal">true</span>, <span class="comment">//压缩html</span></span><br><span class="line"><span class="attr">collapseBooleanAttributes</span>: <span class="literal">true</span>,</span><br><span class="line"><span class="comment">//省略布尔属性的值，例如：&lt;input checked=&quot;true&quot;/&gt; ==&gt; &lt;input /&gt;</span></span><br><span class="line"><span class="attr">removeEmptyAttributes</span>: <span class="literal">true</span>,</span><br><span class="line"><span class="comment">//删除所有空格作属性值，例如：&lt;input id=&quot;&quot; /&gt; ==&gt; &lt;input /&gt;</span></span><br><span class="line"><span class="attr">removeScriptTypeAttributes</span>: <span class="literal">true</span>,</span><br><span class="line"><span class="comment">//删除&lt;script&gt;的type=&quot;text/javascript&quot;</span></span><br><span class="line"><span class="attr">removeStyleLinkTypeAttributes</span>: <span class="literal">true</span>,</span><br><span class="line"><span class="comment">//删除&lt;style&gt;和&lt;link&gt;的 type=&quot;text/css&quot;</span></span><br><span class="line"><span class="attr">minifyJS</span>: <span class="literal">true</span>, <span class="comment">//压缩页面 JS</span></span><br><span class="line"><span class="attr">minifyCSS</span>: <span class="literal">true</span>, <span class="comment">//压缩页面 CSS</span></span><br><span class="line"><span class="attr">minifyURLs</span>: <span class="literal">true</span>  <span class="comment">//压缩页面URL</span></span><br><span class="line">&#125;))</span><br><span class="line">.<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public&#x27;</span>))</span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 运行gulp命令时依次执行以下任务</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;default&#x27;</span>, gulp.<span class="title function_">parallel</span>(</span><br><span class="line"><span class="string">&#x27;compress&#x27;</span>, <span class="string">&#x27;minify-css&#x27;</span>, <span class="string">&#x27;minify-html&#x27;</span></span><br><span class="line">))</span><br></pre></td></tr></table></figure></li><li><p>运行gulp：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo g&amp;&amp;gulp</span><br></pre></td></tr></table></figure></li></ol><h1 id="加速你也做的差不多了"><a href="#加速你也做的差不多了" class="headerlink" title="加速你也做的差不多了"></a>加速你也做的差不多了</h1><p>结束！</p><p>版权所有©MC-Sep.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;随着博客文章数量的增多，我们的博客可能会变得十分缓慢（比如前段时间的我），今天的教程可以让你的博客提速&lt;strong&gt;90%&lt;/strong</summary>
      
    
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/categories/Hexo/"/>
    
    
    <category term="Vercel" scheme="https://blog.mc-sep.top/tags/Vercel/"/>
    
    <category term="Cloudflare" scheme="https://blog.mc-sep.top/tags/Cloudflare/"/>
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/tags/Hexo/"/>
    
    <category term="CDN" scheme="https://blog.mc-sep.top/tags/CDN/"/>
    
  </entry>
  
  <entry>
    <title>Cloudflare Pages+Telegraph搭建简易图床</title>
    <link href="https://blog.mc-sep.top/post/5trr.html"/>
    <id>https://blog.mc-sep.top/post/5trr.html</id>
    <published>2024-10-26T19:24:00.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>之前那个Vercel Blob图床太LAJI了，这次换一个新的Cloudflare Pages+Telegraph搭建简易图床！</p><p><del>总今天开始，本站的所有照片都会被托管到我的图床！</del></p><p>本站的图床出现了点小问题，所以图床从今天开始维护，开放时间暂定。</p><div class="note  warning flat fas fa-triangle-exclamation"><p>请不要滥用，所有人都不想失去这免费的东西！ </p></div><h1 id="实践"><a href="#实践" class="headerlink" title="实践"></a>实践</h1><ol><li><p>准备好域名，绑定到Cloudflare（后称cf）上，当然你不绑也行，毕竟.pages.dev域名还没有被ban。。。</p><p><img src="/img/article/19/2e37d166e54b37a35710ea5d0499552a3fe8da92c40c22d1b72ee91f24f56c8f.png"></p></li><li><p>fork这个仓库：</p></li></ol><div class="repo-card">  <a class='name-7wu6rs6wm repo-title fancybox' href="https://github.com/cf-pages/Telegraph-Image"></a>  <p class='desc-7wu6rs6wm repo-desc'></p>  <div class="repo-gist">    <i class="fas fa-star"></i>    <span class='star-7wu6rs6wm'></span>    <i class="fas fa-code-branch"></i>    <span class='fork-7wu6rs6wm'></span>  </div>  <img class='lang-7wu6rs6wm repo-language no-lightbox' />  <script>    fetch('https://api.github.com/repos/cf-pages/Telegraph-Image')      .then(res => res.json())      .then(data => {        document.querySelector('.name-7wu6rs6wm').innerText = data.name;        document.querySelector('.desc-7wu6rs6wm').innerText = data.description;        document.querySelector('.star-7wu6rs6wm').innerText = data.stargazers_count;        document.querySelector('.fork-7wu6rs6wm').innerText = data.forks_count;        document.querySelector('.lang-7wu6rs6wm').src = 'https://skillicons.dev/icons?i=' + data.language.toLowerCase();    });  </script>  </div><ol start="3"><li><p>进入 CF 的 Workers和 pages页面，点击创建</p><p><img src="/img/article/19/0fe8b05d2463f89cf2f13ed9d9d7a6663a02478d226cf8c7415ea82749fa8cb5.png" alt="创建"></p><ol start="4"><li><p>（这里用Pages不是Workers！）选择刚才的仓库，点击部署</p></li><li><p>部署完成后进入设置 -&gt; 变量和机密，添加两个值：</p><table><thead><tr><th align="center">BASIC_USER</th><th align="center">后台管理员的用户名</th></tr></thead><tbody><tr><td align="center">BASIC_PASS</td><td align="center">后台的登陆密码</td></tr></tbody></table><p>后台在 <strong>https:&#x2F;&#x2F;你在cf pages的域名&#x2F;admin</strong> (有点丑。。。)</p><div class="note  warning flat fas fa-triangle-exclamation"><p>当然你也可以不设置（个容易被制裁）</p></div></li><li><p>回到 Workers和Pages，选择 KV ，创建命名空间，名字填 <strong>img_url</strong> （我这里已经搞了）</p><p><img src="/img/article/19/349d5df03916a6fd05ec0003e8cf617dad7b24ac4d8b05691c14f77b6a43a810.png" alt="KV"></p></li><li><p>回到刚才的Pages，进入设置 -&gt; 绑定，添加一个，名字还是<strong>img_url</strong>，选择刚才的KV</p><p><img src="/img/article/19/ec8d78269a423a223a25940d3b6227fd42a8fd1904fed0e3eba78f13a4de858d.png" alt="em"></p></li><li><p>重新部署一下就完成了！可以测试一下，效果还可以awa</p></li><li><p>（可选）自定义域名的绑定：</p><p><img src="/img/article/19/a0cc918384e4fc93dccc3ef3cc6c32c624d51626af5ac3d039b7cb6d5f8ddd8f.png"></p></li></ol></li></ol>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;之前那个Vercel Blob图床太LAJI了，这次换一个新的Cloudflare Pages+Telegraph搭建简易图床！&lt;/p&gt;
&lt;</summary>
      
    
    
    
    <category term="实用教程" scheme="https://blog.mc-sep.top/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Cloudflare Pages" scheme="https://blog.mc-sep.top/tags/Cloudflare-Pages/"/>
    
  </entry>
  
  <entry>
    <title>【Hexo】告别缓慢的 Github Pages，来试试更好的 Vercel 吧！</title>
    <link href="https://blog.mc-sep.top/post/43vc.html"/>
    <id>https://blog.mc-sep.top/post/43vc.html</id>
    <published>2024-10-03T00:15:00.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>什么是 Vercel ? Vercel，是一家软件服务企业，掌门人是Guillermo Rauch，2023年4月18日，以170亿人民币的企业估值入选《2023·胡润全球独角兽榜》，排名404。2024年4月9日，Vercel以180亿人民币的企业估值入选《2024·胡润全球独角兽榜》，排名422名。</p><p>那么，今天我就叫你如何使用 Vercel 快速上线你的个人网站！</p><h1 id="实践"><a href="#实践" class="headerlink" title="实践"></a>实践</h1><h2 id="Part1-导入博客Repo"><a href="#Part1-导入博客Repo" class="headerlink" title="Part1. 导入博客Repo"></a>Part1. 导入博客Repo</h2><ol><li><p>进入 <strong><a href="vercel.com">Vercel</a></strong> ，先注册账号（建议使用Github注册）。</p></li><li><p>进入Dashboard，点击<code>Add New</code>-&gt;<code>Project</code></p></li></ol><p><img src="/img/article/17/bdfec6d578406a659bb3715c21f107059cc97ca6f853480f0d99d2d151c22909.png" alt="Add"></p><ol start="3"><li>进入选择界面，找到你的博客所在的Github仓库，点击一旁的<strong>Import</strong>，例如我的<code>mc-sep.github.io</code></li></ol><p><img src="/img/article/17/d20a4793dea107d4098fecb31121944b4b3f4de62670c0bf4ea451cb3cdde6d3.png" alt="选择"></p><ol start="4"><li>进入到配置界面，如果你是Hexo博客（只上传public文件夹内文件的），请不要修改<strong>Build and Output Settings</strong>和<strong>Framework Preset</strong>，如果是Hexo（在线部署的），请在<strong>Framework Preset</strong>中选择<strong>Hexo</strong>，其他不用动。其余博客的方法可自行查阅。最后点击<strong>Deploy</strong></li></ol><p><img src="/img/article/17/464d16c75c6fe1f39c4d852b01e19d98799822f3e529b516d1383e2af54088c2.png" alt="hexo仅public"></p><p><img src="/img/article/17/11f2a5c31e0b95d1a3b434c2ab26b46baff66c62aad4d1d7ed3675867ea533c2.png" alt="hexo在线部署"></p><ol start="5"><li>等待部署完成。完成后，点击<strong>Continue to Dashboard</strong></li></ol><p><img src="/img/article/17/5acb7ee42c86eca9cd7cb25bb2d018c1c34c8c432e8695f73aa3173b1d9f138e.png" alt="部署中"></p><p><img src="/img/article/17/3786c51b1cec27e65425052f5e9b588b87112dfdf445c57353b9a71157d4ab39.png" alt="完成"></p><h2 id="Part2-绑定域名"><a href="#Part2-绑定域名" class="headerlink" title="Part2. 绑定域名"></a>Part2. 绑定域名</h2><p>请在你的域名托管商内添加一个<strong>CNAME</strong>记录：<strong>cname-china.vercel-dns.com</strong>或者<strong>A</strong>记录：<strong>76.76.21.21</strong>或<strong>76.76.21.98</strong>，如图：</p><p><img src="/img/article/17/357bb7e96510f913e7aff7ae031051eb652bf7ecca72d850efee38e0abe38d2c.png" alt="A"></p><p>接着去到你创建好的Project，点击<strong>Settings</strong>-&gt;<strong>Domains</strong>，再上面输入你的域名！</p><p><img src="/img/article/17/36f7594d1396d0e8d1725fd6982aa6910ed3dbe963628fde7ddddb76ceee4636.png" alt="doamins"></p><p>如果你配置错了，可能就会：</p><p><img src="/img/article/17/a63a312034cbf5214fb7a633cfa86e646e7195cc235c5d0f16153e6b203865f6.png" alt="记录填错"></p><p><img src="/img/article/17/2c56b89bf1ecf53e12e60c6a1466276de9c3ef52f286a21523c214ee6320ebaa.png" alt="不支持Vercel&amp;其他用户再使用的"></p><p>你也可以使用Vercel的自带域名（被ban了）：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">你喜欢的名字.vercel.app</span><br></pre></td></tr></table></figure><h2 id="Part3-安全系统"><a href="#Part3-安全系统" class="headerlink" title="Part3. 安全系统"></a>Part3. 安全系统</h2><ol><li><p>进入<strong>Settings</strong>-&gt;<strong>Security</strong></p></li><li><p>可以将<strong>Attack Challenge Mode</strong>打开（通过向每位访客显示验证质询来防止恶意流量），效果就不展示了。</p></li><li><p>下面的都可以打开。</p></li></ol><h2 id="Part4-优化"><a href="#Part4-优化" class="headerlink" title="Part4. 优化"></a>Part4. 优化</h2><p>可以提出建议！我可能会采纳！</p><ul><li>进入<strong>Settings</strong>-&gt;<strong>Functions</strong>，可将服务器改为香港的（好像小日子的更快），如：</li></ul><p><img src="/img/article/17/e57638f9c44875449c011ce1f65024063a907f0048228efcfa267365abcf649b.png" alt="server"></p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>Vercel挺好用的。</p><p>版权所有©MC-Sep 2023~2024.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;什么是 Vercel ? Vercel，是一家软件服务企业，掌门人是Guillermo Rauch，2023年4月18日，以170亿人民币的</summary>
      
    
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/categories/Hexo/"/>
    
    
    <category term="Vercel" scheme="https://blog.mc-sep.top/tags/Vercel/"/>
    
    <category term="Github" scheme="https://blog.mc-sep.top/tags/Github/"/>
    
    <category term="Pages" scheme="https://blog.mc-sep.top/tags/Pages/"/>
    
  </entry>
  
  <entry>
    <title>什么是DDos？它会对博客造成什么威胁？DDos攻击原理与防护方法</title>
    <link href="https://blog.mc-sep.top/post/76gl.html"/>
    <id>https://blog.mc-sep.top/post/76gl.html</id>
    <published>2024-10-01T12:06:06.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>最近我在查Vercel的Usage的时候，发现了这个东西：</p><p><img src="/img/article/16/4oX5YJ0.png" alt="有DDos拦截记录"></p><p>由于影响不是很大，为了他人隐私（也不能不给他机会改正吧），就不“公开处刑”了。</p><p>那么，什么是DDos？它会对博客造成什么威胁？今天我就讲讲DDos攻击原理与防护方法。</p><h1 id="原理"><a href="#原理" class="headerlink" title="原理"></a>原理</h1><p>DDoS全称Distributed Denial of Service，意思为“分布式拒绝服务”，即利用大量合法的分布式服务器对目标发送请求，从而导致正常合法用户无法获得服务。</p><p>就比如，一个健身房生意十分火爆，那些“壮汉”看不下去了，就召集n个人进到他店，但是就是不健身，又堵住健身器材。这个商家看似很忙很火爆，其实啥也不是，同时，真正想要健身的顾客也没得到接待，因为店里挤得进不去。</p><p>现在的DDoS让服务不仅可以直接阻断，还能够通过影响服务的客户体验实现攻击。他又这些特点：</p><ol><li><strong>造成“供不应求”现象</strong>。通过控制大量攻击主机同时连接网站端口，制造大流量无用数据，造成通往被攻击主机的网络拥塞，使被攻击主机无法正常和外界通信。</li><li><strong>傀儡攻击</strong>。傀儡就是可以被黑客操控的机器，经常被用为DDos攻击，但是傀儡数量十分多，使后端无法准确辨识。</li><li><strong>网络层攻击</strong>。通过发送伪造源IP的TCP数据包发送SYN或ACK包、发送包含错误设置的地址值等攻击方式，耗尽服务器资源，导致服务器拒绝访问。</li><li><strong>CC攻击</strong>。黑客借助代理服务器生成指向受害主机的合法网页请求，实现DDoS和伪装就叫CC（全名Challenge Collapsar）。傀儡CC攻击是黑客使用CC攻击软件，控制大量傀儡发动攻击，模拟正常用户访问网站的请求，伪造成合法数据包。</li></ol><p>DDos攻击原理如下：</p><p><img src="/img/article/16/1.png" alt="原理"></p><h1 id="抵御"><a href="#抵御" class="headerlink" title="抵御"></a>抵御</h1><p>要抵御DDos攻击，可限制同时间访问量，如：</p><p><img src="/img/article/16/2.png" alt="1"></p><p>Cloudflare里可以设置。</p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>老是有人棍去攻击你的网站，很正常，但是“不怕一万，只怕万一”，赶紧学起来！！</p><p>版权所有©MC-Sep 2024.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;最近我在查Vercel的Usage的时候，发现了这个东西：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/img/article/16/4oX5YJ0</summary>
      
    
    
    
    <category term="实用教程" scheme="https://blog.mc-sep.top/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Cloudflare" scheme="https://blog.mc-sep.top/tags/Cloudflare/"/>
    
    <category term="DDos" scheme="https://blog.mc-sep.top/tags/DDos/"/>
    
  </entry>
  
  <entry>
    <title>202409博客月报 | 第一期</title>
    <link href="https://blog.mc-sep.top/post/45vy.html"/>
    <id>https://blog.mc-sep.top/post/45vy.html</id>
    <published>2024-09-30T08:39:00.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<div class="note  info flat fas fa-circle-info"><p>统计截止于 <strong>2024.9.30 15:00:00</strong></p></div><h1 id="你好，朋友！"><a href="#你好，朋友！" class="headerlink" title="你好，朋友！"></a>你好，朋友！</h1><p><img src="https://api.vvhan.com/api/ipCard?tip=Hello%20%E6%AC%A2%E8%BF%8E%E4%BD%BF%E7%94%A8"></p><h1 id="导语"><a href="#导语" class="headerlink" title="导语"></a>导语</h1><p>2024.9.1，我们正式愉快的开学了！（艹）在这愉快的一个月，我们的<a href="/links">好朋友们</a>都在干嘛呢？让我们一起看看吧！</p><h1 id="博客9月统计"><a href="#博客9月统计" class="headerlink" title="博客9月统计"></a>博客9月统计</h1><h2 id="博客基础信息"><a href="#博客基础信息" class="headerlink" title="博客基础信息"></a>博客基础信息</h2><p>因为开学了，全部虚了！</p><table><thead><tr><th align="center">项目</th><th align="center">数据</th><th align="center">涨幅率 &#x2F; %</th><th align="center">预期</th></tr></thead><tbody><tr><td align="center">访问量</td><td align="center">194</td><td align="center">-64%</td><td align="center">❌</td></tr><tr><td align="center">访客数</td><td align="center">21</td><td align="center">+2%</td><td align="center">✅</td></tr><tr><td align="center">文章数</td><td align="center">2</td><td align="center">-50%</td><td align="center">❌</td></tr><tr><td align="center">评论数</td><td align="center">45</td><td align="center">+2%</td><td align="center">✅</td></tr><tr><td align="center">Github Deployment</td><td align="center">300+</td><td align="center">+150%</td><td align="center">✅</td></tr></tbody></table><h2 id="博客排名"><a href="#博客排名" class="headerlink" title="博客排名"></a>博客排名</h2><h3 id="“话痨”"><a href="#“话痨”" class="headerlink" title="“话痨”"></a>“话痨”</h3><p>在本月评论最多的是谁呢？？</p><table><thead><tr><th align="center">排名</th><th align="center">名称</th><th align="center">评论数</th><th align="center">本月段位</th><th align="center">历史段位</th></tr></thead><tbody><tr><td align="center">1</td><td align="center"><strong><a href="https://mc-sep.js.cool/">MC-Sep</a></strong></td><td align="center">25</td><td align="center">社牛</td><td align="center">青铜</td></tr><tr><td align="center">2</td><td align="center"><strong><a href="https://blog.southz.top/">南川吟梦</a></strong></td><td align="center">13</td><td align="center">社牛</td><td align="center">青铜</td></tr><tr><td align="center">3</td><td align="center"><strong><a href="https://meoblog.pages.dev/">LinuxWin</a></strong></td><td align="center">4</td><td align="center">讨论UP</td><td align="center">小白</td></tr><tr><td align="center">4</td><td align="center"><a href="">丛林匕首-死神-能量核心</a></td><td align="center">2</td><td align="center">小白</td><td align="center">小白</td></tr><tr><td align="center">5</td><td align="center"><a href="https://www.dolingou.com/">Mihomo</a></td><td align="center">2</td><td align="center">小白</td><td align="center">小白</td></tr></tbody></table><h1 id="本月精选文章"><a href="#本月精选文章" class="headerlink" title="本月精选文章"></a>本月精选文章</h1><h2 id="科技类博客"><a href="#科技类博客" class="headerlink" title="科技类博客"></a>科技类博客</h2><table><thead><tr><th align="center">作者</th><th align="center">文章</th><th align="center">人气</th></tr></thead><tbody><tr><td align="center"><a href="https://blog.starchen.top/">星辰博客 – Hope-For-Star (starchen.top)</a></td><td align="center"><a href="https://blog.starchen.top/markmap-markdown%E4%B8%8E%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%AE%8C%E7%BE%8E%E7%BB%93%E5%90%88/">Markmap——Markdown与思维导图完美结合 – 星辰博客 (starchen.top)</a></td><td align="center">-</td></tr><tr><td align="center"><a href="https://meoblog.pages.dev/">LinuxWin🍉 (meoblog.pages.dev)</a></td><td align="center"><a href="https://meoblog.pages.dev/2024/09/15/hexo-modify/">Solitude主题魔改系列（1）LinuxWin🍉 (meoblog.pages.dev)</a></td><td align="center">-</td></tr><tr><td align="center"><a href="https://blog.linux-qitong.top/">青稚の空间 (linux-qitong.top)</a></td><td align="center"><a href="https://blog.linux-qitong.top/posts/305bae84/">Butterfly主题美化 青稚の空间 (linux-qitong.top)</a></td><td align="center">133</td></tr><tr><td align="center"><a href="https://rengoku.top/">颓废市民黄先生 - welcome 艾瑞巴蒂 (rengoku.top)</a></td><td align="center"><a href="https://rengoku.top/2024/08/16/MySQL-MVCC/">MySQL：（四）事务隔离级别和MVCC颓废市民黄先生 (rengoku.top)</a></td><td align="center">53</td></tr><tr><td align="center"><a href="https://peter267.zeabur.app/">Peter - 无限进步 (zeabur.app)</a></td><td align="center"><a href="https://peter267.zeabur.app/2024/09/22/%E5%8D%9A%E5%AE%A2%E5%9B%BE%E5%BA%8A%E6%96%B0%E6%96%B9%E6%A1%88%E2%80%94%E2%80%94%E8%87%AA%E9%83%A8%E7%BD%B2LightPicture/">博客图床新方案——自部署LightPicture Peter (zeabur.app)</a></td><td align="center">3</td></tr><tr><td align="center"><a href="https://blog.scott-studio.cn/">SCOTT-STUDIO.CN</a></td><td align="center"><a href="https://blog.scott-studio.cn/wxgzhwysqkf">微信公众号开发 · 网页授权登录 —— SCOTT-STUDIO.CN</a></td><td align="center">27</td></tr><tr><td align="center"><a href="https://peter267.zeabur.app/">Peter - 无限进步 (zeabur.app)</a></td><td align="center"><a href="https://peter267.zeabur.app/2024/09/27/2024.9.8-9.22%E5%91%A8%E8%AE%B0/">周记 2024.9.8-2024.9.22Peter (zeabur.app)</a></td><td align="center">9</td></tr><tr><td align="center"><a href="https://mc-sep.js.cool/">Minecraft-Sep (js.cool)</a></td><td align="center"><a href="https://mc-sep.js.cool/post/239d.html">免费小型数据库——Vercel Blob初体验 Minecraft-Sep (js.cool)</a></td><td align="center">94</td></tr><tr><td align="center"><a href="https://mc-sep.js.cool/">Minecraft-Sep (js.cool)</a></td><td align="center"><a href="https://mc-sep.js.cool/post/te2r.html">博客一周年记 Minecraft-Sep (js.cool)</a></td><td align="center">68</td></tr><tr><td align="center"><a href="https://mc-sep.js.cool/">Minecraft-Sep (js.cool)</a></td><td align="center"><a href="https://mc-sep.js.cool/post/ugr2.html">如何让你的博客更丰富?hexo常见插件推荐Minecraft-Sep (js.cool)</a></td><td align="center">16</td></tr></tbody></table><h3 id="生活类博客"><a href="#生活类博客" class="headerlink" title="生活类博客"></a>生活类博客</h3><table><thead><tr><th align="center">作者</th><th align="center">文章</th><th align="center">人气</th></tr></thead><tbody><tr><td align="center"><a href="https://everfu.cn/">一只小托尼 (everfu.cn)</a></td><td align="center"><a href="https://everfu.cn/p/2568de27.html">Mac 实用 Brew 搭建 PHP开发环境一只小托尼 (everfu.cn)</a></td><td align="center">29</td></tr><tr><td align="center"><a href="https://everfu.cn/">一只小托尼 (everfu.cn)</a></td><td align="center"><a href="https://everfu.cn/p/334b14c7.html">别人不了解你的时候，你又何必在意他对你的评价 一只小托尼 (everfu.cn)</a></td><td align="center">88</td></tr><tr><td align="center"><a href="https://blog.zhheo.com/">张洪Heo - 分享设计与科技生活 (zhheo.com)</a></td><td align="center"><a href="https://blog.zhheo.com/p/a28f.html">黑鲨刀锋2磁吸充电宝上手：5000的大小，10000的容量张洪Heo (zhheo.com)</a></td><td align="center">123</td></tr><tr><td align="center"><a href="https://blog.zhheo.com/">张洪Heo - 分享设计与科技生活 (zhheo.com)</a></td><td align="center"><a href="https://blog.zhheo.com/p/ee67.html">聊一聊Apple新品：iPhone16、Apple Watch S10、AirPods深度解析 张洪Heo (zhheo.com)</a></td><td align="center">901</td></tr><tr><td align="center"><a href="https://blog.zhheo.com/">张洪Heo - 分享设计与科技生活 (zhheo.com)</a></td><td align="center"><a href="https://blog.zhheo.com/p/3aae.html">123云盘也开始收割了，事实证明靠免费来吸引用户然后再收割这招太好用张洪Heo (zhheo.com)</a></td><td align="center">290</td></tr></tbody></table><h3 id="其他文章"><a href="#其他文章" class="headerlink" title="其他文章"></a>其他文章</h3><table><thead><tr><th align="center">作者</th><th align="center">文章</th><th align="center">人气</th></tr></thead><tbody><tr><td align="center">Cquitra</td><td align="center"><a href="https://www.luogu.com/article/6ii7v8gk">Unity3D入门教程 1.1下载与安装Unity - 洛谷专栏 (luogu.com)</a></td><td align="center">-</td></tr></tbody></table><h1 id="本月-Top-3"><a href="#本月-Top-3" class="headerlink" title="本月 Top 3"></a>本月 Top 3</h1><p><img src="/img/article/15/1.png" alt="本月 Top3 分析"></p><h1 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h1><p>这一个月下来，我们要以最热烈的掌声欢迎本月明星——Cquitra！</p><p>不过他的博客还在建设，所以你们就看不了了（我教的awa）</p><div class="note  info flat fas fa-circle-info"><p>如果你也想入选，可以加入我们的友链！！</p></div><blockquote><p>MC-Sep 博客月报 | 总第一期 | 萌ICP备 20249023 号 | Sep ICP备20110104 号 | 总主编&#x2F;责任编辑：MC-Sep</p></blockquote><p>版权所有©MC-Sep 2023~2024.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;div class=&quot;note  info flat fas fa-circle-info&quot;&gt;&lt;p&gt;统计截止于 &lt;strong&gt;2024.9.30 15:00:00&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h1 id=&quot;你好，朋友！&quot;&gt;&lt;a href=&quot;#你好，朋友！&quot; c</summary>
      
    
    
    
    <category term="博客月报" scheme="https://blog.mc-sep.top/categories/%E5%8D%9A%E5%AE%A2%E6%9C%88%E6%8A%A5/"/>
    
    
    <category term="月报" scheme="https://blog.mc-sep.top/tags/%E6%9C%88%E6%8A%A5/"/>
    
  </entry>
  
  <entry>
    <title>关于博客评论更换的通知</title>
    <link href="https://blog.mc-sep.top/post/73dh.html"/>
    <id>https://blog.mc-sep.top/post/73dh.html</id>
    <published>2024-09-21T08:18:00.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<h1 id="关于博客评论更换的通知"><a href="#关于博客评论更换的通知" class="headerlink" title="关于博客评论更换的通知"></a>关于博客评论更换的通知</h1><p>亲爱的访问者们：</p><p>  你们好！<br>  2024年9月2日下午，Deta Space发出声明，Deta Space将于2024年10月17日的日落时分关闭，下面是具体的信息：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">Dear Deta Community,</span><br><span class="line"></span><br><span class="line">After an incredible run, we&#x27;ve made the difficult decision to shut down Deta Space. You can continue to login until sunset on October 17, 2024, at which point we will start deleting all Horizons, apps (hosted or installed) and data in Collections.</span><br><span class="line"></span><br><span class="line">We&#x27;ve built tools for exporting your data (and code for developers), with tutorials available in the docs.</span><br><span class="line"></span><br><span class="line">We wanted to thank you for joining the journey so far. Everything we&#x27;ve done wouldn&#x27;t have been possible without our community, mods, investors, and friends. We hope you&#x27;ll stick around for what&#x27;s next.</span><br><span class="line"></span><br><span class="line">What&#x27;s next for Deta?</span><br><span class="line">The team is working on what we think is our most exciting product yet: Deta Surf. We can&#x27;t wait to onboard people in the very near future. If you were a fan of Deta&#x27;s past products, we&#x27;d love if you popped by.</span><br><span class="line"></span><br><span class="line">Why are we sunsetting Space?</span><br><span class="line">As a team, we want computing on the web to be more personal, powerful and fun. Space (&amp; our earlier products) were built in this vein. But they didn&#x27;t really hit enough for us to continue. We&#x27;re a startup and at some point, we have to move on from good (&amp; bad) products in search of really great ones.</span><br><span class="line"></span><br><span class="line">We&#x27;re still searching, and the team is working on Deta Surf. We&#x27;ve been pretty quiet about it, but it takes learnings from everything we&#x27;ve built. We&#x27;d love if you checked it out.</span><br><span class="line"></span><br><span class="line">What about my account?</span><br><span class="line">You can export all your code and data. You can decide if you want to delete your account entirely or be kept in the loop about Deta Surf .</span><br><span class="line"></span><br><span class="line">How long will the service be available?</span><br><span class="line">The service will be available until October 17, 2024. After that, all Horizons, apps (hosted or installed) and data in Collections will be deleted.</span><br></pre></td></tr></table></figure><p>  由于本人的 Waline 评论系统部署在 Deta Space，所以从2024.9.12开始，本人开始通过Netlify和MongoDB搭建Twikoo评论系统。本人同样尝试过使用Vercel、Netlify+Leancloud搭建Waline评论系统，评论系统搭建成功，但是导入数据时发生了错误：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">500: Class or object doesn&#x27;t exists. [404 GET https://*********.api.lncldglobal.com/1.1/classes/Counter]</span><br></pre></td></tr></table></figure><p>  故此博客将从Waline改为Twikoo为主要系统，对于之前的评论数据，我们别无选择。<br>  对此，请所有人于2024.10.17日前转至Twikoo评论系统，10.17日后将更换全新数据库！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;关于博客评论更换的通知&quot;&gt;&lt;a href=&quot;#关于博客评论更换的通知&quot; class=&quot;headerlink&quot; title=&quot;关于博客评论更换的通知&quot;&gt;&lt;/a&gt;关于博客评论更换的通知&lt;/h1&gt;&lt;p&gt;亲爱的访问者们：&lt;/p&gt;
&lt;p&gt;  你们好！&lt;br&gt;  2024年9</summary>
      
    
    
    
    <category term="公告" scheme="https://blog.mc-sep.top/categories/%E5%85%AC%E5%91%8A/"/>
    
    
    <category term="Waline" scheme="https://blog.mc-sep.top/tags/Waline/"/>
    
    <category term="Twikoo" scheme="https://blog.mc-sep.top/tags/Twikoo/"/>
    
  </entry>
  
  <entry>
    <title>免费小型数据库——Vercel Blob初体验</title>
    <link href="https://blog.mc-sep.top/post/239d.html"/>
    <id>https://blog.mc-sep.top/post/239d.html</id>
    <published>2024-09-16T12:18:00.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>这几天我不是搞了一个图床吗？</p><p>他的配置还不错的：</p><table><thead><tr><th align="center">计划</th><th align="center">数据库大小</th><th align="center">读</th><th align="center">写</th><th align="center">请求数</th><th align="center">请求时长</th><th align="center">是否要Projects</th></tr></thead><tbody><tr><td align="center">Hobby</td><td align="center">250MB&#x2F;Month</td><td align="center">100 Millions&#x2F;Month</td><td align="center">100 Millions&#x2F;Month</td><td align="center">100 Millions&#x2F;Month</td><td align="center">1 hour&#x2F;Month</td><td align="center">✅</td></tr><tr><td align="center">Pro</td><td align="center">未知</td><td align="center">未知</td><td align="center">未知</td><td align="center">未知</td><td align="center">未知</td><td align="center">✅</td></tr><tr><td align="center">Team</td><td align="center">未知</td><td align="center">未知</td><td align="center">未知</td><td align="center">未知</td><td align="center">未知</td><td align="center">✅</td></tr></tbody></table><p>今天就teach你怎么搞！</p><h1 id="实践"><a href="#实践" class="headerlink" title="实践"></a>实践</h1><ol><li><p>准备一个Vercel账号，可以直接用Github登录</p></li><li><p>创建存储库（点击快速创建）：<a href="https://vercel.com/new/mc-sep-vercel-team/clone?demo-description=Simple%20Next.js%20template%20that%20uses%20Vercel%20Blob%20for%20image%20uploads&demo-image=//images.ctfassets.net/e5382hct74si/W7szxXAHpF3eZ4RFT33Cb/4d8a64904b67980e449b487089dd7b2b/opengraph-image.png&demo-title=Vercel%20Blob%20Next.js%20Starter&demo-url=https://blob-starter.vercel.app/&project-name=blob-starter&repository-name=blob-starter&repository-url=https://github.com/vercel/examples/tree/main/storage/blob-starter&stores=%5B%7B%22type%22:%22blob%22%7D%5D">Create</a></p></li><li><p>在接下来的页面中，名字自己填，然后 Add 一个 Blob Store，确定即可</p></li></ol><p><img src="/img/article/13/db6a8c47c47a8e6a1a8612261ed977e7c6081bf45a699d8b675c2e2a7837a32c.png" alt="add vercel blob storage"></p><div class="note  warning flat fas fa-triangle-exclamation"><p>注意，每个用户只允许创建一个Vercel Blob Storage!</p></div><ol start="4"><li><p>直到满屏烟花，点击 <strong>Continue to Dashboard</strong>。</p></li><li><p>点击 <strong>Settings</strong> -&gt; <strong>Environment Variables</strong>，最下面找到名为 <code>BLOB_READ_WRITE_TOKEN</code> 的环境变量，点击复制，格式是这样的：</p></li></ol><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vercel_blob_rw_*************************************</span><br></pre></td></tr></table></figure><p><img src="/img/article/13/055fc988aad255241065ea6737692f16aee76e52558272107f3633d3a171d77a.png" alt="copy the envirnment variables"></p><ol start="6"><li>回到 <strong>Settings</strong> -&gt; <strong>Functions</strong>，将区域改为 <strong>Hong Kong (East) – hkg1</strong> 或 <strong>Tokyo, Japan (Northeast) – hnd1</strong></li></ol><p><img src="/img/article/13/9c1fdfb473e882beb42399ea02144f61e24fe5dfb0f49cc3e377db3d4007b6c8.png" alt="set functions"></p><ol start="7"><li>回到 Dashboard 主页面，点击这个进入创建的Github Repo:</li></ol><p><img src="/img/article/13/aefa06c390feaa84978126eafd0247ebf1e6eaa33fd90308ff7e46241f9b5321.png"></p><ol start="8"><li>打开文件 <strong>.env.example</strong>，将复制的内容粘贴在末尾，格式如下：</li></ol><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">BLOB_READ_WRITE_TOKEN=vercel_blob_rw_*******************************</span><br></pre></td></tr></table></figure><ol start="9"><li>打开 [Main Blob Storage] &#x2F; app &#x2F; page.tsx，修改里面的内容为中文（建议保留原站链接），可参照我的配置</li></ol><figure class="highlight tsx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> <span class="title class_">Image</span> <span class="keyword">from</span> <span class="string">&#x27;next/image&#x27;</span></span><br><span class="line"><span class="keyword">import</span> <span class="title class_">Link</span> <span class="keyword">from</span> <span class="string">&#x27;next/link&#x27;</span></span><br><span class="line"><span class="keyword">import</span> <span class="title class_">ExpandingArrow</span> <span class="keyword">from</span> <span class="string">&#x27;@/components/expanding-arrow&#x27;</span></span><br><span class="line"><span class="keyword">import</span> <span class="title class_">Uploader</span> <span class="keyword">from</span> <span class="string">&#x27;@/components/uploader&#x27;</span></span><br><span class="line"><span class="keyword">import</span> &#123; <span class="title class_">Toaster</span> &#125; <span class="keyword">from</span> <span class="string">&#x27;@/components/toaster&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">export</span> <span class="keyword">default</span> <span class="keyword">function</span> <span class="title function_">Home</span>(<span class="params"></span>) &#123;</span><br><span class="line">  <span class="keyword">return</span> (</span><br><span class="line">    <span class="language-xml"><span class="tag">&lt;<span class="name">main</span> <span class="attr">className</span>=<span class="string">&quot;relative flex min-h-screen flex-col items-center justify-center&quot;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;<span class="name">Toaster</span> /&gt;</span></span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;<span class="name">Link</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">        <span class="attr">href</span>=<span class="string">&quot;https://vercel.com/templates/next.js/blob-starter&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">        <span class="attr">className</span>=<span class="string">&quot;group mt-20 sm:mt-0 rounded-full flex space-x-1 bg-white/30 shadow-sm ring-1 ring-gray-900/5 text-gray-600 text-sm font-medium px-10 py-2 hover:shadow-lg active:shadow-sm transition-all&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">      &gt;</span></span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;<span class="name">p</span>&gt;</span>🎉使用Vercel免费搭建🎉<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;<span class="name">ExpandingArrow</span> /&gt;</span></span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;/<span class="name">Link</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;<span class="name">h1</span> <span class="attr">className</span>=<span class="string">&quot;pt-4 pb-8 bg-gradient-to-br from-black via-[#171717] to-[#575757] bg-clip-text text-center text-4xl font-medium tracking-tight text-transparent md:text-7xl&quot;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">        MC-Sep 免费网盘</span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;<span class="name">div</span> <span class="attr">className</span>=<span class="string">&quot;bg-white/30 p-12 shadow-xl ring-1 ring-gray-900/5 rounded-lg backdrop-blur-lg max-w-xl mx-auto w-full&quot;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;<span class="name">Uploader</span> /&gt;</span></span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;<span class="name">p</span> <span class="attr">className</span>=<span class="string">&quot;font-light text-gray-600 w-full max-w-lg text-center mt-6&quot;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;<span class="name">Link</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">          <span class="attr">href</span>=<span class="string">&quot;https://vercel.com/blob&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">          <span class="attr">className</span>=<span class="string">&quot;font-medium underline underline-offset-4 hover:text-black transition-colors&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">        &gt;</span></span></span><br><span class="line"><span class="language-xml">          Vercel Blob</span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;/<span class="name">Link</span>&gt;</span>&#123;&#x27; &#x27;&#125;</span></span><br><span class="line"><span class="language-xml">        Web. Built with&#123;&#x27; &#x27;&#125;</span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;<span class="name">Link</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">          <span class="attr">href</span>=<span class="string">&quot;https://nextjs.org/docs&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">          <span class="attr">className</span>=<span class="string">&quot;font-medium underline underline-offset-4 hover:text-black transition-colors&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">        &gt;</span></span></span><br><span class="line"><span class="language-xml">          Next.js App Router</span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;/<span class="name">Link</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">        .</span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;/<span class="name">p</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;<span class="name">div</span> <span class="attr">className</span>=<span class="string">&quot;sm:absolute sm:bottom-0 w-full px-20 py-10 flex justify-between&quot;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;<span class="name">Link</span> <span class="attr">href</span>=<span class="string">&quot;https://vercel.com&quot;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">          <span class="tag">&lt;<span class="name">Image</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">src</span>=<span class="string">&quot;/vercel.svg&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">alt</span>=<span class="string">&quot;Vercel Logo&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">width</span>=<span class="string">&#123;100&#125;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">height</span>=<span class="string">&#123;24&#125;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">priority</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">          /&gt;</span></span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;/<span class="name">Link</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;<span class="name">Link</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">          <span class="attr">href</span>=<span class="string">&quot;https://github.com/vercel/examples/tree/main/storage/blob-starter&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">          <span class="attr">className</span>=<span class="string">&quot;flex items-center space-x-2&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">        &gt;</span></span></span><br><span class="line"><span class="language-xml">          <span class="tag">&lt;<span class="name">Image</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">src</span>=<span class="string">&quot;/github.svg&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">alt</span>=<span class="string">&quot;GitHub Logo&quot;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">width</span>=<span class="string">&#123;24&#125;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">height</span>=<span class="string">&#123;24&#125;</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">            <span class="attr">priority</span></span></span></span><br><span class="line"><span class="tag"><span class="language-xml">          /&gt;</span></span></span><br><span class="line"><span class="language-xml">          <span class="tag">&lt;<span class="name">p</span> <span class="attr">className</span>=<span class="string">&quot;font-light&quot;</span>&gt;</span>Github<span class="tag">&lt;/<span class="name">p</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">        <span class="tag">&lt;/<span class="name">Link</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">      <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span><br><span class="line"><span class="language-xml">    <span class="tag">&lt;/<span class="name">main</span>&gt;</span></span></span><br><span class="line">  )</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ol start="10"><li>保存后，系统会重新部署一次，回到 <strong>Settings</strong> -&gt; <strong>Domains</strong>，添加你的域名（确保你的域名托管商已经添加记录为<code>A</code>:<strong>76.76.21.98</strong> 的记录，Add 即可。</li></ol><p><img src="/img/article/13/902e66cfb6bd99a53d7402fc6d61eb9d57b7995dac607c36b5190af4d7ba6771.png" alt="add domain"></p><ol start="11"><li>完工！</li></ol><div class="note  info flat fas fa-circle-info"><p>提示：可以在 <strong>Storage</strong> 页面查看存储库，状态，如大小、读写次数统计等。</p><p><img src="/img/article/13/790eebd56379643ae8fcb33c5994ddb0845a0720020a20fb9891829e4b49e42b.png" alt="View the Storage"></p><p><img src="/img/article/13/e20224e68a0c4f90f5d488748b8ddd1d0f01ea03d275ec8d10f6c05d948b940c.png" alt="See the storage message"></p></div><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>Vercel Blob是一个不错的存储系统，对Hobby计划用户很友好。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;这几天我不是搞了一个图床吗？&lt;/p&gt;
&lt;p&gt;他的配置还不错的：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;ce</summary>
      
    
    
    
    <category term="实用教程" scheme="https://blog.mc-sep.top/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Vercel" scheme="https://blog.mc-sep.top/tags/Vercel/"/>
    
    <category term="图床" scheme="https://blog.mc-sep.top/tags/%E5%9B%BE%E5%BA%8A/"/>
    
  </entry>
  
  <entry>
    <title>如何让你的博客更丰富？hexo常见插件推荐</title>
    <link href="https://blog.mc-sep.top/post/ugr2.html"/>
    <id>https://blog.mc-sep.top/post/ugr2.html</id>
    <published>2024-08-25T05:24:00.000Z</published>
    <updated>2025-05-31T01:45:23.723Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>如果你的 hexo 博客只是普通的搭建完成，那么也会缺少一些新意。下面是一些实用的hexo插件。</p><h1 id="hexo插件集"><a href="#hexo插件集" class="headerlink" title="hexo插件集"></a>hexo插件集</h1><h3 id="hexo-abbrlink"><a href="#hexo-abbrlink" class="headerlink" title="hexo-abbrlink"></a>hexo-abbrlink</h3><ol><li>安装：</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-abbrlink --save</span><br></pre></td></tr></table></figure><ol start="2"><li>当你hexo g时，这个插件会对未生成abbrlink的文章中的front matter里添加这个东西（据说此种格式有利于SEO优化）：</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">abbrlink: *****（随机数字）</span><br></pre></td></tr></table></figure><ol start="3"><li>也可以自定义，尽量使用字母和数字，空格用<code>-</code>替代，提升链接可读性。</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">abbrlink: 我的文章-my-post-*****</span><br></pre></td></tr></table></figure><h3 id="hexo-encrypt"><a href="#hexo-encrypt" class="headerlink" title="hexo-encrypt"></a>hexo-encrypt</h3><ol><li>安装</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install --save hexo-blog-encrypt</span><br></pre></td></tr></table></figure><ol start="2"><li>在front matter里输入<code>password: 你的密码</code>，如：</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">password: hello</span><br></pre></td></tr></table></figure><ol start="3"><li>那么在hexo中就是这样的画面：</li></ol><p><img src="/img/article/12/d068699b430414e617c92223c6e4ffc049da653fc65e572010c96bb320746b6f.png" alt="加密后"></p><ol start="4"><li>可以添加更多，如：</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">title: Hello World</span><br><span class="line">date: 2016-03-30 21:12:21</span><br><span class="line">password: 114514</span><br><span class="line">abstract: 有东西被加密了, 请输入密码查看. //系统信息</span><br><span class="line">message: 您好, 这里需要密码. //展示的信息</span><br><span class="line">wrong_pass_message: 抱歉, 这个密码看着不太对, 请再试试. //密码错误</span><br><span class="line">wrong_hash_message: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容. //hash解密错误</span><br><span class="line">---</span><br><span class="line"> </span><br></pre></td></tr></table></figure><p>或者在<code>_config.yml</code>里添加这些东西：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Security</span></span><br><span class="line"><span class="attr">encrypt:</span> <span class="comment"># hexo-blog-encrypt</span></span><br><span class="line">  <span class="attr">abstract:</span> <span class="string">有东西被加密了,</span> <span class="string">请输入密码查看.</span></span><br><span class="line">  <span class="attr">message:</span> <span class="string">您好,</span> <span class="string">这里需要密码.</span></span><br><span class="line">  <span class="attr">theme:</span> <span class="string">xray</span></span><br><span class="line">  <span class="attr">wrong_pass_message:</span> <span class="string">抱歉,</span> <span class="string">这个密码看着不太对,</span> <span class="string">请再试试.</span></span><br><span class="line">  <span class="attr">wrong_hash_message:</span> <span class="string">抱歉,</span> <span class="string">这个文章不能被校验,</span> <span class="string">不过您还是能看看解密后的内容.</span></span><br><span class="line"> </span><br></pre></td></tr></table></figure><h3 id="hexo-generator"><a href="#hexo-generator" class="headerlink" title="hexo-generator"></a>hexo-generator</h3><ol><li>安装（先第一个后第二个）</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm uninstall hexo-generator-index --save</span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-generator-index-pin-top --save</span><br></pre></td></tr></table></figure><ol start="2"><li>在front matter里添加<code>top: ***</code>数字越大文章越靠前</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">top: 114514</span><br></pre></td></tr></table></figure><h3 id="hexo-hide-posts"><a href="#hexo-hide-posts" class="headerlink" title="hexo-hide-posts"></a>hexo-hide-posts</h3><ol><li>安装</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-hide-posts --save</span><br></pre></td></tr></table></figure><ol start="2"><li>默认 <code>hidden: true</code> 用于隐藏，可以修改成<code>false</code></li></ol><h3 id="hexo-generator-feed"><a href="#hexo-generator-feed" class="headerlink" title="hexo-generator-feed"></a>hexo-generator-feed</h3><ol><li>安装</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-generator-feed --save</span><br></pre></td></tr></table></figure><ol start="2"><li>当你hexo d时会生成用于rss订阅，默认只获取文章摘要或者前140个字符</li></ol><h3 id="hexo-filter-nofollow"><a href="#hexo-filter-nofollow" class="headerlink" title="hexo-filter-nofollow"></a>hexo-filter-nofollow</h3><ol><li>安装</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm i hexo-filter-nofollow --save</span><br></pre></td></tr></table></figure><ol start="2"><li>可排除自定义域名。</li></ol><h3 id="hexo-submit-urls-to-search-engine"><a href="#hexo-submit-urls-to-search-engine" class="headerlink" title="hexo-submit-urls-to-search-engine"></a>hexo-submit-urls-to-search-engine</h3><ol><li>安装</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install --save hexo-submit-urls-to-search-engine</span><br></pre></td></tr></table></figure><ol start="2"><li>hexo d时自动提交链接到搜索引擎。提交效果不错，但百度放出页面的速度依旧感人，谷歌、必应、雅虎的收录速度很快。</li></ol><h3 id="markdown-it-ruby-与-hexo-pinyin-ruby-marks"><a href="#markdown-it-ruby-与-hexo-pinyin-ruby-marks" class="headerlink" title="markdown-it-ruby 与 hexo-pinyin-ruby-marks"></a>markdown-it-ruby 与 hexo-pinyin-ruby-marks</h3><ol><li>安装</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install markdown-it-ruby --save</span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-pinyin-ruby-marks</span><br></pre></td></tr></table></figure><ol start="2"><li>在<code>_config.yml</code>中输入以下内容：</li></ol><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">markdown:</span></span><br><span class="line">  <span class="attr">plugins:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">markdown-it-ruby</span></span><br></pre></td></tr></table></figure><ol start="3"><li>在文章中输入以下内容：</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% pinyin 初音未来|chu1 yin1 wei4 lai2 %&#125; </span><br></pre></td></tr></table></figure><ol start="4"><li>即可看到文字上的拼音注音效果</li></ol><h3 id="hexo-pangu"><a href="#hexo-pangu" class="headerlink" title="hexo-pangu"></a>hexo-pangu</h3><ol><li>安装</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-pangu</span><br></pre></td></tr></table></figure><ol start="2"><li>送给所有中英混输必须加空格的强迫症患者。（但愿跟其它插件不存在冲突）</li></ol><h3 id="hexo-broken-links-checker"><a href="#hexo-broken-links-checker" class="headerlink" title="hexo-broken-links-checker"></a>hexo-broken-links-checker</h3><ol><li>安装</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-broken-links-checker --save-dev</span><br></pre></td></tr></table></figure><ol start="2"><li>检查</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npx hexo check-links</span><br></pre></td></tr></table></figure><ol start="3"><li>等待一会就会出现：</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">WARN  The following links are broken:</span><br><span class="line">   - https://</span><br></pre></td></tr></table></figure><h3 id="hexo-tag-qrcode"><a href="#hexo-tag-qrcode" class="headerlink" title="hexo-tag-qrcode"></a>hexo-tag-qrcode</h3><ol><li>安装</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm i hexo-tag-qrcode</span><br></pre></td></tr></table></figure><ol start="2"><li>在文章中输入：</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% qrcode &quot;自定义内容&quot; %&#125;</span><br></pre></td></tr></table></figure><h1 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h1><p>文章中的插件可以评论提示我你喜欢的插件，我可能会采纳！</p><p>版权所有©MC-Sep 2024.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;如果你的 hexo 博客只是普通的搭建完成，那么也会缺少一些新意。下面是一些实用的hexo插件。&lt;/p&gt;
&lt;h1 id=&quot;hexo插件集&quot;&gt;</summary>
      
    
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/categories/Hexo/"/>
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/tags/Hexo/"/>
    
    <category term="Hexo插件" scheme="https://blog.mc-sep.top/tags/Hexo%E6%8F%92%E4%BB%B6/"/>
    
  </entry>
  
  <entry>
    <title>博客一周年记</title>
    <link href="https://blog.mc-sep.top/post/te2r.html"/>
    <id>https://blog.mc-sep.top/post/te2r.html</id>
    <published>2024-08-19T05:24:00.000Z</published>
    <updated>2025-05-31T01:45:23.723Z</updated>
    
    <content type="html"><![CDATA[<p>  不知不觉，我的博客已经建设一年多了。在这年里，我更换了<strong>4</strong>个主题，写了<strong>53+<strong>篇文章（无关的&#x2F;删除的42篇），更换了</strong>6</strong>次域名，网站超<strong>13000</strong>人访问，超<strong>1000</strong>个访客访问了这里！<br>  下面是我的博客历程！</p><h1 id="Part1-框架Hexo"><a href="#Part1-框架Hexo" class="headerlink" title="Part1.框架Hexo"></a>Part1.框架Hexo</h1><p>  2023年的一天，我的好基友<strong>serverdream</strong>找到我说：“有兴趣搭建一个blog吗？我告诉你！”于是我便跟着他学起来<strong>Hexo</strong>，这也是我的博客始发站。</p><h1 id="Part-2-第一代个人博客：Fluid"><a href="#Part-2-第一代个人博客：Fluid" class="headerlink" title="Part 2.第一代个人博客：Fluid"></a>Part 2.第一代个人博客：Fluid</h1><p>  2023年10月，我找到了一个看着不错的hexo主题：<strong>Fluid</strong>：</p><p><img src="/img/article/11/03e54b7d612f8bc422da789642c98e12d582b5e2600cf8916b68850033a87837.png" alt="Fluid主题"></p><p>  我使用了Github Pages，域名仍是有效的：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://sepiatruck34735.github.io/</span><br></pre></td></tr></table></figure><h1 id="Part3-Serpblog的建设"><a href="#Part3-Serpblog的建设" class="headerlink" title="Part3.Serpblog的建设"></a>Part3.Serpblog的建设</h1><p>  同月，serverdream提出一个想法：“我们一起做一个C++的博客，让更多人学把”，我也答应了，历时三个月，也是把Serpblog建设好了：</p><p><img src="/img/article/11/680406de5438f800869975fdde94dba8d250c7101fb87521d2542fc0727403a1.png" alt="Serpblog"></p><p>  之后我们也搞了交流群，也有人加入了学习，但在2024年2月，群员 <strong>Crewwhite</strong> 发现来来去去就那几个人看，我便有了想放弃的想法。</p><p>  2024年同月，因学业问题，Serpblog迎来“大休假”。现在的Serpblog已超2000次访问，链接仍有效：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://serpblog.github.io/</span><br></pre></td></tr></table></figure><h1 id="Part4-第二代个人博客：Aurora"><a href="#Part4-第二代个人博客：Aurora" class="headerlink" title="Part4.第二代个人博客：Aurora"></a>Part4.第二代个人博客：Aurora</h1><p>  这是最没人气的一次更新，才用了2天就不用了（悲）</p><h1 id="Part5-第三代个人博客：Anzhiyu"><a href="#Part5-第三代个人博客：Anzhiyu" class="headerlink" title="Part5.第三代个人博客：Anzhiyu"></a>Part5.第三代个人博客：Anzhiyu</h1><p>  从Serpblog受到启发，开始自己搭建anzhiyu主题。</p><p>  2024年3月，我完成了我的主题，并开始了三个月不间断的更新：</p><p><img src="/img/article/11/5bb94d6d8ac6f50273fe15236fc14acdb506f5cd42cc0083049823be4ac4a4df.png" alt="博客完成"></p><p>  2024年4月，面对慢成Dog的Github Pages，我也发现了Gitee Pages、Cloudflare Pages和Codeberg Pages，注册了三个域名。</p><p>  直到2024年6月，我发现了一个新主题：<strong>Solitude</strong></p><p><img src="/img/article/11/b35a8a5858ff89fdb93bab3152f1ce5cadee599c433b19c1a4153708d2083e54.png" alt="主题Solitude简介"></p><p>  对比官方已经停更的Anzhiyu，Solitude主题更有发展性。犹豫几天，也是放弃了Anzhiyu，把博客数据全部转移了。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">https://minecraftsep.pages.dev</span><br><span class="line">https://minecraftsep.github.io</span><br></pre></td></tr></table></figure><h1 id="Part6-第四代个人博客：Solitude"><a href="#Part6-第四代个人博客：Solitude" class="headerlink" title="Part6.第四代个人博客：Solitude"></a>Part6.第四代个人博客：Solitude</h1><p>  2024年6月底，我完成了这个博客的建设，也就是你们现在看到的。</p><p>  托管方我换成了<strong>Vercel</strong>，域名更换为<strong>mc-sep.js.cool</strong>，详见<a href="/weblink"><strong>换线界面</strong></a></p><h1 id="Part7-总结"><a href="#Part7-总结" class="headerlink" title="Part7.总结"></a>Part7.总结</h1><p>  这一年博客磕磕绊绊，终于算是稳定了。</p><p>  这是我第一次写年度总结，希望这不是最后一次！</p><p>  版权所有©MC-Sep 2024.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;  不知不觉，我的博客已经建设一年多了。在这年里，我更换了&lt;strong&gt;4&lt;/strong&gt;个主题，写了&lt;strong&gt;53+&lt;strong&gt;篇文章（无关的&amp;#x2F;删除的42篇），更换了&lt;/strong&gt;6&lt;/strong&gt;次域名，网站超&lt;strong&gt;13000&lt;/</summary>
      
    
    
    
    <category term="周年记" scheme="https://blog.mc-sep.top/categories/%E5%91%A8%E5%B9%B4%E8%AE%B0/"/>
    
    
    <category term="周年记" scheme="https://blog.mc-sep.top/tags/%E5%91%A8%E5%B9%B4%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>免费域名怎么弄？常见免费域名指南</title>
    <link href="https://blog.mc-sep.top/post/re8u.html"/>
    <id>https://blog.mc-sep.top/post/re8u.html</id>
    <published>2024-08-09T08:39:00.000Z</published>
    <updated>2025-05-31T01:45:23.721Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>要开学了！你们的作业怎么样了？<del>反正我没写完</del></p><p>回归正题，有些人是没有自己的域名的（<del>比如我</del>），所以想让网站访问速度快就不行了……</p><p>今天我就整理了常见的免费域名，分享给大家。</p><h1 id="举几个栗子"><a href="#举几个栗子" class="headerlink" title="举几个栗子"></a>举几个栗子</h1><h3 id="1-Freenom"><a href="#1-Freenom" class="headerlink" title="1. Freenom"></a>1. Freenom</h3><p>这个在2023年就停止使用了，原因是部分免费域名被用来做#$网站，这还是很可惜的，因为这个网站可以注册顶级域名，如<code>.tk</code>，已经注册过的网站也无法访问了。</p><p>地址：<a href="https://www.freenom.com/zh/index.html?lang=zh">https://www.freenom.com/zh/index.html?lang=zh</a></p><h3 id="2-Willin-Wang-Free-Domains"><a href="#2-Willin-Wang-Free-Domains" class="headerlink" title="2. Willin Wang Free Domains"></a>2. Willin Wang Free Domains</h3><p>这个我在我的部分文章里出现过，也挺不错的。</p><p>可注册域名：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">***.js.cool（墙裂推荐）、***.sh.gg、***.log.lu、***.css.fund、***.kaiyuan.fund、***.v0.chat、***.憨憨.我爱你</span><br></pre></td></tr></table></figure><p>优点：访问快，使用方便<br>缺点：要审核，多次因为重复用途而注册会被拒绝（拒绝后就浪费了一次注册机会），比如：</p><p><img src="/img/article/10/0c02ff6cc4207d10ee23c2d8fe2c7caccad331bfd7a61607e12973152cc7b1ba.png" alt="被拒绝名场面"></p><p>地址：<a href="https://domain.willin.wang/">https://domain.willin.wang/</a></p><p>方法：</p><ol><li>打开链接，点击右上角用户图标</li><li>点击<strong>使用Github登录</strong>，在Github里完成授权</li><li>进入控制台，会发现一个都不能创建，我们要进入 <a href="https://github.com/willin">https://github.com/willin</a> 后，点击<strong>Follow</strong></li><li>返回控制台刷新后会发现可以创建了</li><li>点击<strong>创建</strong>，输入名字，填写好域名记录，要部署到哪里就按照部署商的提示填，注意CDN Proxy开不开都行，同意隐私条款，创建即可</li><li>等待审核，通过后会有这个画面：</li></ol><p><img src="/img/article/10/f194ede44a20431d79396a4dda50ebf14539158a8a1b167fb3aeac4c9b6b6d53.png" alt="Access"></p><h3 id="3-Namecheap"><a href="#3-Namecheap" class="headerlink" title="3. Namecheap"></a>3. Namecheap</h3><p>不太行，因为这是为外国学生开放的（免费），要验证外国邮箱，有的可以逝世看。</p><p>可注册域名：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">***.me（Free）、***.com、***.io、***.tech、***.website</span><br></pre></td></tr></table></figure><p>优点：免费好用<br>缺点：没外国邮箱用不了</p><p>地址：<a href="https://nc.me/">https://nc.me/</a></p><h3 id="4-CO-UK"><a href="#4-CO-UK" class="headerlink" title="4. CO.UK"></a>4. CO.UK</h3><p>英国的免费域名，首年免费，但是进去很慢。</p><p>可注册域名：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">***.co.uk、***.uk</span><br></pre></td></tr></table></figure><p>有点：免费顶级域名<br>缺点：仅首年免费</p><p>地址：<a href="https://www.names.co.uk/">https://www.names.co.uk/</a></p><h3 id="5-PP-UA"><a href="#5-PP-UA" class="headerlink" title="5. PP.UA"></a>5. PP.UA</h3><p>可注册域名：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">***.pp.ua</span><br></pre></td></tr></table></figure><p>优点：长期免费<br>缺点：No</p><p>地址：<a href="https://nic.ua/en/domains">https://nic.ua/en/domains</a></p><h3 id="6-EU-ORG"><a href="#6-EU-ORG" class="headerlink" title="6. EU.ORG"></a>6. EU.ORG</h3><p>由 United Kingdom 的黑客组织运营，提供免费域名注册，虽然界面简陋，但能注册且真正免费，人工审核时间相对长。</p><p>可注册域名：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">***.eu.org</span><br></pre></td></tr></table></figure><p>优点：长期免费<br>缺点：审核时间长</p><p>地址：<a href="https://nic.eu.org/">https://nic.eu.org</a></p><h3 id="7-JS-ORG"><a href="#7-JS-ORG" class="headerlink" title="7. JS.ORG"></a>7. JS.ORG</h3><p>不提供自定义。只解析运行于Github Pages上的内容（也可以是自己的链接）</p><p>可注册域名：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">***.js.org</span><br></pre></td></tr></table></figure><p>优点：长期免费<br>缺点：普通用户不太好注册</p><p>地址：<a href="https://js.org/">https://js.org</a></p><h3 id="8-One"><a href="#8-One" class="headerlink" title="8. One"></a>8. One</h3><p>one.com 针对新冠疫情，推出 one 域名第一年免费，现在也已经变成了购买主机服务后的增值附加服务了，仍旧是免费1年，不是很推荐。</p><p>可注册域名：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">***.one</span><br></pre></td></tr></table></figure><p>优点：顶级域名<br>缺点：要买主机后才有</p><p>地址：<a href="https://www.one.com/">https://www.one.com</a></p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>这就是我推荐的几个免费域名，如果你也有更好的可以在评论区留言反馈，我也会收录的。</p><p>版权所有©MC-Sep 2024.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;要开学了！你们的作业怎么样了？&lt;del&gt;反正我没写完&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;回归正题，有些人是没有自己的域名的（&lt;del&gt;比如我&lt;/de</summary>
      
    
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/categories/Hexo/"/>
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/tags/Hexo/"/>
    
    <category term="Pages" scheme="https://blog.mc-sep.top/tags/Pages/"/>
    
  </entry>
  
  <entry>
    <title>利用Cloudflare Workers搭建镜像网站</title>
    <link href="https://blog.mc-sep.top/post/437r.html"/>
    <id>https://blog.mc-sep.top/post/437r.html</id>
    <published>2024-08-01T04:44:00.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>有时候，一些问题让我们困扰：有人刷网站流量，相加IP黑名单不知道怎么加？很讨厌日本<del>排核污水</del>，想要禁止国外访问？……</p><p>那么，Cloudflare Workers可以轻松解决这个问题！</p><h1 id="实践"><a href="#实践" class="headerlink" title="实践"></a>实践</h1><ol><li>准备你的Cloudflare账号</li><li>来到主页 -&gt; Workers 和 Pages，点击<strong>创建</strong>：</li></ol><p><img src="/img/article/9/0a3f065ee67cb5cc8ea68ca4ccb0246738c375a7568fade1b9088a56853dc942.png"></p><ol start="3"><li>选择<strong>创建Workers</strong></li><li>输入名字，其他不用管，点击<strong>部署</strong>：</li></ol><p><img src="/img/article/9/0276d1893166ba101c767dd8894a8e7ff6c545e036597ef45bd6563f96da8fd5.png"></p><ol start="5"><li>进入控制台，选择<strong>编辑代码</strong>（右上角）：</li></ol><p><img src="/img/article/9/6918aa668530f92bc3b85f068d97a733b7b636ee09e162eb91f73b44c07684b4.png"></p><ol start="6"><li>将里面的代码全部删除，粘贴下列代码并做好修改：</li></ol><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 反代目标网站（修改）</span></span><br><span class="line"><span class="keyword">const</span> upstream = <span class="string">&#x27;google.com&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 反代目标网站的移动版（没有可不填）</span></span><br><span class="line"><span class="keyword">const</span> upstream_mobile = <span class="string">&#x27;google.com&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 访问区域黑名单（按需设置，使用国家简称，如CN,JP,US等）</span></span><br><span class="line"><span class="keyword">const</span> blocked_region = [<span class="string">&#x27;TK&#x27;</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment">// IP地址黑名单（按需设置）</span></span><br><span class="line"><span class="keyword">const</span> blocked_ip_address = [<span class="string">&#x27;0.0.0.0&#x27;</span>, <span class="string">&#x27;127.0.0.1&#x27;</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment">// 路径替换（你的网站）</span></span><br><span class="line"><span class="keyword">const</span> replace_dict = &#123;</span><br><span class="line"><span class="string">&#x27;$upstream&#x27;</span>: <span class="string">&#x27;$custom_domain&#x27;</span>,</span><br><span class="line"><span class="string">&#x27;//archiveofourown.org&#x27;</span>: <span class="string">&#x27;&#x27;</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="title function_">addEventListener</span>(<span class="string">&#x27;fetch&#x27;</span>, <span class="function"><span class="params">event</span> =&gt;</span> &#123;</span><br><span class="line">event.<span class="title function_">respondWith</span>(<span class="title function_">fetchAndApply</span>(event.<span class="property">request</span>));</span><br><span class="line">&#125;)</span><br><span class="line"></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">fetchAndApply</span>(<span class="params">request</span>) &#123;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> region = request.<span class="property">headers</span>.<span class="title function_">get</span>(<span class="string">&#x27;cf-ipcountry&#x27;</span>).<span class="title function_">toUpperCase</span>();</span><br><span class="line"><span class="keyword">const</span> ip_address = request.<span class="property">headers</span>.<span class="title function_">get</span>(<span class="string">&#x27;cf-connecting-ip&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> user_agent = request.<span class="property">headers</span>.<span class="title function_">get</span>(<span class="string">&#x27;user-agent&#x27;</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">let</span> response = <span class="literal">null</span>;</span><br><span class="line"><span class="keyword">let</span> url = <span class="keyword">new</span> <span class="title function_">URL</span>(request.<span class="property">url</span>);</span><br><span class="line"><span class="keyword">let</span> url_host = url.<span class="property">host</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> (url.<span class="property">protocol</span> == <span class="string">&#x27;http:&#x27;</span>) &#123;</span><br><span class="line">    url.<span class="property">protocol</span> = <span class="string">&#x27;https:&#x27;</span></span><br><span class="line">    response = <span class="title class_">Response</span>.<span class="title function_">redirect</span>(url.<span class="property">href</span>);</span><br><span class="line">    <span class="keyword">return</span> response;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">await</span> <span class="title function_">device_status</span>(user_agent)) &#123;</span><br><span class="line">    <span class="keyword">var</span> upstream_domain = upstream;</span><br><span class="line">&#125; <span class="keyword">else</span> &#123;</span><br><span class="line">    <span class="keyword">var</span> upstream_domain = upstream_mobile;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">url.<span class="property">host</span> = upstream_domain;</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> (blocked_region.<span class="title function_">includes</span>(region)) &#123;</span><br><span class="line">    response = <span class="keyword">new</span> <span class="title class_">Response</span>(<span class="string">&#x27;Access denied: WorkersProxy is not available in your region yet.&#x27;</span>, &#123;</span><br><span class="line">        <span class="attr">status</span>: <span class="number">403</span></span><br><span class="line">    &#125;);</span><br><span class="line">&#125; <span class="keyword">else</span> <span class="keyword">if</span>(blocked_ip_address.<span class="title function_">includes</span>(ip_address))&#123;</span><br><span class="line">    response = <span class="keyword">new</span> <span class="title class_">Response</span>(<span class="string">&#x27;Access denied: Your IP address is blocked by WorkersProxy.&#x27;</span>, &#123;</span><br><span class="line">        <span class="attr">status</span>: <span class="number">403</span></span><br><span class="line">    &#125;);</span><br><span class="line">&#125; <span class="keyword">else</span>&#123;</span><br><span class="line">    <span class="keyword">let</span> method = request.<span class="property">method</span>;</span><br><span class="line">    <span class="keyword">let</span> request_headers = request.<span class="property">headers</span>;</span><br><span class="line">    <span class="keyword">let</span> new_request_headers = <span class="keyword">new</span> <span class="title class_">Headers</span>(request_headers);</span><br><span class="line"></span><br><span class="line">    new_request_headers.<span class="title function_">set</span>(<span class="string">&#x27;Host&#x27;</span>, upstream_domain);</span><br><span class="line">    new_request_headers.<span class="title function_">set</span>(<span class="string">&#x27;Referer&#x27;</span>, url.<span class="property">href</span>);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">let</span> original_response = <span class="keyword">await</span> <span class="title function_">fetch</span>(url.<span class="property">href</span>, &#123;</span><br><span class="line">        <span class="attr">method</span>: method,</span><br><span class="line">        <span class="attr">headers</span>: new_request_headers</span><br><span class="line">    &#125;)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">let</span> original_response_clone = original_response.<span class="title function_">clone</span>();</span><br><span class="line">    <span class="keyword">let</span> original_text = <span class="literal">null</span>;</span><br><span class="line">    <span class="keyword">let</span> response_headers = original_response.<span class="property">headers</span>;</span><br><span class="line">    <span class="keyword">let</span> new_response_headers = <span class="keyword">new</span> <span class="title class_">Headers</span>(response_headers);</span><br><span class="line">    <span class="keyword">let</span> status = original_response.<span class="property">status</span>;</span><br><span class="line"></span><br><span class="line">    new_response_headers.<span class="title function_">set</span>(<span class="string">&#x27;cache-control&#x27;</span> ,<span class="string">&#x27;public, max-age=14400&#x27;</span>)</span><br><span class="line">    new_response_headers.<span class="title function_">set</span>(<span class="string">&#x27;access-control-allow-origin&#x27;</span>, <span class="string">&#x27;*&#x27;</span>);</span><br><span class="line">    new_response_headers.<span class="title function_">set</span>(<span class="string">&#x27;access-control-allow-credentials&#x27;</span>, <span class="literal">true</span>);</span><br><span class="line">    new_response_headers.<span class="title function_">delete</span>(<span class="string">&#x27;content-security-policy&#x27;</span>);</span><br><span class="line">    new_response_headers.<span class="title function_">delete</span>(<span class="string">&#x27;content-security-policy-report-only&#x27;</span>);</span><br><span class="line">    new_response_headers.<span class="title function_">delete</span>(<span class="string">&#x27;clear-site-data&#x27;</span>);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">const</span> content_type = new_response_headers.<span class="title function_">get</span>(<span class="string">&#x27;content-type&#x27;</span>);</span><br><span class="line">    <span class="keyword">if</span> (content_type.<span class="title function_">includes</span>(<span class="string">&#x27;text/html&#x27;</span>) &amp;&amp; content_type.<span class="title function_">includes</span>(<span class="string">&#x27;UTF-8&#x27;</span>)) &#123;</span><br><span class="line">        original_text = <span class="keyword">await</span> <span class="title function_">replace_response_text</span>(original_response_clone, upstream_domain, url_host);</span><br><span class="line">    &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">        original_text = original_response_clone.<span class="property">body</span></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    response = <span class="keyword">new</span> <span class="title class_">Response</span>(original_text, &#123;</span><br><span class="line">        status,</span><br><span class="line">        <span class="attr">headers</span>: new_response_headers</span><br><span class="line">    &#125;)</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> response;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">replace_response_text</span>(<span class="params">response, upstream_domain, host_name</span>) &#123;</span><br><span class="line"><span class="keyword">let</span> text = <span class="keyword">await</span> response.<span class="title function_">text</span>()</span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> i, j;</span><br><span class="line"><span class="keyword">for</span> (i <span class="keyword">in</span> replace_dict) &#123;</span><br><span class="line">    j = replace_dict[i]</span><br><span class="line">    <span class="keyword">if</span> (i == <span class="string">&#x27;$upstream&#x27;</span>) &#123;</span><br><span class="line">        i = upstream_domain</span><br><span class="line">    &#125; <span class="keyword">else</span> <span class="keyword">if</span> (i == <span class="string">&#x27;$custom_domain&#x27;</span>) &#123;</span><br><span class="line">        i = host_name</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">if</span> (j == <span class="string">&#x27;$upstream&#x27;</span>) &#123;</span><br><span class="line">        j = upstream_domain</span><br><span class="line">    &#125; <span class="keyword">else</span> <span class="keyword">if</span> (j == <span class="string">&#x27;$custom_domain&#x27;</span>) &#123;</span><br><span class="line">        j = host_name</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">let</span> re = <span class="keyword">new</span> <span class="title class_">RegExp</span>(i, <span class="string">&#x27;g&#x27;</span>)</span><br><span class="line">    text = text.<span class="title function_">replace</span>(re, j);</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> text;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">device_status</span> (user_agent_info) &#123;</span><br><span class="line"><span class="keyword">var</span> agents = [<span class="string">&quot;Android&quot;</span>, <span class="string">&quot;iPhone&quot;</span>, <span class="string">&quot;SymbianOS&quot;</span>, <span class="string">&quot;Windows Phone&quot;</span>, <span class="string">&quot;iPad&quot;</span>, <span class="string">&quot;iPod&quot;</span>];</span><br><span class="line"><span class="keyword">var</span> flag = <span class="literal">true</span>;</span><br><span class="line"><span class="keyword">for</span> (<span class="keyword">var</span> v = <span class="number">0</span>; v &lt; agents.<span class="property">length</span>; v++) &#123;</span><br><span class="line">    <span class="keyword">if</span> (user_agent_info.<span class="title function_">indexOf</span>(agents[v]) &gt; <span class="number">0</span>) &#123;</span><br><span class="line">        flag = <span class="literal">false</span>;</span><br><span class="line">        <span class="keyword">break</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">return</span> flag;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ol start="7"><li>点击右上角部署，等待几分钟即可出现反代网站：</li></ol><p><img src="/img/article/9/66ab1781dad21.png"></p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://你填的名字.账户名（邮箱@前的东西）.workers.dev</span><br></pre></td></tr></table></figure><div class="note  warning flat fas fa-triangle-exclamation"><p>当你使用限制的IP或国家访问时，会弹出403报错：<code>Access denied: WorkersProxy is not available in your region yet.</code>或<code>Access denied: Your IP address is blocked by WorkersProxy.</code>。</p></div><div class="note  danger flat fas fa-circle-xmark"><p>因为<code>workers.dev</code>在中国已被污染无法访问，请自定义域名进行访问：</p><p>设置 -&gt; 触发器 -&gt; 添加自定义域</p></div><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>CloudFlare Workers相当于免费给我们多了IP保护，并且每日有<strong>10w</strong>的请求量，足够一日使用，还自带DDos防护，一举两得。</p><p>版权所有©MC-Sep 2024.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;有时候，一些问题让我们困扰：有人刷网站流量，相加IP黑名单不知道怎么加？很讨厌日本&lt;del&gt;排核污水&lt;/del&gt;，想要禁止国外访问？……&lt;/</summary>
      
    
    
    
    <category term="Cloudflare" scheme="https://blog.mc-sep.top/categories/Cloudflare/"/>
    
    
    <category term="Cloudflare" scheme="https://blog.mc-sep.top/tags/Cloudflare/"/>
    
  </entry>
  
  <entry>
    <title>API构建①——Bing每日一图接口</title>
    <link href="https://blog.mc-sep.top/post/r5fd.html"/>
    <id>https://blog.mc-sep.top/post/r5fd.html</id>
    <published>2024-07-31T11:47:00.000Z</published>
    <updated>2025-05-31T01:45:23.721Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>众所周知，bing的每日一图都特别beautiful，在我们的blog里也起到了很好的装饰作用。那就有人问了，HOW TO GET IT？今天我就来教你们构建属于自己的bing每日一图API！</p><h1 id="实践"><a href="#实践" class="headerlink" title="实践"></a>实践</h1><h3 id="Part1-了解bing每日一图链接规律"><a href="#Part1-了解bing每日一图链接规律" class="headerlink" title="Part1. 了解bing每日一图链接规律"></a>Part1. 了解bing每日一图链接规律</h3><p>就拿今天的做例子：<a href="https://cn.bing.com/th?id=OHR.HoodoosBryce_ZH-CN8398575172_1920x1080.jpg">https://cn.bing.com/th?id=OHR.HoodoosBryce_ZH-CN8398575172_1920x1080.jpg</a></p><p>获取到的json内容如下所示：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;images&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">        <span class="punctuation">&#123;</span></span><br><span class="line">            <span class="attr">&quot;startdate&quot;</span><span class="punctuation">:</span> <span class="string">&quot;20240730&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;fullstartdate&quot;</span><span class="punctuation">:</span> <span class="string">&quot;202407301600&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;enddate&quot;</span><span class="punctuation">:</span> <span class="string">&quot;20240731&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/th?id=OHR.HoodoosBryce_ZH-CN8398575172_1920x1080.jpg&amp;rf=LaDigue_1920x1080.jpg&amp;pid=hp&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;urlbase&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/th?id=OHR.HoodoosBryce_ZH-CN8398575172&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;copyright&quot;</span><span class="punctuation">:</span> <span class="string">&quot;石林，日落点，布莱斯峡谷国家公园，犹他州，美国 (© Tim Fitzharris/Minden Pictures)&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;copyrightlink&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://www.bing.com/search?q=%E5%B8%83%E8%8E%B1%E6%96%AF%E5%B3%A1%E8%B0%B7%E5%9B%BD%E5%AE%B6%E5%85%AC%E5%9B%AD&amp;form=hpcapt&amp;mkt=zh-cn&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;这里有“胡图”吗？&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;quiz&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/search?q=Bing+homepage+quiz&amp;filters=WQOskey:%22HPQuiz_20240730_HoodoosBryce%22&amp;FORM=HPQUIZ&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;wp&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;hsh&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1cabac064d004edabc8b0d2e375052ae&quot;</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;drk&quot;</span><span class="punctuation">:</span> <span class="number">1</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;top&quot;</span><span class="punctuation">:</span> <span class="number">1</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;bot&quot;</span><span class="punctuation">:</span> <span class="number">1</span><span class="punctuation">,</span></span><br><span class="line">            <span class="attr">&quot;hs&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span></span><br><span class="line">        <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;tooltips&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;loading&quot;</span><span class="punctuation">:</span> <span class="string">&quot;正在加载...&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;previous&quot;</span><span class="punctuation">:</span> <span class="string">&quot;上一个图像&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;next&quot;</span><span class="punctuation">:</span> <span class="string">&quot;下一个图像&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;walle&quot;</span><span class="punctuation">:</span> <span class="string">&quot;此图片不能下载用作壁纸。&quot;</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">&quot;walls&quot;</span><span class="punctuation">:</span> <span class="string">&quot;下载今日美图。仅限用作桌面壁纸。&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>我们就可以猜出其中的规律了：</p><p><a href="https://cn.bing.com/">https://cn.bing.com</a> + 上面的”url”，构成了该链接。</p><h3 id="Part2-构建API"><a href="#Part2-构建API" class="headerlink" title="Part2. 构建API"></a>Part2. 构建API</h3><p>我们使用<strong>GET</strong>方法构建我们的API，名称为<code>bing.php</code>，也可以从 <a href="https://mc-sep.js.cool/api/bing.php">https://mc-sep.js.cool/api/bing.php</a> 下载！</p><ol><li>判断是否是随机调用（我们的API可以指定日期）</li></ol><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"><span class="keyword">if</span> (<span class="variable">$_GET</span>[<span class="string">&#x27;rand&#x27;</span>]===<span class="string">&#x27;true&#x27;</span>) &#123;</span><br><span class="line">  <span class="variable">$gettime</span> = <span class="title function_ invoke__">rand</span>(-<span class="number">1</span>,<span class="number">7</span>);</span><br></pre></td></tr></table></figure><ol start="2"><li>如果不是，则指定日期</li></ol><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">else</span>&#123;</span><br><span class="line">  <span class="variable">$gettimebase</span> = <span class="variable">$_GET</span>[<span class="string">&#x27;day&#x27;</span>];</span><br><span class="line">  <span class="keyword">if</span> (<span class="keyword">empty</span>(<span class="variable">$gettimebase</span>)) &#123;</span><br><span class="line">    <span class="variable">$gettime</span> = <span class="number">0</span>;</span><br><span class="line">  &#125;<span class="keyword">else</span>&#123;</span><br><span class="line">    <span class="variable">$gettime</span> = <span class="variable">$gettimebase</span>;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ol start="3"><li>获取Bing Json详细信息，转换为PHP数组，再提取基础URL</li></ol><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$json_string</span> = <span class="title function_ invoke__">file_get_contents</span>(<span class="string">&#x27;https://www.bing.com/HPImageArchive.aspx?format=js&amp;idx=&#x27;</span>.<span class="variable">$gettime</span>.<span class="string">&#x27;&amp;n=1&#x27;</span>);</span><br><span class="line"><span class="variable">$data</span> = <span class="title function_ invoke__">json_decode</span>(<span class="variable">$json_string</span>);</span><br><span class="line"><span class="variable">$imgurlbase</span> = <span class="string">&quot;https://www.bing.com&quot;</span>.<span class="variable">$data</span>-&gt;&#123;<span class="string">&quot;images&quot;</span>&#125;[<span class="number">0</span>]-&gt;&#123;<span class="string">&quot;urlbase&quot;</span>&#125;;</span><br></pre></td></tr></table></figure><ol start="4"><li>判断是否制定了图片大小，否则默认1920 * 1080</li></ol><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> (<span class="keyword">empty</span>(<span class="variable">$imgsizebase</span>))&#123;</span><br><span class="line">  <span class="variable">$imgsize</span> = <span class="string">&quot;1920x1080&quot;</span>;</span><br><span class="line">&#125;<span class="keyword">else</span>&#123;</span><br><span class="line">  <span class="variable">$imgsize</span> = <span class="variable">$imgsizebase</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ol start="5"><li>建立完整URL</li></ol><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$imgurl</span> = <span class="variable">$imgurlbase</span>.<span class="string">&quot;_&quot;</span>.<span class="variable">$imgsize</span>.<span class="string">&quot;.jpg&quot;</span>;</span><br></pre></td></tr></table></figure><ol start="6"><li>获取其他信息并判断是否需要</li></ol><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$imgtime</span> = <span class="variable">$data</span>-&gt;&#123;<span class="string">&quot;images&quot;</span>&#125;[<span class="number">0</span>]-&gt;&#123;<span class="string">&quot;startdate&quot;</span>&#125;;</span><br><span class="line"><span class="variable">$imgtitle</span> = <span class="variable">$data</span>-&gt;&#123;<span class="string">&quot;images&quot;</span>&#125;[<span class="number">0</span>]-&gt;&#123;<span class="string">&quot;copyright&quot;</span>&#125;;</span><br><span class="line"><span class="variable">$imglink</span> = <span class="variable">$data</span>-&gt;&#123;<span class="string">&quot;images&quot;</span>&#125;[<span class="number">0</span>]-&gt;&#123;<span class="string">&quot;copyrightlink&quot;</span>&#125;;</span><br><span class="line"><span class="keyword">if</span> (<span class="variable">$_GET</span>[<span class="string">&#x27;info&#x27;</span>]===<span class="string">&#x27;true&#x27;</span>) &#123;</span><br><span class="line">  <span class="keyword">echo</span> <span class="string">&quot;&#123;title:&quot;</span>.<span class="variable">$imgtitle</span>.<span class="string">&quot;,url:&quot;</span>.<span class="variable">$imgurl</span>.<span class="string">&quot;,link:&quot;</span>.<span class="variable">$imglink</span>.<span class="string">&quot;,time:&quot;</span>.<span class="variable">$imgtime</span>.<span class="string">&quot;&#125;&quot;</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ol start="7"><li>不是则直接返回</li></ol><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">else</span>&#123;</span><br><span class="line">  <span class="title function_ invoke__">header</span>(<span class="string">&quot;Location: <span class="subst">$imgurl</span>&quot;</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><ol start="8"><li>完整代码</li></ol><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;?php</span></span><br><span class="line"><span class="keyword">if</span> (<span class="variable">$_GET</span>[<span class="string">&#x27;rand&#x27;</span>]===<span class="string">&#x27;true&#x27;</span>) &#123;</span><br><span class="line">  <span class="variable">$gettime</span> = <span class="title function_ invoke__">rand</span>(-<span class="number">1</span>,<span class="number">7</span>);</span><br><span class="line">&#125;<span class="keyword">else</span>&#123;</span><br><span class="line">  <span class="variable">$gettimebase</span> = <span class="variable">$_GET</span>[<span class="string">&#x27;day&#x27;</span>];</span><br><span class="line">  <span class="keyword">if</span> (<span class="keyword">empty</span>(<span class="variable">$gettimebase</span>)) &#123;</span><br><span class="line">    <span class="variable">$gettime</span> = <span class="number">0</span>;</span><br><span class="line">  &#125;<span class="keyword">else</span>&#123;</span><br><span class="line">    <span class="variable">$gettime</span> = <span class="variable">$gettimebase</span>;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="variable">$json_string</span> = <span class="title function_ invoke__">file_get_contents</span>(<span class="string">&#x27;https://www.bing.com/HPImageArchive.aspx?format=js&amp;idx=&#x27;</span>.<span class="variable">$gettime</span>.<span class="string">&#x27;&amp;n=1&#x27;</span>);</span><br><span class="line"><span class="variable">$data</span> = <span class="title function_ invoke__">json_decode</span>(<span class="variable">$json_string</span>);</span><br><span class="line"><span class="variable">$imgurlbase</span> = <span class="string">&quot;https://www.bing.com&quot;</span>.<span class="variable">$data</span>-&gt;&#123;<span class="string">&quot;images&quot;</span>&#125;[<span class="number">0</span>]-&gt;&#123;<span class="string">&quot;urlbase&quot;</span>&#125;;</span><br><span class="line"><span class="variable">$imgsizebase</span> = <span class="variable">$_GET</span>[<span class="string">&#x27;size&#x27;</span>];</span><br><span class="line"><span class="keyword">if</span> (<span class="keyword">empty</span>(<span class="variable">$imgsizebase</span>))&#123;</span><br><span class="line">  <span class="variable">$imgsize</span> = <span class="string">&quot;1920x1080&quot;</span>;</span><br><span class="line">&#125;<span class="keyword">else</span>&#123;</span><br><span class="line">  <span class="variable">$imgsize</span> = <span class="variable">$imgsizebase</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="variable">$imgurl</span> = <span class="variable">$imgurlbase</span>.<span class="string">&quot;_&quot;</span>.<span class="variable">$imgsize</span>.<span class="string">&quot;.jpg&quot;</span>;</span><br><span class="line"><span class="variable">$imgtime</span> = <span class="variable">$data</span>-&gt;&#123;<span class="string">&quot;images&quot;</span>&#125;[<span class="number">0</span>]-&gt;&#123;<span class="string">&quot;startdate&quot;</span>&#125;;</span><br><span class="line"><span class="variable">$imgtitle</span> = <span class="variable">$data</span>-&gt;&#123;<span class="string">&quot;images&quot;</span>&#125;[<span class="number">0</span>]-&gt;&#123;<span class="string">&quot;copyright&quot;</span>&#125;;</span><br><span class="line"><span class="variable">$imglink</span> = <span class="variable">$data</span>-&gt;&#123;<span class="string">&quot;images&quot;</span>&#125;[<span class="number">0</span>]-&gt;&#123;<span class="string">&quot;copyrightlink&quot;</span>&#125;;</span><br><span class="line"><span class="keyword">if</span> (<span class="variable">$_GET</span>[<span class="string">&#x27;info&#x27;</span>]===<span class="string">&#x27;true&#x27;</span>) &#123;</span><br><span class="line">  <span class="keyword">echo</span> <span class="string">&quot;&#123;title:&quot;</span>.<span class="variable">$imgtitle</span>.<span class="string">&quot;,url:&quot;</span>.<span class="variable">$imgurl</span>.<span class="string">&quot;,link:&quot;</span>.<span class="variable">$imglink</span>.<span class="string">&quot;,time:&quot;</span>.<span class="variable">$imgtime</span>.<span class="string">&quot;&#125;&quot;</span>;</span><br><span class="line">&#125;<span class="keyword">else</span>&#123;</span><br><span class="line">  <span class="title function_ invoke__">header</span>(<span class="string">&quot;Location: <span class="subst">$imgurl</span>&quot;</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>可以去参考一下API接口：</p><ul><li><a href="https://api.kdcc.cn/">https://api.kdcc.cn</a></li><li><a href="https://api.isoyu.com/bing_images.php">https://api.isoyu.com/bing_images.php</a></li><li><a href="http://api.muvip.cn//api/bing/index.php?rand=false&day=0&size=1920x1080&info=false">http://api.muvip.cn//api/bing/index.php?rand=false&amp;day=0&amp;size=1920x1080&amp;info=false</a></li><li><a href="https://source.unsplash.com/random">https://source.unsplash.com/random</a></li><li><a href="https://api.dujin.org/bing/1366.php">https://api.dujin.org/bing/1366.php</a></li><li><a href="https://picsum.photos/">https://picsum.photos/</a></li></ul><p>版权所有©MC-Sep 2024.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;众所周知，bing的每日一图都特别beautiful，在我们的blog里也起到了很好的装饰作用。那就有人问了，HOW TO GET IT？今</summary>
      
    
    
    
    <category term="PHP" scheme="https://blog.mc-sep.top/categories/PHP/"/>
    
    
    <category term="API" scheme="https://blog.mc-sep.top/tags/API/"/>
    
    <category term="PHP" scheme="https://blog.mc-sep.top/tags/PHP/"/>
    
  </entry>
  
  <entry>
    <title>【Hexo】Twikoo--评论系统的添加(2)</title>
    <link href="https://blog.mc-sep.top/post/rh35.html"/>
    <id>https://blog.mc-sep.top/post/rh35.html</id>
    <published>2024-07-08T08:18:00.000Z</published>
    <updated>2025-05-31T01:45:23.721Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>Twikoo作为一种轻量方便的评论系统，一度被许多博客使用。此文基于<a href="/post/7ghd.html">原文</a>继续添加一个评论系统，让你可以顺利<del>装逼</del>！(bushi)</p><h1 id="Part1-前端配置"><a href="#Part1-前端配置" class="headerlink" title="Part1. 前端配置"></a>Part1. 前端配置</h1><div class="note  danger flat fas fa-circle-xmark"><p>不同主题的方法与本文不同，但大体相似，部分博客没有双评论！</p></div><ol><li>找到评论并配置：</li></ol><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 评论</span></span><br><span class="line"><span class="comment"># comment</span></span><br><span class="line"><span class="comment"># getting start: </span></span><br><span class="line"><span class="attr">comment:</span></span><br><span class="line">  <span class="attr">use:</span> <span class="string">waline,twikoo</span> <span class="comment"># waline, twikoo, valine, artalk</span></span><br><span class="line">  <span class="attr">commentBarrage:</span> <span class="literal">true</span> <span class="comment"># 热评开关 / Hot comment switch</span></span><br><span class="line">  <span class="attr">lazyload:</span> <span class="literal">true</span> <span class="comment"># 懒加载</span></span><br><span class="line">  <span class="attr">count:</span> <span class="literal">true</span> <span class="comment"># 评论数展示</span></span><br><span class="line">  <span class="attr">pv:</span> <span class="literal">false</span> <span class="comment"># 是否使用評論統計頁面訪問</span></span><br><span class="line">  <span class="attr">avatar:</span> <span class="string">https://cravatar.cn</span> <span class="comment"># Gravatar link</span></span><br><span class="line">  <span class="attr">newest_comment:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="string">ture</span></span><br><span class="line">    <span class="attr">storage:</span> <span class="number">.5</span> <span class="comment"># 缓存时间 1: 1天 / .5 : 半天 / Cache time 1: 1 day .5 : half a day</span></span><br></pre></td></tr></table></figure><ol start="2"><li>找到Twikoo评论信息，不要关闭，等下还要使用：</li></ol><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># twikoo 配置信息</span></span><br><span class="line"><span class="comment"># twikoo settings</span></span><br><span class="line"><span class="attr">twikoo:</span>  <span class="comment"># https://twikoo.js.org/</span></span><br><span class="line">  <span class="attr">envId:</span> <span class="string">************************</span> <span class="comment"># url</span></span><br><span class="line">  <span class="attr">region:</span>  <span class="comment"># 环境地域，默认为 ap-shanghai，腾讯云环境填 ap-shanghai 或 ap-guangzhou；Vercel 环境不填</span></span><br><span class="line">  <span class="attr">style:</span> <span class="literal">true</span> <span class="comment"># Use custom styles when turned on / 开启后使用自定义样式</span></span><br><span class="line">  <span class="attr">accessToken:</span> <span class="comment"># AccessToken</span></span><br><span class="line">  <span class="attr">option:</span> <span class="comment"># twikoo option</span></span><br></pre></td></tr></table></figure><div class="note  info flat fas fa-circle-info"><p>如果你的博客不支持Twikoo，可以在你想引入的地方引入以下代码：</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;tcomment&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;https://cdn.jsdelivr.net/npm/twikoo@1.6.36/dist/twikoo.all.min.js&quot;</span> <span class="attr">integrity</span>=<span class="string">&quot;sha384-4KfOjEinLSkv1i1J8TzlkC/RTnuiLoR1OLerVgjEKoH5djYtbf7mzEFsz9p3nfuA&quot;</span> <span class="attr">crossorigin</span>=<span class="string">&quot;anonymous&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">twikoo.<span class="title function_">init</span>(&#123;</span></span><br><span class="line"><span class="language-javascript">  <span class="attr">envId</span>: <span class="string">&#x27;您的环境id&#x27;</span>, <span class="comment">// 腾讯云环境填 envId；Vercel 环境填地址（https://xxx.vercel.app）</span></span></span><br><span class="line"><span class="language-javascript">  <span class="attr">el</span>: <span class="string">&#x27;#tcomment&#x27;</span>, <span class="comment">// 容器元素</span></span></span><br><span class="line"><span class="language-javascript">  <span class="comment">// region: &#x27;ap-guangzhou&#x27;, // 环境地域，默认为 ap-shanghai，腾讯云环境填 ap-shanghai 或 ap-guangzhou；Vercel 环境不填</span></span></span><br><span class="line"><span class="language-javascript">  <span class="comment">// path: location.pathname, // 用于区分不同文章的自定义 js 路径，如果您的文章路径不是 location.pathname，需传此参数</span></span></span><br><span class="line"><span class="language-javascript">  <span class="comment">// lang: &#x27;zh-CN&#x27;, // 用于手动设定评论区语言，支持的语言列表 https://github.com/twikoojs/twikoo/blob/main/src/client/utils/i18n/index.js</span></span></span><br><span class="line"><span class="language-javascript">&#125;)</span></span><br><span class="line"><span class="language-javascript"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure></div><h1 id="Part2-配置后端"><a href="#Part2-配置后端" class="headerlink" title="Part2. 配置后端"></a>Part2. 配置后端</h1><h2 id="①使用腾讯云服务器"><a href="#①使用腾讯云服务器" class="headerlink" title="①使用腾讯云服务器"></a>①使用腾讯云服务器</h2><ol><li>进入云开发CloudBase活动页面，滚动到“新用户专享”部分，选择适合的套餐，点击“立即购买”，按提示创建好环境。</li></ol><div class="note  danger flat fas fa-circle-xmark"><p>推荐创建上海环境。如选择广州环境，需要在 twikoo.init() 时额外指定环境 region: “ap-guangzhou”<br>环境名称自由填写<br>推荐选择计费方式包年包月，套餐版本基础版 1，超出免费额度不会收费<br>如果提示选择“应用模板”，请选择“空模板”</p></div><ol start="2"><li>进入云开发控制台</li><li>进入环境-登录授权，启用“匿名登录”</li><li>进入环境-安全配置，将网站域名添加到“WEB安全域名”</li><li>进入环境-云函数，点击“新建云函数”</li><li>函数名称请填写：twikoo，创建方式请选择：空白函数，运行环境请选择：Nodejs 16.13，函数内存请选择：128MB，点击“下一步”</li><li>清空输入框中的示例代码，复制以下代码、粘贴到“函数代码”输入框中，点击“确定”</li></ol><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">exports</span>.<span class="property">main</span> = <span class="built_in">require</span>(<span class="string">&#x27;twikoo-func&#x27;</span>).<span class="property">main</span></span><br></pre></td></tr></table></figure><ol start="8"><li>创建完成后，点击“twikoo”进入云函数详情页，进入“函数代码”标签，点击“文件 - 新建文件”，输入 package.json，回车</li><li>复制以下代码、粘贴到代码框中，点击“保存并安装依赖”</li></ol><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span> <span class="attr">&quot;dependencies&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span> <span class="attr">&quot;twikoo-func&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1.6.36&quot;</span> <span class="punctuation">&#125;</span> <span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h2 id="②使用Vercel"><a href="#②使用Vercel" class="headerlink" title="②使用Vercel"></a>②使用Vercel</h2><div class="note  danger flat fas fa-circle-xmark"><p>Vercel的免费域名在国内已无法访问</p></div><ol><li><p>申请MongoDB账号，参考<a href="https://twikoo.js.org/mongodb-atlas.html">https://twikoo.js.org/mongodb-atlas.html</a></p></li><li><p>点击快速部署：</p></li></ol><p><a href="https://vercel.com/import/project?template=https://github.com/twikoojs/twikoo/tree/main/src/server/vercel-min"><img src="/img/article/6/button.svg"></a></p><ol start="3"><li>输入你喜欢的名字，点击<code>Create</code>:</li></ol><p><img src="/img/article/6/285b32b471fe35b7458082bf79b5de021a409eba384d63b3447c22a72f3b54f6.png"></p><ol start="4"><li>满屏烟花时点击<code>Continue to Dashboard</code>:</li></ol><p><img src="/img/article/6/81b3c0dca629f3a669198dbb517a142fdf51515a73b5045a2bc00d565e415b6b.png"></p><ol start="5"><li>点击<code>Settings</code>-&gt;<code>Environment Variables</code>，变量添加<code>MONGODB_URI</code>，内容则是你获取到的mongodb获取接口，点击<code>Save</code>：</li></ol><p><img src="/img/article/6/d8cac22ed204b505c9182ec91e02f78d9af40660e7aeae9f4a2426dc80178d3e.png"></p><ol start="6"><li>点击<code>Domains</code>，确保你的域名已添加内容为<code>cname-china.vercel-dns.com</code>的<code>CNAME</code>记录，输入你的域名，点击<code>Add</code>，等待后即可访问：</li></ol><p><img src="/img/article/6/189f1b096b56932f6d6adc1cfdecee9e0bc0c8423b21741fcc82595236dc525f.png"></p><ol start="7"><li>回到主题配置文件，修改：</li></ol><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># twikoo 配置信息</span></span><br><span class="line"><span class="comment"># twikoo settings</span></span><br><span class="line"><span class="attr">twikoo:</span>  <span class="comment"># https://twikoo.js.org/</span></span><br><span class="line">  <span class="attr">envId:</span> <span class="string">my-twikoo.js.cool</span> <span class="comment"># url</span></span><br><span class="line">  <span class="attr">region:</span>  <span class="comment"># 环境地域，默认为 ap-shanghai，腾讯云环境填 ap-shanghai 或 ap-guangzhou；Vercel 环境不填</span></span><br><span class="line">  <span class="attr">style:</span> <span class="literal">true</span> <span class="comment"># Use custom styles when turned on / 开启后使用自定义样式</span></span><br><span class="line">  <span class="attr">accessToken:</span> <span class="comment"># AccessToken</span></span><br><span class="line">  <span class="attr">option:</span> <span class="comment"># twikoo option</span></span><br></pre></td></tr></table></figure><ol start="8"><li>保存，在当前目录打开cmd，输入：</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo cl&amp;&amp;hexo g&amp;&amp;hexo s</span><br></pre></td></tr></table></figure><ol start="9"><li>检查无误后即可。</li></ol><div class="note  danger flat fas fa-circle-xmark"><p>因为Vercel业务的调整，现在使用这种方式很容易就：</p><p><img src="/img/article/6/d73a75082e19c1354828e0489f372cf72132edffd790d51a219bb19ddbfec69c.png"></p><p>所以多试几次吧。。。。。。</p></div><h2 id="③普通服务器部署"><a href="#③普通服务器部署" class="headerlink" title="③普通服务器部署"></a>③普通服务器部署</h2><div class="note  danger flat fas fa-circle-xmark"><p>私有部署的环境需配合 1.6.0 或以上版本的 twikoo.js 使用</p><p>私有部署对服务器系统没有要求，Windows、Ubuntu、CentOS、macOS 等常用系统均支持。</p><p>私有部署涉及终端操作、申请证书、配置反向代理或负载均衡等高级操作，如果对这些不太了解，建议优先选择其他方式部署。</p></div><ol><li>服务端下载安装 <a href="https://nodejs.org/zh-cn/">Node.js</a></li><li>安装 Twikoo server: <code>npm i -g tkserver</code></li><li>根据需要配置环境变量，所有的环境变量都是可选的</li></ol><table><thead><tr><th>名称</th><th>描述</th><th>默认值</th></tr></thead><tbody><tr><td><code>MONGODB_URI</code></td><td>MongoDB 数据库连接字符串，不传则使用 lokijs</td><td><code>null</code></td></tr><tr><td><code>MONGO_URL</code></td><td>MongoDB 数据库连接字符串，不传则使用 lokijs</td><td><code>null</code></td></tr><tr><td><code>TWIKOO_DATA</code></td><td>lokijs 数据库存储路径</td><td><code>./data</code></td></tr><tr><td><code>TWIKOO_PORT</code></td><td>端口号</td><td><code>8080</code></td></tr><tr><td><code>TWIKOO_THROTTLE</code></td><td>IP 请求限流，当同一 IP 短时间内请求次数超过阈值将对该 IP 返回错误</td><td><code>250</code></td></tr><tr><td><code>TWIKOO_LOCALHOST_ONLY</code></td><td>为<code>true</code>时只监听本地请求，使得 nginx 等服务器反代之后不暴露原始端口</td><td><code>null</code></td></tr><tr><td><code>TWIKOO_LOG_LEVEL</code></td><td>日志级别，支持 <code>verbose</code> &#x2F; <code>info</code> &#x2F; <code>warn</code> &#x2F; <code>error</code></td><td><code>info</code></td></tr><tr><td><code>TWIKOO_IP_HEADERS</code></td><td>在一些特殊情况下使用，如使用了<code>CloudFlare CDN</code> 它会将请求 IP 写到请求头的 <code>cf-connecting-ip</code> 字段上，为了能够正确的获取请求 IP 你可以写成 <code>[&#39;headers.cf-connecting-ip&#39;]</code></td><td><code>[]</code></td></tr></tbody></table><ol start="4"><li>启动 Twikoo server: <code>tkserver</code></li><li>访问 <code>http://服务端IP:8080</code> 测试服务是否启动成功</li><li>配置前置代理实现 HTTPS 访问（可以用 Nginx、负载均衡或 Cloudflare 等）</li><li>到博客配置文件中配置 envId 为 <code>https://</code> 加域名（例如 <code>https://twikoo.yourdomain.com</code>）</li><li>数据默认在 data 目录，请注意定期备份数据</li></ol><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>天上不会掉馅饼！！！</p><p>版权所有©MC-Sep</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;Twikoo作为一种轻量方便的评论系统，一度被许多博客使用。此文基于&lt;a href=&quot;/post/7ghd.html&quot;&gt;原文&lt;/a&gt;继续添加</summary>
      
    
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/categories/Hexo/"/>
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/tags/Hexo/"/>
    
    <category term="Twikoo" scheme="https://blog.mc-sep.top/tags/Twikoo/"/>
    
  </entry>
  
  <entry>
    <title>【Hexo】 Waline--评论系统的添加(1)</title>
    <link href="https://blog.mc-sep.top/post/7ghd.html"/>
    <id>https://blog.mc-sep.top/post/7ghd.html</id>
    <published>2024-06-16T02:18:00.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<div class="note  info flat fas fa-circle-info"><p>预计完成时间43分钟，请放心食用！</p></div><h1 id="前言："><a href="#前言：" class="headerlink" title="前言："></a>前言：</h1><p>众所周知，一个博客是不能没有评论的！</p><p><code>2024.5.2</code>：上线了<code>waline</code>评论系统</p><p><code>2024.5.9</code>：关闭了匿名评论功能</p><p><code>2024.5.14</code>：启动了双评论，另一个是<code>twikoo</code></p><p><code>2024.5.18</code>：关闭了双评论</p><p><code>2024.6.14</code>：重新启动了双评论</p><p>但是很多人不知道用什么评论……</p><p>所以，今天还是老样子出教程！</p><h1 id="实践"><a href="#实践" class="headerlink" title="实践"></a>实践</h1><h3 id="Part1-了解主流的评论系统"><a href="#Part1-了解主流的评论系统" class="headerlink" title="Part1:了解主流的评论系统"></a>Part1:了解主流的评论系统</h3><table><thead><tr><th align="center">评论系统</th><th align="center"><a href="https://valine.js.org/">Valine</a></th><th align="center"><a href="https://waline.js.org/">Waline</a></th><th align="center"><a href="https://twikoo.js.org/">Twikoo</a></th><th align="center"><a href="https://artalk.js.org/">Artalk</a></th><th align="center"><a href="https://github.com/gitalk/gitalk">Gitalk</a></th><th align="center"><a href="https://giscus.app/zh-CN">Giscus</a></th><th align="center"><a href="https://changyan.kuaizhan.com/">畅言</a></th><th align="center"><a href="https://remark42.com/">Remark42</a></th></tr></thead><tbody><tr><td align="center">推荐指数</td><td align="center">✔✔</td><td align="center">✔✔✔✔</td><td align="center">✔✔✔✔✔</td><td align="center">✔✔✔</td><td align="center">✔✔</td><td align="center">✔✔</td><td align="center">✔✔✔</td><td align="center">✔✔</td></tr><tr><td align="center">是否可以白嫖</td><td align="center">❌</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td><td align="center">✅</td><td align="center">✅</td><td align="center">✅</td><td align="center">❌</td></tr><tr><td align="center">说明</td><td align="center">近期被爆出会泄露用户IP</td><td align="center">方便，免费</td><td align="center">方便，免费</td><td align="center">方便，要服务器</td><td align="center">访问慢</td><td align="center">访问慢</td><td align="center">要登录，功能全</td><td align="center">访问慢</td></tr></tbody></table><h3 id="Part2-主题配置文件"><a href="#Part2-主题配置文件" class="headerlink" title="Part2:主题配置文件"></a>Part2:主题配置文件</h3><ol><li>修改<code>主题配置文件</code>：</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 评论</span></span><br><span class="line"><span class="comment"># comment</span></span><br><span class="line"><span class="comment"># getting start: https://solitude.js.org/comments/comment</span></span><br><span class="line">comment:</span><br><span class="line">  use: waline <span class="comment"># use</span></span><br><span class="line">  commentBarrage: <span class="literal">true</span> <span class="comment"># 热评开关 / Hot comment switch</span></span><br><span class="line">  lazyload: <span class="literal">true</span> <span class="comment"># 懒加载</span></span><br><span class="line">  count: <span class="literal">true</span> <span class="comment"># 评论数展示</span></span><br><span class="line">  pv: <span class="literal">false</span> <span class="comment"># 是否使用評論統計頁面訪問</span></span><br><span class="line">  avatar: https://cravatar.cn <span class="comment"># Gravatar link</span></span><br><span class="line">  newest_comment:</span><br><span class="line">    <span class="built_in">enable</span>: ture</span><br><span class="line">    storage: .5 <span class="comment"># 缓存时间 1: 1天 / .5 : 半天 / Cache time 1: 1 day .5 : half a day</span></span><br></pre></td></tr></table></figure><p>如果使用双评论，修改：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">use: 你的评论1,你的评论2 <span class="comment"># waline, twikoo, valine, artalk</span></span><br></pre></td></tr></table></figure><p>随后修改Waline的配置：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># waline settings</span></span><br><span class="line">waline: <span class="comment"># https://waline.js.org/</span></span><br><span class="line">  envId:  <span class="comment"># 你的部署环境</span></span><br><span class="line">  pageview: <span class="literal">false</span> <span class="comment"># 懒加载</span></span><br><span class="line">  option: <span class="comment"># 更多设置，可以去官网找</span></span><br></pre></td></tr></table></figure><h1 id="Part3-配置评论"><a href="#Part3-配置评论" class="headerlink" title="Part3:配置评论"></a>Part3:配置评论</h1><p>教程出自：<a href="https://waline.js.org/">Waline</a></p><p>特色：</p><ul><li>轻量级与高性能：Waline优化了代码结构，确保快速加载和响应，不增加网站负担。</li><li>安全性：系统内置了多种安全机制，如垃圾邮件过滤（Akismet支持）、IP限制等，保护您的网站免受恶意评论的侵扰。</li><li>Markdown 支持：全面支持Markdown语法，让用户可以方便地插入代码、链接、表情等元素，让评论更加生动。</li><li>多平台兼容：不仅有前端组件@waline&#x2F;client，还有多种服务器端解决方案，如Vercel、Deta、CloudBase等，满足不同开发需求。</li></ul><p>配置：</p><h2 id="准备——配置Leancloud"><a href="#准备——配置Leancloud" class="headerlink" title="准备——配置Leancloud"></a>准备——配置<strong>Leancloud</strong></h2><ol><li>进入<a href="https://console.leancloud.app/register">Leancloud国际版</a>进行注册并进入控制台：</li></ol><p><img src="/img/article/2/14bf60d9d7fd5964ccee88f86c9139cb.webp"></p><div class="note  warning flat fas fa-triangle-exclamation"><p>如果你正在使用 Leancloud 国内版 (leancloud.cn)，我们推荐你切换到国际版 (leancloud.app)。否则，你需要为应用额外绑定已备案的域名，同时购买独立 IP 并完成备案接入:</p><p>登录国内版并进入需要使用的应用<br>选择 设置 &gt; 域名绑定 &gt; API 访问域名 &gt; 绑定新域名 &gt; 输入域名 &gt; 确定。<br>按照页面上的提示按要求在 DNS 上完成 CNAME 解析。<br>购买独立 IP 并提交工单完成备案接入。(独立 IP 目前价格为 ￥ 50&#x2F;个&#x2F;月)</p><p><img src="/img/article/2/leancloud-3-CT_lZM0A.png"></p></div><ol start="2"><li>点击左上角<strong>创建应用</strong>，选择<strong>开发板</strong>（免费）</li></ol><p><img src="/img/article/2/e26c2a7f16d7a7164cb0ecb98c5b390e.webp"></p><ol start="3"><li>进入应用，选择左下角的 设置 &gt; 应用 Key。你可以看到你的 APP ID,APP Key 和 Master Key，记录它们以便后续使用。</li></ol><p><img src="/img/article/2/58676c1bb4fd2f35fb23a213fd21dac3.webp"></p><h2 id="方式1——Vercel"><a href="#方式1——Vercel" class="headerlink" title="方式1——Vercel"></a>方式1——Vercel</h2><p>点击一键部署：</p><p><a href="https://vercel.com/new/clone?repository-url=https://github.com/walinejs/waline/tree/main/example"><img src="/img/article/2/default.svg"></a></p><ol><li>点击上面的按钮，输入你喜欢的名字，点击Create，等待部署：</li></ol><p><img src="/img/article/2/0574cea0bdc82870997e823195e5348b.webp"></p><ol start="2"><li>之后满屏的烟花，点击<strong>Continue to Dashboard</strong></li></ol><p><img src="/img/article/2/2d8c921741af863b046ebbb8d7b7cfe5.webp"></p><ol start="3"><li>点击顶部的 Settings - Environment Variables 进入环境变量配置页，并配置三个环境变量 LEAN_ID, LEAN_KEY 和 LEAN_MASTER_KEY 。它们的值分别对应上一步在 LeanCloud 中获得的 APP ID, APP KEY, Master Key。</li></ol><p><img src="/img/article/2/c6f4d6bced949fdb7ec9bdef576dab88.webp"></p><ol start="4"><li>回到开头的免费域名，注册一下并关注作者，可以获得5免费域名，点击<strong>创建</strong>：</li></ol><p><img src="/img/article/2/85bae92761dd2705683b4185a7a26f6d.webp"></p><ol start="5"><li>输入名字，按如下填写：</li></ol><p><img src="/img/article/2/5bf63e5dfd90864d24ada804360e52ed.webp"></p><ol start="6"><li>你就等待审核，预计1小时~2天</li></ol><p><img src="/img/article/2/496a8213fcfe1b3eac0793bfc0ea0077.webp"></p><ol start="7"><li>审核完成后会显示<strong>编辑</strong>按钮，回到Vercel，点击<strong>Domains</strong>：</li></ol><p><img src="/img/article/2/1bbc317d1b20d9b5532b2850505292c9.webp"></p><ol start="8"><li>填写你申请的域名，点击<strong>Add</strong>：</li></ol><p><img src="/img/article/2/a438e0447a386031df099a74e7f39961.webp"></p><ol start="9"><li>等待他解析，然会就可以访问了！</li></ol><p><img src="/img/article/2/2244070e801aa2177e1925005fb5b874.webp"></p><h2 id="方式2——Deta（已失效）"><a href="#方式2——Deta（已失效）" class="headerlink" title="方式2——Deta（已失效）"></a>方式2——Deta（已失效）</h2><p><del>Deta 是一个可免费使用的 Serverless 部署平台。我们可以快速的将 Waline 部署到 Deta 平台上。</del></p><p>在 deta.space 的官网中指出：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">Dear Deta Community,</span><br><span class="line">After an incredible run, we&#x27;ve made the difficult decision to shut down Deta Space. You can continue to login until sunset on October 17, 2024, at which point we will start deleting all Horizons, apps (hosted or installed) and data in Collections.</span><br><span class="line"></span><br><span class="line">We&#x27;ve built tools for exporting your data (and code for developers), with tutorials available in the docs.</span><br><span class="line"></span><br><span class="line">We wanted to thank you for joining the journey so far. Everything we&#x27;ve done wouldn&#x27;t have been possible without our community, mods, investors, and friends. We hope you&#x27;ll stick around for what&#x27;s next.</span><br></pre></td></tr></table></figure><p>Deta Space 将于 <strong>2024.10.17 下午日落</strong> 关闭，请所有使用此方式部署的用户进入Waline控制台 -&gt; 管理 -&gt; 导入导出 -&gt; 导出 导出你的数据！</p><h2 id="方式3——Netlify"><a href="#方式3——Netlify" class="headerlink" title="方式3——Netlify"></a>方式3——Netlify</h2><p>Netlify 是知名的静态网站部署服务提供商，Edge Functions 是 Netlify 平台推出的一种服务，它允许在网站的边缘节点上运行 JavaScript 代码。</p><ol><li>点击 <a href="https://github.com/walinejs/netlify-starter/fork">Fork</a> Waline的Netlify数据库。</li></ol><p><img src="/img/article/2/04534a32d06f65ade0c7f53bb36c7e03e954e5360a2eaca53027caad3e428692.png"></p><ol start="2"><li>进入 <a href="https://app.netlify.com/">https://app.netlify.com</a> ，注册账号后登录控制台，点击<code>Add new site</code> -&gt; <code>Import an exist project</code>，选择刚刚Fork的数据库（先绑定Github）。(不要着急Deploy ！！！)</li></ol><p><img src="/img/article/2/f9b2d3bfbfd1a5004c38c2fb0be33170311b7dd267a84276af6ab0ca2a1e207f.png"></p><p><img src="/img/article/2/e42e4fe3e37f9989479c685e36456b00e9cc9dc56fc37b020d842ab35de70387.png"></p><ol start="3"><li>部署之前添加环境变量，以 LeanCloud 部署服务为例，我们在这里增加上 Waline 需要的数据库服务环境变量。点击底部的 Deploy 开始部署网站。</li></ol><p><img src="/img/article/2/f289d5ae538df8c6b7882685f62626de3681c625958f049df33ebc4cb6ddc1e9.png"></p><ol start="4"><li>部署完成，可通过一下的域名访问：</li></ol><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://你设置的名称.netlify.app/.netlify/functions/comment</span><br></pre></td></tr></table></figure><h2 id="不推荐的其他方式："><a href="#不推荐的其他方式：" class="headerlink" title="不推荐的其他方式："></a>不推荐的其他方式：</h2><ol><li>Railway的免费额度不足以一个月连续使用……</li><li>Zeabur需要购买（5$每月），否则计划会在5天内被结束……</li></ol><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>Waline轻量方便，不亚于Twikoo，博客评论选择它也挺不错的！</p><p>版权所有©MC-Sep。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;div class=&quot;note  info flat fas fa-circle-info&quot;&gt;&lt;p&gt;预计完成时间43分钟，请放心食用！&lt;/p&gt;
&lt;/div&gt;



&lt;h1 id=&quot;前言：&quot;&gt;&lt;a href=&quot;#前言：&quot; class=&quot;headerlink&quot; title=&quot;前言：</summary>
      
    
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/categories/Hexo/"/>
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/tags/Hexo/"/>
    
    <category term="Waline" scheme="https://blog.mc-sep.top/tags/Waline/"/>
    
  </entry>
  
  <entry>
    <title>【Hexo】Hexo+Github搭建个人博客</title>
    <link href="https://blog.mc-sep.top/post/4nd3.html"/>
    <id>https://blog.mc-sep.top/post/4nd3.html</id>
    <published>2024-05-17T08:18:00.000Z</published>
    <updated>2026-02-26T13:29:41.565Z</updated>
    
    <content type="html"><![CDATA[<div class="note  info flat fas fa-circle-info"><p>预计完成时间90分钟，请放心食用！</p></div><div class="note  danger flat fas fa-circle-xmark"><p>密码不可以外传（除非允许），不然你会被列入<strong>黑名单</strong>！</p></div><div class="note  warning flat fas fa-triangle-exclamation"><p>鉴于Github的访问慢，可以使用<a href="https://steampp.net/">Watt Toolkit加速器</a>进行访问，可以加速许多游戏和网站！</p></div><h1 id="前言："><a href="#前言：" class="headerlink" title="前言："></a>前言：</h1><p>最近我收到了亿点点私信：</p><p><img src="/img/article/1/831c75073352d065bee94f80b1f8db2d5bf523bd664d31ca8ac8eec650d7188d.png"></p><p><img src="/img/article/1/4bead4b616ac5f73dedd50bdabcc628a640bb89c34977f9b899514bf139f0107.png"></p><p><img src="/img/article/1/f0740c4deb5f6051d9604821191f48805ce9031ccfaeda767b6e965f36e5a7c2.png"></p><p>所以！今天我就出教程吧！！！</p><h1 id="实践s"><a href="#实践s" class="headerlink" title="实践s"></a>实践s</h1><h3 id="Part1-准备活动"><a href="#Part1-准备活动" class="headerlink" title="Part1.准备活动"></a>Part1.准备活动</h3><ol><li>下载<strong>Node.js</strong></li></ol><div class="note  warning flat fas fa-triangle-exclamation"><p>不建议修改安装路径，否则可能会无法调用<code>系统变量</code>！</p></div><ol start="3"><li>下载完毕后打开<code>cmd</code>，输入</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-cli -g</span><br></pre></td></tr></table></figure><p><img src="/img/article/1/ec9601d45ca8f7d78bb9f8a711be160c05efee79d4a26f3ee5edc75750cec21c.png"></p><p>等待下载，注意期间不要按Ctrl+C，否则会导致进度取消！</p><p>下载完毕后：</p><p><img src="/img/article/1/37571ffc50dd2032305e07efae54f6cad9bf503925b6b21fc9b024399ab1e167.png"></p><ol start="4"><li>打开任意一个<code>空</code>文件夹的cmd，分别输入（每输入一行等待）：</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo init blog</span><br><span class="line"><span class="built_in">cd</span> blog</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><ul><li><code>hexo init blog</code>：安装博客到blog文件夹里</li><li><code>npm install</code>：安装依赖</li></ul><ol start="6"><li>到这里，你的博客已经初步成型：</li></ol><p><img src="/img/article/1/99586ae7171f8fa78c7b390cd8073b8d815c9cacada82fb3cff1d1c105187a69.png"></p><h2 id="Part2-博客配置文件和主题配置文件的认识"><a href="#Part2-博客配置文件和主题配置文件的认识" class="headerlink" title="Part2: 博客配置文件和主题配置文件的认识"></a>Part2: 博客配置文件和主题配置文件的认识</h2><p>博客配置文件是这个东西：<img src="/img/article/1/f4a84c180811b3ead36d09a908abee0c7d01c18be9afa368bcbf109d7d92959e.png"></p><p>打开后的东西：</p><div class="note  warning flat fas fa-triangle-exclamation"><p>注意：各个值的配置之间要和<code>:</code>之间有一个空格！例如：<code>name: value</code></p></div><ul><li>title: 你的博客标题</li><li>subtitle: 你的博客副标题</li><li>description: 你的博客介绍</li><li>author: 博客作者名字</li><li>language: 语言，可以选择<code>en</code>，<code>zh-CN</code>和<code>zh-TW</code></li><li>timezone: 时区，建议填<code>Asia/Shanghai</code></li><li>url: 你的博客地址，必须填对！否则站内图片将会加载出问题</li><li>theme: 主题名字，全部是小写</li></ul><p>其余的可以不用配置。</p><p>主题配置文件请见你选择的主题的官方文档。</p><h2 id="Part3-基本命令"><a href="#Part3-基本命令" class="headerlink" title="Part3: 基本命令"></a>Part3: 基本命令</h2><ul><li><code>hexo c</code>:清理博客缓存</li><li><code>hexo s</code>:启动本地服务器，可以从<code>http://localhost:4000/</code>访问</li><li><code>hexo g</code>:生成博客主文件，保存至public文件夹内，以后上传到Github要用</li><li><code>hexo d</code>:通过git的方式上传到Github</li></ul><h2 id="Part4-安装-使用主题"><a href="#Part4-安装-使用主题" class="headerlink" title="Part4: 安装&amp;使用主题"></a>Part4: 安装&amp;使用主题</h2><p>可以前去<a href="https://hexo.io/themes">Hexo Themes</a>挑选你喜欢的主题！</p><p>不懂得如何安装的可以加入我的QQ群或加我QQ<code>3630179822</code>或下方留言！</p><h2 id="Part5-上传到Github"><a href="#Part5-上传到Github" class="headerlink" title="Part5: 上传到Github"></a>Part5: 上传到Github</h2><ol><li>打开你的博客源文件，打开<code>cmd</code>，输入：</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo g</span><br></pre></td></tr></table></figure><p>等待生成博客源文件。</p><ol start="2"><li>打开github，如下图：</li></ol><p><img src="/img/article/1/6816ace35cb5d27ea0d2c1a765e536c4517cc4c562e4df11a60523d8abf51f4c.png"></p><ol start="3"><li>点击<img src="/img/article/1/df217c019f410eab4ca7e7a130ef206565a267bde692d8f146528043b7c36e12.png">，如下图：</li></ol><p><img src="/img/article/1/9fee061f2c82ef8833a6ba17f9bb898951749953919b048c26d74eaccc754b1c.png"></p><ul><li><p><img src="/img/article/1/4922810fd9d9e09ced18c74ea9cf7edbd2f12cd04852da015ee3e17ecb5991da.png">：你的邮箱</p></li><li><p><img src="/img/article/1/3b7e85db21c338eff30c33d588b31814852cf4ae85a3f2f6eacd0ce9e1836ba1.png">：你的密码</p></li><li><p><img src="/img/article/1/a9a751589440a751b4d71f58199310a4d569146cbd94c4046ede1184632a3b23.png">：你的用户名（好好填！以后你的网站要用）</p></li><li><p><img src="/img/article/1/945c106798566807d113d280dc73e6d9e14754680929e89c656b526c87f8122a.png">：你是否接收Github发送的活动通知</p></li></ul><p>然后他们检查你的链接安全性，如下图:<br><img src="/img/article/1/8730fbe6ccace43796bd27dd85ac1fe749be814e646f128fb81e2191070766fa.png"></p><p>情况1：直接通过</p><p>情况2：如下图</p><p><img src="/img/article/1/ad827d799a0ee6bd7bd381728d8879534784be2f3c44ed5c8d7be6eb3f7e0d7c.png"></p><p>按照提示完成即可。</p><ol start="4"><li>然后就进入Github主页面了：</li></ol><p><img src="/img/article/1/62cec8d35f912bba3802f23b0c84d4b09b9daa4b2c3386850b099307c5b2bfa6.png"></p><p>点击<img src="/img/article/1/9661467d4657aef14cd39180743ca7ac34eef59dd489c1116e27e782cd245dac.png"></p><p>第一步<br><img src="/img/article/1/885b4cc6de6026b5cb42f0a5f9e43fade4abf890b43a0675bc87907556d5c69b.png"><br>第二步（描述）<br><img src="/img/article/1/d9d067079f4ed210f6d42998aa9f2508b529a30e322f2169538775518da9f393.png"><br>第三步<br><img src="/img/article/1/54bce0caad0455e3817a3174157c978388056f3f5aa1b0876ba18bf06efd459d.png"></p><p>最后点<code>Create repository</code>。</p><ol start="5"><li>进入仓库页面：</li></ol><p><img src="/img/article/1/724a3bf6f78ef3e9f93a617949435624c6330525bd2fcd10f8c7d684a6944b78.png"></p><p>点<code>Add file</code>➡<code>Upload files</code>。</p><p>之后的页面：</p><p><img src="/img/article/1/75df6fcc0879c1990ac029d3af262a47434a216f8b5e44b467aae2cd9eae62d6.png"></p><p>将之前讲的<code>public</code>文件夹打开，把全部文件拖进去。（当然你也可以用Github Desktop）</p><div class="note  danger flat fas fa-circle-xmark"><p>注意：单次上传的文件不能大于100件或100MB!</p></div><p>最后点<code>Commit Changes</code>。</p><ol start="6"><li>等待几分钟，就可以通过下面的地址访问了！</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://你的用户名.github.io/</span><br></pre></td></tr></table></figure><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p><code>Hexo</code>是一个很不错的博客框架，适合绝大部分用户。</p><p>版权所有©Minecraft-Sep。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;div class=&quot;note  info flat fas fa-circle-info&quot;&gt;&lt;p&gt;预计完成时间90分钟，请放心食用！&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&quot;note  danger flat fas fa-circle-xmark&quot;&gt;&lt;p&gt;密码不可以</summary>
      
    
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/categories/Hexo/"/>
    
    
    <category term="Hexo" scheme="https://blog.mc-sep.top/tags/Hexo/"/>
    
    <category term="Github" scheme="https://blog.mc-sep.top/tags/Github/"/>
    
  </entry>
  
  <entry>
    <title>【HTML】利用localstrange临时存储数据</title>
    <link href="https://blog.mc-sep.top/post/8g66.html"/>
    <id>https://blog.mc-sep.top/post/8g66.html</id>
    <published>2024-05-14T10:58:51.000Z</published>
    <updated>2025-05-31T01:45:23.713Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>通过本地存储（Local Storage），web 应用程序能够在用户浏览器中对数据进行本地的存储。</p><p>在 HTML5 之前，应用程序数据只能存储在 cookie 中，包括每个服务器请求。本地存储则更安全，并且可在不影响网站性能的前提下将大量数据存储于本地。</p><p>与 cookie 不同，存储限制要大得多（至少5MB），并且信息不会被传输到服务器。</p><p>本地存储经由起源地（origin）（经由域和协议）。所有页面，从起源地，能够存储和访问相同的数据。</p><div class="note  danger simple"><p>注意：localstrange里的数据不是永久保存的，它可能会在浏览器自动清理或手动删除后消失。</p></div><h1 id="例子"><a href="#例子" class="headerlink" title="例子"></a>例子</h1><h2 id="Example：登录界面"><a href="#Example：登录界面" class="headerlink" title="Example：登录界面"></a>Example：登录界面</h2><h3 id="项目说明"><a href="#项目说明" class="headerlink" title="项目说明"></a>项目说明</h3><p>利用<strong>localstrange</strong>做一个登录、注册页面，可以立即注册和登录。</p><h3 id="项目图片"><a href="#项目图片" class="headerlink" title="项目图片"></a>项目图片</h3><p><img src="/img/article/3/d49fb2dab8c35cf50fcb8b7e8f77b0fe21f25a13ecb5a9005632d2044893a975.png"></p><p><img src="/img/article/3/3ed214b0ee29b297605e3108ed5a276f0cf4ba4f5f8ad0aa55df2b80bae4ca62.png"></p><p>如果你有服务器，将数据存储在服务器上是不二之选。但是没有服务器，我们也可以通过一下方法完成此操作。</p><h3 id="思路"><a href="#思路" class="headerlink" title="思路"></a>思路</h3><ol><li><p>确定临时变量：登录、注册的账号密码，状态</p></li><li><p>明确如何调用。</p></li></ol><div class="note  warning flat fas fa-triangle-exclamation"><p>由于存储变量的单一，重复注册会覆盖之前的数据。</p></div><h3 id="过程"><a href="#过程" class="headerlink" title="过程"></a>过程</h3><p>登录：</p><ol><li>HTML样式</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><span class="line">&lt;!DOCTYPE html&gt;</span><br><span class="line">&lt;html lang=&quot;en&quot;&gt;</span><br><span class="line">&lt;head&gt;</span><br><span class="line">&lt;meta charset=&quot;UTF-8&quot;&gt;</span><br><span class="line">&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;</span><br><span class="line">&lt;title&gt;Login&lt;/title&gt;</span><br><span class="line">&lt;style&gt;</span><br><span class="line">  body &#123;</span><br><span class="line">    font-family: Arial, sans-serif;</span><br><span class="line">    background-color: #f4f4f4;</span><br><span class="line">  &#125;</span><br><span class="line">  .container &#123;</span><br><span class="line">    width: 300px;</span><br><span class="line">    margin: 0 auto;</span><br><span class="line">    background-color: #fff;</span><br><span class="line">    padding: 20px;</span><br><span class="line">    border-radius: 5px;</span><br><span class="line">    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);</span><br><span class="line">  &#125;</span><br><span class="line">  h2 &#123;</span><br><span class="line">    text-align: center;</span><br><span class="line">  &#125;</span><br><span class="line">  label &#123;</span><br><span class="line">    font-weight: bold;</span><br><span class="line">  &#125;</span><br><span class="line">  input[type=&quot;text&quot;],</span><br><span class="line">  input[type=&quot;password&quot;],</span><br><span class="line">  button &#123;</span><br><span class="line">    width: 100%;</span><br><span class="line">    margin-bottom: 10px;</span><br><span class="line">    padding: 8px;</span><br><span class="line">    box-sizing: border-box;</span><br><span class="line">  &#125;</span><br><span class="line">  button &#123;</span><br><span class="line">    background-color: #4caf50;</span><br><span class="line">    color: #fff;</span><br><span class="line">    border: none;</span><br><span class="line">    cursor: pointer;</span><br><span class="line">  &#125;</span><br><span class="line">  button:hover &#123;</span><br><span class="line">    background-color: #45a049;</span><br><span class="line">  &#125;</span><br><span class="line">&lt;/style&gt;</span><br><span class="line">&lt;/head&gt;</span><br><span class="line">&lt;body&gt;</span><br><span class="line"></span><br><span class="line">&lt;div class=&quot;container&quot;&gt;</span><br><span class="line">  &lt;h2&gt;Login&lt;/h2&gt;</span><br><span class="line">  &lt;form id=&quot;loginForm&quot;&gt;</span><br><span class="line">    &lt;label for=&quot;loginUsername&quot;&gt;Username:&lt;/label&gt;</span><br><span class="line">    &lt;input type=&quot;text&quot; id=&quot;loginUsername&quot; name=&quot;loginUsername&quot; required&gt;&lt;br&gt;</span><br><span class="line">    &lt;label for=&quot;loginPassword&quot;&gt;Password:&lt;/label&gt;</span><br><span class="line">    &lt;input type=&quot;password&quot; id=&quot;loginPassword&quot; name=&quot;loginPassword&quot; required&gt;&lt;br&gt;&lt;br&gt;</span><br><span class="line">    &lt;button type=&quot;button&quot; onclick=&quot;login()&quot;&gt;Login&lt;/button&gt;</span><br><span class="line">    &lt;button type=&quot;button&quot; onclick=&quot;window.location.href = &#x27;reg.html&#x27;;&quot;&gt;Register&lt;/button&gt;</span><br><span class="line">  &lt;/form&gt;</span><br><span class="line">&lt;/div&gt;</span><br><span class="line">&lt;/body&gt;</span><br><span class="line">&lt;/html&gt;</span><br></pre></td></tr></table></figure><ol start="2"><li>定义</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">&lt;script&gt;</span><br><span class="line">function login() &#123;</span><br><span class="line">  var username = document.getElementById(&quot;loginUsername&quot;).value;</span><br><span class="line">  var password = document.getElementById(&quot;loginPassword&quot;).value;</span><br><span class="line">  var storedUsername = localStorage.getItem(&quot;username&quot;);</span><br><span class="line">  var storedPassword = localStorage.getItem(&quot;password&quot;);&#125;</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure><ol start="3"><li>调用</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">&lt;script&gt;</span><br><span class="line">function login() &#123;</span><br><span class="line">  var username = document.getElementById(&quot;loginUsername&quot;).value;</span><br><span class="line">  var password = document.getElementById(&quot;loginPassword&quot;).value;</span><br><span class="line">  var storedUsername = localStorage.getItem(&quot;username&quot;);</span><br><span class="line">  var storedPassword = localStorage.getItem(&quot;password&quot;);</span><br><span class="line">  if (username === storedUsername &amp;&amp; password === storedPassword) &#123;</span><br><span class="line">    alert(&quot;Login successful!&quot;);</span><br><span class="line">    window.location.href = &#x27;https://minecraftsep.github.io/&#x27;;</span><br><span class="line">  &#125; else &#123;</span><br><span class="line">    alert(&quot;Invalid username or password.&quot;);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure><p>注册：</p><ol><li>HTML样式：</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br></pre></td><td class="code"><pre><span class="line">&lt;!DOCTYPE html&gt;</span><br><span class="line">&lt;html lang=&quot;en&quot;&gt;</span><br><span class="line">&lt;head&gt;</span><br><span class="line">&lt;meta charset=&quot;UTF-8&quot;&gt;</span><br><span class="line">&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;</span><br><span class="line">&lt;title&gt;Register&lt;/title&gt;</span><br><span class="line">&lt;style&gt;</span><br><span class="line">  body &#123;</span><br><span class="line">    font-family: Arial, sans-serif;</span><br><span class="line">    background-color: #f4f4f4;</span><br><span class="line">  &#125;</span><br><span class="line">  .container &#123;</span><br><span class="line">    width: 300px;</span><br><span class="line">    margin: 0 auto;</span><br><span class="line">    background-color: #fff;</span><br><span class="line">    padding: 20px;</span><br><span class="line">    border-radius: 5px;</span><br><span class="line">    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);</span><br><span class="line">  &#125;</span><br><span class="line">  h2 &#123;</span><br><span class="line">    text-align: center;</span><br><span class="line">  &#125;</span><br><span class="line">  label &#123;</span><br><span class="line">    font-weight: bold;</span><br><span class="line">  &#125;</span><br><span class="line">  input[type=&quot;text&quot;],</span><br><span class="line">  input[type=&quot;password&quot;],</span><br><span class="line">  button &#123;</span><br><span class="line">    width: 100%;</span><br><span class="line">    margin-bottom: 10px;</span><br><span class="line">    padding: 8px;</span><br><span class="line">    box-sizing: border-box;</span><br><span class="line">  &#125;</span><br><span class="line">  button &#123;</span><br><span class="line">    background-color: #4caf50;</span><br><span class="line">    color: #fff;</span><br><span class="line">    border: none;</span><br><span class="line">    cursor: pointer;</span><br><span class="line">  &#125;</span><br><span class="line">  button:hover &#123;</span><br><span class="line">    background-color: #45a049;</span><br><span class="line">  &#125;</span><br><span class="line">&lt;/style&gt;</span><br><span class="line">&lt;/head&gt;</span><br><span class="line">&lt;body&gt;</span><br><span class="line"></span><br><span class="line">&lt;div class=&quot;container&quot;&gt;</span><br><span class="line">  &lt;h2&gt;Register&lt;/h2&gt;</span><br><span class="line">  &lt;form id=&quot;registerForm&quot;&gt;</span><br><span class="line">    &lt;label for=&quot;regUsername&quot;&gt;Username:&lt;/label&gt;</span><br><span class="line">    &lt;input type=&quot;text&quot; id=&quot;regUsername&quot; name=&quot;regUsername&quot; required&gt;&lt;br&gt;</span><br><span class="line">    &lt;label for=&quot;regPassword&quot;&gt;Password:&lt;/label&gt;</span><br><span class="line">    &lt;input type=&quot;password&quot; id=&quot;regPassword&quot; name=&quot;regPassword&quot; required&gt;&lt;br&gt;&lt;br&gt;</span><br><span class="line">    &lt;button type=&quot;button&quot; onclick=&quot;register()&quot;&gt;Register&lt;/button&gt;</span><br><span class="line">  &lt;/form&gt;</span><br><span class="line">&lt;/div&gt;</span><br><span class="line">&lt;/body&gt;</span><br><span class="line">&lt;/html&gt;</span><br></pre></td></tr></table></figure><p>2.定义+调用</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">&lt;script&gt;</span><br><span class="line">function register() &#123;</span><br><span class="line">  var username = document.getElementById(&quot;regUsername&quot;).value;</span><br><span class="line">  var password = document.getElementById(&quot;regPassword&quot;).value;</span><br><span class="line">  if (username &amp;&amp; password) &#123;</span><br><span class="line">    localStorage.setItem(&quot;username&quot;, username);</span><br><span class="line">    localStorage.setItem(&quot;password&quot;, password);</span><br><span class="line">    alert(&quot;Registration successful!&quot;);</span><br><span class="line">    window.location.href = &#x27;index.html&#x27;;</span><br><span class="line">  &#125; else &#123;</span><br><span class="line">    alert(&quot;Please enter both username and password.&quot;);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure><h3 id="完整代码-–"><a href="#完整代码-–" class="headerlink" title="完整代码 –&gt;"></a>完整代码 –&gt;</h3><ul><li>登录</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br></pre></td><td class="code"><pre><span class="line">&lt;!DOCTYPE html&gt;</span><br><span class="line">&lt;html lang=&quot;en&quot;&gt;</span><br><span class="line">&lt;head&gt;</span><br><span class="line">&lt;meta charset=&quot;UTF-8&quot;&gt;</span><br><span class="line">&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;</span><br><span class="line">&lt;title&gt;Login&lt;/title&gt;</span><br><span class="line">&lt;style&gt;</span><br><span class="line">  body &#123;</span><br><span class="line">    font-family: Arial, sans-serif;</span><br><span class="line">    background-color: #f4f4f4;</span><br><span class="line">  &#125;</span><br><span class="line">  .container &#123;</span><br><span class="line">    width: 300px;</span><br><span class="line">    margin: 0 auto;</span><br><span class="line">    background-color: #fff;</span><br><span class="line">    padding: 20px;</span><br><span class="line">    border-radius: 5px;</span><br><span class="line">    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);</span><br><span class="line">  &#125;</span><br><span class="line">  h2 &#123;</span><br><span class="line">    text-align: center;</span><br><span class="line">  &#125;</span><br><span class="line">  label &#123;</span><br><span class="line">    font-weight: bold;</span><br><span class="line">  &#125;</span><br><span class="line">  input[type=&quot;text&quot;],</span><br><span class="line">  input[type=&quot;password&quot;],</span><br><span class="line">  button &#123;</span><br><span class="line">    width: 100%;</span><br><span class="line">    margin-bottom: 10px;</span><br><span class="line">    padding: 8px;</span><br><span class="line">    box-sizing: border-box;</span><br><span class="line">  &#125;</span><br><span class="line">  button &#123;</span><br><span class="line">    background-color: #4caf50;</span><br><span class="line">    color: #fff;</span><br><span class="line">    border: none;</span><br><span class="line">    cursor: pointer;</span><br><span class="line">  &#125;</span><br><span class="line">  button:hover &#123;</span><br><span class="line">    background-color: #45a049;</span><br><span class="line">  &#125;</span><br><span class="line">&lt;/style&gt;</span><br><span class="line">&lt;/head&gt;</span><br><span class="line">&lt;body&gt;</span><br><span class="line"></span><br><span class="line">&lt;div class=&quot;container&quot;&gt;</span><br><span class="line">  &lt;h2&gt;Login&lt;/h2&gt;</span><br><span class="line">  &lt;form id=&quot;loginForm&quot;&gt;</span><br><span class="line">    &lt;label for=&quot;loginUsername&quot;&gt;Username:&lt;/label&gt;</span><br><span class="line">    &lt;input type=&quot;text&quot; id=&quot;loginUsername&quot; name=&quot;loginUsername&quot; required&gt;&lt;br&gt;</span><br><span class="line">    &lt;label for=&quot;loginPassword&quot;&gt;Password:&lt;/label&gt;</span><br><span class="line">    &lt;input type=&quot;password&quot; id=&quot;loginPassword&quot; name=&quot;loginPassword&quot; required&gt;&lt;br&gt;&lt;br&gt;</span><br><span class="line">    &lt;button type=&quot;button&quot; onclick=&quot;login()&quot;&gt;Login&lt;/button&gt;</span><br><span class="line">    &lt;button type=&quot;button&quot; onclick=&quot;window.location.href = &#x27;reg.html&#x27;;&quot;&gt;Register&lt;/button&gt;</span><br><span class="line">  &lt;/form&gt;</span><br><span class="line">&lt;/div&gt;</span><br><span class="line"></span><br><span class="line">&lt;script&gt;</span><br><span class="line">function login() &#123;</span><br><span class="line">  var username = document.getElementById(&quot;loginUsername&quot;).value;</span><br><span class="line">  var password = document.getElementById(&quot;loginPassword&quot;).value;</span><br><span class="line">  var storedUsername = localStorage.getItem(&quot;username&quot;);</span><br><span class="line">  var storedPassword = localStorage.getItem(&quot;password&quot;);</span><br><span class="line">  if (username === storedUsername &amp;&amp; password === storedPassword) &#123;</span><br><span class="line">    alert(&quot;Login successful!&quot;);</span><br><span class="line">    window.location.href = &#x27;https://minecraftsep.github.io/&#x27;;</span><br><span class="line">  &#125; else &#123;</span><br><span class="line">    alert(&quot;Invalid username or password.&quot;);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line">&lt;/script&gt;</span><br><span class="line"></span><br><span class="line">&lt;/body&gt;</span><br><span class="line">&lt;/html&gt;</span><br><span class="line"></span><br></pre></td></tr></table></figure><ul><li>注册</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br></pre></td><td class="code"><pre><span class="line">&lt;!DOCTYPE html&gt;</span><br><span class="line">&lt;html lang=&quot;en&quot;&gt;</span><br><span class="line">&lt;head&gt;</span><br><span class="line">&lt;meta charset=&quot;UTF-8&quot;&gt;</span><br><span class="line">&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;</span><br><span class="line">&lt;title&gt;Register&lt;/title&gt;</span><br><span class="line">&lt;style&gt;</span><br><span class="line">  body &#123;</span><br><span class="line">    font-family: Arial, sans-serif;</span><br><span class="line">    background-color: #f4f4f4;</span><br><span class="line">  &#125;</span><br><span class="line">  .container &#123;</span><br><span class="line">    width: 300px;</span><br><span class="line">    margin: 0 auto;</span><br><span class="line">    background-color: #fff;</span><br><span class="line">    padding: 20px;</span><br><span class="line">    border-radius: 5px;</span><br><span class="line">    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);</span><br><span class="line">  &#125;</span><br><span class="line">  h2 &#123;</span><br><span class="line">    text-align: center;</span><br><span class="line">  &#125;</span><br><span class="line">  label &#123;</span><br><span class="line">    font-weight: bold;</span><br><span class="line">  &#125;</span><br><span class="line">  input[type=&quot;text&quot;],</span><br><span class="line">  input[type=&quot;password&quot;],</span><br><span class="line">  button &#123;</span><br><span class="line">    width: 100%;</span><br><span class="line">    margin-bottom: 10px;</span><br><span class="line">    padding: 8px;</span><br><span class="line">    box-sizing: border-box;</span><br><span class="line">  &#125;</span><br><span class="line">  button &#123;</span><br><span class="line">    background-color: #4caf50;</span><br><span class="line">    color: #fff;</span><br><span class="line">    border: none;</span><br><span class="line">    cursor: pointer;</span><br><span class="line">  &#125;</span><br><span class="line">  button:hover &#123;</span><br><span class="line">    background-color: #45a049;</span><br><span class="line">  &#125;</span><br><span class="line">&lt;/style&gt;</span><br><span class="line">&lt;/head&gt;</span><br><span class="line">&lt;body&gt;</span><br><span class="line"></span><br><span class="line">&lt;div class=&quot;container&quot;&gt;</span><br><span class="line">  &lt;h2&gt;Register&lt;/h2&gt;</span><br><span class="line">  &lt;form id=&quot;registerForm&quot;&gt;</span><br><span class="line">    &lt;label for=&quot;regUsername&quot;&gt;Username:&lt;/label&gt;</span><br><span class="line">    &lt;input type=&quot;text&quot; id=&quot;regUsername&quot; name=&quot;regUsername&quot; required&gt;&lt;br&gt;</span><br><span class="line">    &lt;label for=&quot;regPassword&quot;&gt;Password:&lt;/label&gt;</span><br><span class="line">    &lt;input type=&quot;password&quot; id=&quot;regPassword&quot; name=&quot;regPassword&quot; required&gt;&lt;br&gt;&lt;br&gt;</span><br><span class="line">    &lt;button type=&quot;button&quot; onclick=&quot;register()&quot;&gt;Register&lt;/button&gt;</span><br><span class="line">  &lt;/form&gt;</span><br><span class="line">&lt;/div&gt;</span><br><span class="line"></span><br><span class="line">&lt;script&gt;</span><br><span class="line">function register() &#123;</span><br><span class="line">  var username = document.getElementById(&quot;regUsername&quot;).value;</span><br><span class="line">  var password = document.getElementById(&quot;regPassword&quot;).value;</span><br><span class="line">  if (username &amp;&amp; password) &#123;</span><br><span class="line">    localStorage.setItem(&quot;username&quot;, username);</span><br><span class="line">    localStorage.setItem(&quot;password&quot;, password);</span><br><span class="line">    alert(&quot;Registration successful!&quot;);</span><br><span class="line">    window.location.href = &#x27;index.html&#x27;;</span><br><span class="line">  &#125; else &#123;</span><br><span class="line">    alert(&quot;Please enter both username and password.&quot;);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line">&lt;/script&gt;</span><br><span class="line"></span><br><span class="line">&lt;/body&gt;</span><br><span class="line">&lt;/html&gt;</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="Exercise-图片中转站"><a href="#Exercise-图片中转站" class="headerlink" title="Exercise: 图片中转站"></a>Exercise: 图片中转站</h2><h3 id="项目图片-–"><a href="#项目图片-–" class="headerlink" title="项目图片 –&gt;"></a>项目图片 –&gt;</h3><p><img src="/img/article/3/fc4caee593e7510f5e9b7923700b567a9caa39c4251ddfb820eb6235a24d6b50.png"></p><p>源代码请见<code>评论区</code>。</p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>localstrange可以临时存放数据，但不建议长久存放。</p><p>版权所有©Minecraft-Sep。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;通过本地存储（Local Storage），web 应用程序能够在用户浏览器中对数据进行本地的存储。&lt;/p&gt;
&lt;p&gt;在 HTML5 之前，应</summary>
      
    
    
    
    <category term="HTML" scheme="https://blog.mc-sep.top/categories/HTML/"/>
    
    
    <category term="Javascript" scheme="https://blog.mc-sep.top/tags/Javascript/"/>
    
    <category term="HTML" scheme="https://blog.mc-sep.top/tags/HTML/"/>
    
  </entry>
  
</feed>
