<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>NXYZ</title>
    <link>https://www.blog.nxyz.org/</link>
    <description>
      <![CDATA[无限学习&无限进步]]>
    </description>
    <language>en</language>
    <copyright>All rights reserved 2026, Otto</copyright>
    <lastBuildDate>Sun, 23 Aug 2026 09:42:22 GMT</lastBuildDate>
    <generator>Hexo</generator>
    <atom:link href="https://www.blog.nxyz.org/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>基于 Cloudflare Workers + KV 实现多 Shopify 站点实时订单推送至飞书群</title>
      <link>https://www.blog.nxyz.org/posts/ea5b623b/</link>
      <description>
        <![CDATA[<p>本文将分享如何利用 <strong>Cloudflare Workers</strong> 结合 <strong>KV 数据库</strong>，搭建一个<strong>无服务器（Serverless）、零成本、支持多 Shopify 站点</strong>的订单实时通知系]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Shopify/">Shopify</category>
      <category domain="https://www.blog.nxyz.org/tags/Cloudflare/">Cloudflare</category>
      <pubDate>Fri, 24 Jul 2026 22:07:23 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>本文将分享如何利用 <strong>Cloudflare Workers</strong> 结合 <strong>KV 数据库</strong>，搭建一个<strong>无服务器（Serverless）、零成本、支持多 Shopify 站点</strong>的订单实时通知系统，并将精心排版的交互式卡片实时推送到飞书（Feishu &#x2F; Lark）群聊。</p><hr><h2 id="🌟-方案亮点"><a href="#🌟-方案亮点" class="headerlink" title="🌟 方案亮点"></a>🌟 方案亮点</h2><h2 id="🌟-方案亮点-1"><a href="#🌟-方案亮点-1" class="headerlink" title="🌟 方案亮点"></a>🌟 方案亮点</h2><ol><li><strong>多站点支持</strong>：基于 Cloudflare KV 灵活管理多店铺密钥，只需部署一个 Worker 节点，即可接收无限个独立站的 Webhook。</li><li><strong>高安全性</strong>：严格实现 Shopify HMAC SHA-256 签名校验，并加入防时序攻击（Timing Attack）与防 Stack Overflow 的安全转换补丁。</li><li><strong>国家名称本地化</strong>：内置常用国家&#x2F;地区代码映射表，自动将订单目的地国家（如 US, CA, DE, GB）转译为中文展示（如：美国、加拿大、德国、英国）。</li><li><strong>数据丰富</strong>：卡片包含订单总额、客户姓名&#x2F;邮箱、中文目的国家、运费、折扣明细（含优惠码与自动折扣）、商品 SKUs 及客户备注。</li><li><strong>精炼卡片排版</strong>：采用分栏与灰色背景框布局，信息层级清晰，提升团队阅读体验。</li></ol><hr><h2 id="🚀-部署步骤"><a href="#🚀-部署步骤" class="headerlink" title="🚀 部署步骤"></a>🚀 部署步骤</h2><h3 id="第一步：创建并配置-Cloudflare-KV-数据库"><a href="#第一步：创建并配置-Cloudflare-KV-数据库" class="headerlink" title="第一步：创建并配置 Cloudflare KV 数据库"></a>第一步：创建并配置 Cloudflare KV 数据库</h3><ol><li>登录 Cloudflare Dashboard。</li><li>进入侧边栏 <strong>Storage &amp; Databases</strong> -&gt; <strong>KV</strong>。</li><li>点击 <strong>Create Namespace</strong>，命名为 <code>STORE_PUSH</code>。</li><li>进入刚创建的 <code>STORE_PUSH</code> 命名空间，在 <strong>KV Pairs</strong> 中添加你的店铺配置：<ul><li><strong>Key（键）</strong>：填入 Shopify 的<strong>自带原始域名</strong>（格式必须为 <code>xxx.myshopify.com</code>，而非自定义绑定的顶级域名）。</li><li><strong>Value（值）</strong>：填入如下 JSON 结构的字符串：</li></ul></li></ol><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></pre></td><td class="code"><pre><code class="hljs json"><span class="hljs-punctuation">&#123;</span><br>  <span class="hljs-attr">&quot;name&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;美国官网&quot;</span><span class="hljs-punctuation">,</span><br>  <span class="hljs-attr">&quot;secret&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;shpss_xxxxxxxxxxxxxxxxxxxxxxxx&quot;</span><span class="hljs-punctuation">,</span><br>  <span class="hljs-attr">&quot;feishu_webhook&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;[https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx-xxxx-xxxx](https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx-xxxx-xxxx)&quot;</span><br><span class="hljs-punctuation">&#125;</span><br></code></pre></td></tr></table></figure><blockquote><p><strong>参数说明：</strong></p><ul><li><code>name</code>: 飞书卡片上展示的店铺别名（如：美国站、欧洲站）。</li><li><code>secret</code>: Shopify 后台 Webhook 页面最底部生成的 <strong>HMAC Secret Key</strong>。</li><li><code>feishu_webhook</code>: 该店铺订单需要推送到的飞书机器人 Webhook 地址。</li></ul></blockquote><hr><h3 id="第二步：创建-Cloudflare-Worker-并绑定-KV"><a href="#第二步：创建-Cloudflare-Worker-并绑定-KV" class="headerlink" title="第二步：创建 Cloudflare Worker 并绑定 KV"></a>第二步：创建 Cloudflare Worker 并绑定 KV</h3><p>在 Cloudflare 侧边栏进入 Workers &amp; Pages -&gt; Create application -&gt; Create Worker。<br>命名 Worker（例如 shopify-feishu-notifier），点击 Deploy。<br>进入该 Worker 的设置界面：Settings -&gt; Bindings（或 Variables）。<br>在 KV Namespace Bindings 区域点击 Add：<br>Variable name（变量名）：必须填写 STORE_PUSH（需与代码中的 env.STORE_PUSH 一致）。<br>KV namespace：选择第一步创建的 STORE_PUSH。</p><hr><h3 id="第三步：粘贴-Worker-核心代码"><a href="#第三步：粘贴-Worker-核心代码" class="headerlink" title="第三步：粘贴 Worker 核心代码"></a>第三步：粘贴 Worker 核心代码</h3><p>点击 <strong>Edit code</strong>，将原有的模版代码替换为以下完整代码，然后点击 <strong>Save and Deploy</strong>：</p><figure class="highlight javascript"><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><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br></pre></td><td class="code"><pre><code class="hljs javascript"><span class="hljs-comment">/**</span><br><span class="hljs-comment"> * 常用国家/地区代码与中文对照表 (ISO 3166-1 alpha-2)</span><br><span class="hljs-comment"> */</span><br><span class="hljs-keyword">const</span> <span class="hljs-variable constant_">COUNTRY_MAP</span> = &#123;<br>  <span class="hljs-attr">US</span>: <span class="hljs-string">&#x27;美国&#x27;</span>,<br>  <span class="hljs-attr">CA</span>: <span class="hljs-string">&#x27;加拿大&#x27;</span>,<br>  <span class="hljs-attr">GB</span>: <span class="hljs-string">&#x27;英国&#x27;</span>,<br>  <span class="hljs-attr">AU</span>: <span class="hljs-string">&#x27;澳大利亚&#x27;</span>,<br>  <span class="hljs-attr">DE</span>: <span class="hljs-string">&#x27;德国&#x27;</span>,<br>  <span class="hljs-attr">FR</span>: <span class="hljs-string">&#x27;法国&#x27;</span>,<br>  <span class="hljs-attr">IT</span>: <span class="hljs-string">&#x27;意大利&#x27;</span>,<br>  <span class="hljs-attr">ES</span>: <span class="hljs-string">&#x27;西班牙&#x27;</span>,<br>  <span class="hljs-attr">NL</span>: <span class="hljs-string">&#x27;荷兰&#x27;</span>,<br>  <span class="hljs-attr">BE</span>: <span class="hljs-string">&#x27;比利时&#x27;</span>,<br>  <span class="hljs-attr">AT</span>: <span class="hljs-string">&#x27;奥地利&#x27;</span>,<br>  <span class="hljs-attr">CH</span>: <span class="hljs-string">&#x27;瑞士&#x27;</span>,<br>  <span class="hljs-attr">SE</span>: <span class="hljs-string">&#x27;瑞典&#x27;</span>,<br>  <span class="hljs-attr">NO</span>: <span class="hljs-string">&#x27;挪威&#x27;</span>,<br>  <span class="hljs-attr">DK</span>: <span class="hljs-string">&#x27;丹麦&#x27;</span>,<br>  <span class="hljs-attr">FI</span>: <span class="hljs-string">&#x27;芬兰&#x27;</span>,<br>  <span class="hljs-attr">IE</span>: <span class="hljs-string">&#x27;爱尔兰&#x27;</span>,<br>  <span class="hljs-attr">NZ</span>: <span class="hljs-string">&#x27;新西兰&#x27;</span>,<br>  <span class="hljs-attr">JP</span>: <span class="hljs-string">&#x27;日本&#x27;</span>,<br>  <span class="hljs-attr">KR</span>: <span class="hljs-string">&#x27;韩国&#x27;</span>,<br>  <span class="hljs-attr">SG</span>: <span class="hljs-string">&#x27;新加坡&#x27;</span>,<br>  <span class="hljs-attr">MY</span>: <span class="hljs-string">&#x27;马来西亚&#x27;</span>,<br>  <span class="hljs-attr">TH</span>: <span class="hljs-string">&#x27;泰国&#x27;</span>,<br>  <span class="hljs-attr">PH</span>: <span class="hljs-string">&#x27;菲律宾&#x27;</span>,<br>  <span class="hljs-attr">VN</span>: <span class="hljs-string">&#x27;越南&#x27;</span>,<br>  <span class="hljs-attr">ID</span>: <span class="hljs-string">&#x27;印度尼西亚&#x27;</span>,<br>  <span class="hljs-attr">MX</span>: <span class="hljs-string">&#x27;墨西哥&#x27;</span>,<br>  <span class="hljs-attr">BR</span>: <span class="hljs-string">&#x27;巴西&#x27;</span>,<br>  <span class="hljs-attr">CL</span>: <span class="hljs-string">&#x27;智利&#x27;</span>,<br>  <span class="hljs-attr">AR</span>: <span class="hljs-string">&#x27;阿根廷&#x27;</span>,<br>  <span class="hljs-attr">CO</span>: <span class="hljs-string">&#x27;哥伦比亚&#x27;</span>,<br>  <span class="hljs-attr">PE</span>: <span class="hljs-string">&#x27;秘鲁&#x27;</span>,<br>  <span class="hljs-attr">ZA</span>: <span class="hljs-string">&#x27;南非&#x27;</span>,<br>  <span class="hljs-attr">AE</span>: <span class="hljs-string">&#x27;阿联酋&#x27;</span>,<br>  <span class="hljs-attr">SA</span>: <span class="hljs-string">&#x27;沙特阿拉伯&#x27;</span>,<br>  <span class="hljs-attr">ISR</span>: <span class="hljs-string">&#x27;以色列&#x27;</span>,<br>  <span class="hljs-attr">TW</span>: <span class="hljs-string">&#x27;中国台湾&#x27;</span>,<br>  <span class="hljs-attr">HK</span>: <span class="hljs-string">&#x27;中国香港&#x27;</span>,<br>  <span class="hljs-attr">MO</span>: <span class="hljs-string">&#x27;中国澳门&#x27;</span>,<br>  <span class="hljs-attr">CN</span>: <span class="hljs-string">&#x27;中国大陆&#x27;</span><br>&#125;;<br><br><span class="hljs-comment">/**</span><br><span class="hljs-comment"> * 获取国家中文名称助手函数</span><br><span class="hljs-comment"> */</span><br><span class="hljs-keyword">function</span> <span class="hljs-title function_">getCountryNameInChinese</span>(<span class="hljs-params">address</span>) &#123;<br>  <span class="hljs-keyword">if</span> (!address) <span class="hljs-keyword">return</span> <span class="hljs-string">&#x27;未知国家&#x27;</span>;<br>  <span class="hljs-keyword">const</span> code = address.<span class="hljs-property">country_code</span> ? address.<span class="hljs-property">country_code</span>.<span class="hljs-title function_">toUpperCase</span>() : <span class="hljs-string">&#x27;&#x27;</span>;<br>  <span class="hljs-keyword">if</span> (code &amp;&amp; <span class="hljs-variable constant_">COUNTRY_MAP</span>[code]) &#123;<br>    <span class="hljs-keyword">return</span> <span class="hljs-variable constant_">COUNTRY_MAP</span>[code];<br>  &#125;<br>  <span class="hljs-keyword">return</span> address.<span class="hljs-property">country</span> || <span class="hljs-string">&#x27;未知国家&#x27;</span>;<br>&#125;<br><br><span class="hljs-comment">/**</span><br><span class="hljs-comment"> * 安全的 Base64 转换（防止栈溢出）</span><br><span class="hljs-comment"> */</span><br><span class="hljs-keyword">function</span> <span class="hljs-title function_">arrayBufferToBase64</span>(<span class="hljs-params">buffer</span>) &#123;<br>  <span class="hljs-keyword">const</span> bytes = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Uint8Array</span>(buffer);<br>  <span class="hljs-keyword">let</span> binary = <span class="hljs-string">&#x27;&#x27;</span>;<br>  <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; bytes.<span class="hljs-property">byteLength</span>; i++) &#123;<br>    binary += <span class="hljs-title class_">String</span>.<span class="hljs-title function_">fromCharCode</span>(bytes[i]);<br>  &#125;<br>  <span class="hljs-keyword">return</span> <span class="hljs-title function_">btoa</span>(binary);<br>&#125;<br><br><span class="hljs-comment">/**</span><br><span class="hljs-comment"> * 恒定时间比较字符串（防时序攻击）</span><br><span class="hljs-comment"> */</span><br><span class="hljs-keyword">function</span> <span class="hljs-title function_">safeCompare</span>(<span class="hljs-params">a, b</span>) &#123;<br>  <span class="hljs-keyword">if</span> (a.<span class="hljs-property">length</span> !== b.<span class="hljs-property">length</span>) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;<br>  <span class="hljs-keyword">let</span> result = <span class="hljs-number">0</span>;<br>  <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; a.<span class="hljs-property">length</span>; i++) &#123;<br>    result |= a.<span class="hljs-title function_">charCodeAt</span>(i) ^ b.<span class="hljs-title function_">charCodeAt</span>(i);<br>  &#125;<br>  <span class="hljs-keyword">return</span> result === <span class="hljs-number">0</span>;<br>&#125;<br><br><span class="hljs-comment">/**</span><br><span class="hljs-comment"> * 验证 Shopify HMAC 签名</span><br><span class="hljs-comment"> */</span><br><span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">verifyShopifySignature</span>(<span class="hljs-params">request, rawBody, secret</span>) &#123;<br>  <span class="hljs-keyword">const</span> hmacHeader = request.<span class="hljs-property">headers</span>.<span class="hljs-title function_">get</span>(<span class="hljs-string">&#x27;X-Shopify-Hmac-Sha256&#x27;</span>);<br>  <span class="hljs-keyword">if</span> (!hmacHeader || !secret) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;<br><br>  <span class="hljs-keyword">const</span> encoder = <span class="hljs-keyword">new</span> <span class="hljs-title class_">TextEncoder</span>();<br>  <span class="hljs-keyword">const</span> keyBuffer = encoder.<span class="hljs-title function_">encode</span>(secret);<br>  <span class="hljs-keyword">const</span> bodyBuffer = encoder.<span class="hljs-title function_">encode</span>(rawBody);<br><br>  <span class="hljs-keyword">const</span> cryptoKey = <span class="hljs-keyword">await</span> crypto.<span class="hljs-property">subtle</span>.<span class="hljs-title function_">importKey</span>(<br>    <span class="hljs-string">&#x27;raw&#x27;</span>,<br>    keyBuffer,<br>    &#123; <span class="hljs-attr">name</span>: <span class="hljs-string">&#x27;HMAC&#x27;</span>, <span class="hljs-attr">hash</span>: <span class="hljs-string">&#x27;SHA-256&#x27;</span> &#125;,<br>    <span class="hljs-literal">false</span>,<br>    [<span class="hljs-string">&#x27;sign&#x27;</span>]<br>  );<br><br>  <span class="hljs-keyword">const</span> signatureBuffer = <span class="hljs-keyword">await</span> crypto.<span class="hljs-property">subtle</span>.<span class="hljs-title function_">sign</span>(<span class="hljs-string">&#x27;HMAC&#x27;</span>, cryptoKey, bodyBuffer);<br>  <span class="hljs-keyword">const</span> calculatedHmac = <span class="hljs-title function_">arrayBufferToBase64</span>(signatureBuffer);<br><br>  <span class="hljs-keyword">return</span> <span class="hljs-title function_">safeCompare</span>(calculatedHmac, hmacHeader);<br>&#125;<br><br><span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> &#123;<br>  <span class="hljs-keyword">async</span> <span class="hljs-title function_">fetch</span>(<span class="hljs-params">request, env, ctx</span>) &#123;<br>    <span class="hljs-keyword">if</span> (request.<span class="hljs-property">method</span> !== <span class="hljs-string">&#x27;POST&#x27;</span>) &#123;<br>      <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Response</span>(<span class="hljs-string">&#x27;Method Not Allowed&#x27;</span>, &#123; <span class="hljs-attr">status</span>: <span class="hljs-number">405</span> &#125;);<br>    &#125;<br><br>    <span class="hljs-comment">// 1. 获取 Shopify 店铺自带域名 (如: rbc-cycling.myshopify.com)</span><br>    <span class="hljs-keyword">const</span> shopDomain = request.<span class="hljs-property">headers</span>.<span class="hljs-title function_">get</span>(<span class="hljs-string">&#x27;X-Shopify-Shop-Domain&#x27;</span>);<br>    <span class="hljs-keyword">if</span> (!shopDomain) &#123;<br>      <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Response</span>(<span class="hljs-string">&#x27;Bad Request: Missing Shop Domain Header&#x27;</span>, &#123; <span class="hljs-attr">status</span>: <span class="hljs-number">400</span> &#125;);<br>    &#125;<br><br>    <span class="hljs-comment">// 2. 从 Cloudflare KV 异步查询店铺配置</span><br>    <span class="hljs-keyword">let</span> currentStoreRaw = <span class="hljs-literal">null</span>;<br>    <span class="hljs-keyword">try</span> &#123;<br>      currentStoreRaw = <span class="hljs-keyword">await</span> env.<span class="hljs-property">STORE_PUSH</span>.<span class="hljs-title function_">get</span>(shopDomain);<br>    &#125; <span class="hljs-keyword">catch</span> (e) &#123;<br>      <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">&#x27;KV Storage 读取失败:&#x27;</span>, e);<br>      <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Response</span>(<span class="hljs-string">&#x27;Internal Server Error&#x27;</span>, &#123; <span class="hljs-attr">status</span>: <span class="hljs-number">500</span> &#125;);<br>    &#125;<br><br>    <span class="hljs-keyword">if</span> (!currentStoreRaw) &#123;<br>      <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">`未注册的店铺域名: <span class="hljs-subst">$&#123;shopDomain&#125;</span>`</span>);<br>      <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Response</span>(<span class="hljs-string">&#x27;Unauthorized: Unknown Shop Domain&#x27;</span>, &#123; <span class="hljs-attr">status</span>: <span class="hljs-number">403</span> &#125;);<br>    &#125;<br><br>    <span class="hljs-keyword">const</span> currentStore = <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">parse</span>(currentStoreRaw);<br>    <span class="hljs-keyword">const</span> rawBody = <span class="hljs-keyword">await</span> request.<span class="hljs-title function_">text</span>();<br><br>    <span class="hljs-comment">// 3. 使用 KV 中该店铺专属的 Secret 进行签名校验</span><br>    <span class="hljs-keyword">const</span> isValid = <span class="hljs-keyword">await</span> <span class="hljs-title function_">verifyShopifySignature</span>(request, rawBody, currentStore.<span class="hljs-property">secret</span>);<br>    <span class="hljs-keyword">if</span> (!isValid) &#123;<br>      <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">`签名校验失败: <span class="hljs-subst">$&#123;shopDomain&#125;</span>`</span>);<br>      <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Response</span>(<span class="hljs-string">&#x27;Unauthorized: Invalid Signature&#x27;</span>, &#123; <span class="hljs-attr">status</span>: <span class="hljs-number">401</span> &#125;);<br>    &#125;<br><br>    <span class="hljs-keyword">try</span> &#123;<br>      <span class="hljs-keyword">const</span> order = <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">parse</span>(rawBody);<br><br>      <span class="hljs-comment">// 数据提取</span><br>      <span class="hljs-keyword">const</span> storeName = currentStore.<span class="hljs-property">name</span> || shopDomain; <br>      <span class="hljs-keyword">const</span> orderName = order.<span class="hljs-property">name</span> || <span class="hljs-string">&#x27;未知订单&#x27;</span>;<br>      <span class="hljs-keyword">const</span> totalPrice = order.<span class="hljs-property">total_price</span> || <span class="hljs-string">&#x27;0.00&#x27;</span>;<br>      <span class="hljs-keyword">const</span> currency = order.<span class="hljs-property">currency</span> || <span class="hljs-string">&#x27;USD&#x27;</span>;<br><br>      <span class="hljs-comment">// 👤 客户姓名提取</span><br>      <span class="hljs-keyword">let</span> customerName = <span class="hljs-string">&#x27;游客/无客户信息&#x27;</span>;<br>      <span class="hljs-keyword">if</span> (order.<span class="hljs-property">customer</span>) &#123;<br>        <span class="hljs-keyword">const</span> firstName = order.<span class="hljs-property">customer</span>.<span class="hljs-property">first_name</span> || <span class="hljs-string">&#x27;&#x27;</span>;<br>        <span class="hljs-keyword">const</span> lastName = order.<span class="hljs-property">customer</span>.<span class="hljs-property">last_name</span> || <span class="hljs-string">&#x27;&#x27;</span>;<br>        customerName = <span class="hljs-string">`<span class="hljs-subst">$&#123;firstName&#125;</span> <span class="hljs-subst">$&#123;lastName&#125;</span>`</span>.<span class="hljs-title function_">trim</span>() || <span class="hljs-string">&#x27;匿名客户&#x27;</span>;<br>      &#125;<br><br>      <span class="hljs-keyword">const</span> customerEmail = order.<span class="hljs-property">email</span> || (order.<span class="hljs-property">customer</span> &amp;&amp; order.<span class="hljs-property">customer</span>.<span class="hljs-property">email</span>) || <span class="hljs-string">&#x27;无邮箱信息&#x27;</span>;<br><br>      <span class="hljs-comment">// 🌏 目的国家转为中文显示</span><br>      <span class="hljs-keyword">const</span> address = order.<span class="hljs-property">shipping_address</span> || order.<span class="hljs-property">billing_address</span>;<br>      <span class="hljs-keyword">const</span> country = <span class="hljs-title function_">getCountryNameInChinese</span>(address);<br><br>      <span class="hljs-comment">// 🏷️ 折扣信息提取（同时兼容折扣码与自动折扣）</span><br>      <span class="hljs-keyword">let</span> discounts = [];<br>      <span class="hljs-keyword">if</span> (order.<span class="hljs-property">discount_codes</span> &amp;&amp; order.<span class="hljs-property">discount_codes</span>.<span class="hljs-property">length</span> &gt; <span class="hljs-number">0</span>) &#123;<br>        order.<span class="hljs-property">discount_codes</span>.<span class="hljs-title function_">forEach</span>(<span class="hljs-function"><span class="hljs-params">d</span> =&gt;</span> &#123;<br>          <span class="hljs-keyword">const</span> amountText = d.<span class="hljs-property">amount</span> ? <span class="hljs-string">` (-<span class="hljs-subst">$&#123;d.amount&#125;</span> <span class="hljs-subst">$&#123;currency&#125;</span>)`</span> : <span class="hljs-string">&#x27;&#x27;</span>;<br>          discounts.<span class="hljs-title function_">push</span>(<span class="hljs-string">`\`码: <span class="hljs-subst">$&#123;d.code&#125;</span>\`<span class="hljs-subst">$&#123;amountText&#125;</span>`</span>);<br>        &#125;);<br>      &#125;<br>      <span class="hljs-keyword">if</span> (order.<span class="hljs-property">discount_applications</span> &amp;&amp; order.<span class="hljs-property">discount_applications</span>.<span class="hljs-property">length</span> &gt; <span class="hljs-number">0</span>) &#123;<br>        order.<span class="hljs-property">discount_applications</span>.<span class="hljs-title function_">forEach</span>(<span class="hljs-function"><span class="hljs-params">app</span> =&gt;</span> &#123;<br>          <span class="hljs-keyword">if</span> (app.<span class="hljs-property">type</span> === <span class="hljs-string">&#x27;discount_code&#x27;</span>) &#123;<br>            <span class="hljs-keyword">const</span> alreadyAdded = order.<span class="hljs-property">discount_codes</span> &amp;&amp; order.<span class="hljs-property">discount_codes</span>.<span class="hljs-title function_">some</span>(<span class="hljs-function"><span class="hljs-params">d</span> =&gt;</span> d.<span class="hljs-property">code</span> === app.<span class="hljs-property">code</span>);<br>            <span class="hljs-keyword">if</span> (alreadyAdded) <span class="hljs-keyword">return</span>;<br>          &#125;<br>          <span class="hljs-keyword">const</span> discountTitle = app.<span class="hljs-property">title</span> || app.<span class="hljs-property">code</span> || <span class="hljs-string">&#x27;自动折扣&#x27;</span>;<br>          <span class="hljs-keyword">let</span> valueText = <span class="hljs-string">&#x27;&#x27;</span>;<br>          <span class="hljs-keyword">if</span> (app.<span class="hljs-property">value_type</span> === <span class="hljs-string">&#x27;percentage&#x27;</span>) &#123;<br>            valueText = <span class="hljs-string">` (-<span class="hljs-subst">$&#123;app.value&#125;</span>%)`</span>;<br>          &#125; <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (app.<span class="hljs-property">value_type</span> === <span class="hljs-string">&#x27;fixed_amount&#x27;</span>) &#123;<br>            valueText = <span class="hljs-string">` (-<span class="hljs-subst">$&#123;app.value&#125;</span> <span class="hljs-subst">$&#123;currency&#125;</span>)`</span>;<br>          &#125;<br>          discounts.<span class="hljs-title function_">push</span>(<span class="hljs-string">`\`自动: <span class="hljs-subst">$&#123;discountTitle&#125;</span>\`<span class="hljs-subst">$&#123;valueText&#125;</span>`</span>);<br>        &#125;);<br>      &#125;<br>      <span class="hljs-keyword">const</span> discountText = discounts.<span class="hljs-property">length</span> &gt; <span class="hljs-number">0</span> ? discounts.<span class="hljs-title function_">join</span>(<span class="hljs-string">&#x27;, &#x27;</span>) : <span class="hljs-string">&#x27;未使用折扣&#x27;</span>;<br><br>      <span class="hljs-comment">// 🚚 运费信息提取</span><br>      <span class="hljs-keyword">let</span> shippingText = <span class="hljs-string">&#x27;免运费&#x27;</span>;<br>      <span class="hljs-keyword">if</span> (order.<span class="hljs-property">shipping_lines</span> &amp;&amp; order.<span class="hljs-property">shipping_lines</span>.<span class="hljs-property">length</span> &gt; <span class="hljs-number">0</span>) &#123;<br>        shippingText = order.<span class="hljs-property">shipping_lines</span>.<span class="hljs-title function_">map</span>(<span class="hljs-function"><span class="hljs-params">s</span> =&gt;</span> &#123;<br>          <span class="hljs-keyword">const</span> price = <span class="hljs-built_in">parseFloat</span>(s.<span class="hljs-property">price</span>);<br>          <span class="hljs-keyword">return</span> price &gt; <span class="hljs-number">0</span> ? <span class="hljs-string">`<span class="hljs-subst">$&#123;s.title&#125;</span> (<span class="hljs-subst">$&#123;s.price&#125;</span> <span class="hljs-subst">$&#123;currency&#125;</span>)`</span> : <span class="hljs-string">`免运费 (<span class="hljs-subst">$&#123;s.title&#125;</span>)`</span>;<br>        &#125;).<span class="hljs-title function_">join</span>(<span class="hljs-string">&#x27;, &#x27;</span>);<br>      &#125;<br><br>      <span class="hljs-comment">// 📦 商品清单提取</span><br>      <span class="hljs-keyword">let</span> lineItemsText = <span class="hljs-string">&#x27;&#x27;</span>;<br>      <span class="hljs-keyword">if</span> (order.<span class="hljs-property">line_items</span> &amp;&amp; order.<span class="hljs-property">line_items</span>.<span class="hljs-property">length</span> &gt; <span class="hljs-number">0</span>) &#123;<br>        lineItemsText = order.<span class="hljs-property">line_items</span>.<span class="hljs-title function_">map</span>(<span class="hljs-function"><span class="hljs-params">item</span> =&gt;</span> &#123;<br>          <span class="hljs-keyword">const</span> skuText = item.<span class="hljs-property">sku</span> ? <span class="hljs-string">`\`SKU: <span class="hljs-subst">$&#123;item.sku&#125;</span>\``</span> : <span class="hljs-string">&#x27;*无 SKU*&#x27;</span>;<br>          <span class="hljs-keyword">const</span> itemPrice = item.<span class="hljs-property">price</span> || <span class="hljs-string">&#x27;0.00&#x27;</span>;<br>          <span class="hljs-keyword">return</span> <span class="hljs-string">`• **<span class="hljs-subst">$&#123;item.title&#125;</span>** x <span class="hljs-subst">$&#123;item.quantity&#125;</span> _(<span class="hljs-subst">$&#123;itemPrice&#125;</span> <span class="hljs-subst">$&#123;currency&#125;</span>/件)_\n   ┗ <span class="hljs-subst">$&#123;skuText&#125;</span>`</span>;<br>        &#125;).<span class="hljs-title function_">join</span>(<span class="hljs-string">&#x27;\n&#x27;</span>);<br>      &#125; <span class="hljs-keyword">else</span> &#123;<br>        lineItemsText = <span class="hljs-string">&#x27;无商品数据&#x27;</span>;<br>      &#125;<br><br>      <span class="hljs-comment">// 4. 组装飞书交互式卡片 Payload</span><br>      <span class="hljs-keyword">const</span> feishuPayload = &#123;<br>        <span class="hljs-attr">msg_type</span>: <span class="hljs-string">&quot;interactive&quot;</span>,<br>        <span class="hljs-attr">card</span>: &#123;<br>          <span class="hljs-attr">config</span>: &#123; <span class="hljs-attr">wide_screen_mode</span>: <span class="hljs-literal">true</span> &#125;,<br>          <span class="hljs-attr">header</span>: &#123;<br>            <span class="hljs-attr">title</span>: &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;plain_text&quot;</span>, <span class="hljs-attr">content</span>: <span class="hljs-string">`[<span class="hljs-subst">$&#123;storeName&#125;</span>] 🎉 <span class="hljs-subst">$&#123;orderName&#125;</span> (<span class="hljs-subst">$&#123;totalPrice&#125;</span> <span class="hljs-subst">$&#123;currency&#125;</span>)`</span> &#125;,<br>            <span class="hljs-attr">template</span>: <span class="hljs-string">&quot;indigo&quot;</span><br>          &#125;,<br>          <span class="hljs-attr">elements</span>: [<br>            &#123;<br>              <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;column_set&quot;</span>,<br>              <span class="hljs-attr">background_style</span>: <span class="hljs-string">&quot;grey&quot;</span>,<br>              <span class="hljs-attr">columns</span>: [<br>                &#123;<br>                  <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;column&quot;</span>,<br>                  <span class="hljs-attr">width</span>: <span class="hljs-string">&quot;weighted&quot;</span>,<br>                  <span class="hljs-attr">weight</span>: <span class="hljs-number">1</span>,<br>                  <span class="hljs-attr">elements</span>: [<br>                    &#123;<br>                      <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;div&quot;</span>,<br>                      <span class="hljs-attr">fields</span>: [<br>                        &#123; <span class="hljs-attr">is_short</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">text</span>: &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;lark_md&quot;</span>, <span class="hljs-attr">content</span>: <span class="hljs-string">`**订单总额:**\n<span class="hljs-subst">$&#123;totalPrice&#125;</span> <span class="hljs-subst">$&#123;currency&#125;</span>`</span> &#125; &#125;,<br>                        &#123; <span class="hljs-attr">is_short</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">text</span>: &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;lark_md&quot;</span>, <span class="hljs-attr">content</span>: <span class="hljs-string">`**购买客户:**\n<span class="hljs-subst">$&#123;customerName&#125;</span>`</span> &#125; &#125;,<br>                        &#123; <span class="hljs-attr">is_short</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">text</span>: &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;lark_md&quot;</span>, <span class="hljs-attr">content</span>: <span class="hljs-string">`**目的国家:**\n<span class="hljs-subst">$&#123;country&#125;</span>`</span> &#125; &#125;,<br>                        &#123; <span class="hljs-attr">is_short</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">text</span>: &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;lark_md&quot;</span>, <span class="hljs-attr">content</span>: <span class="hljs-string">`**客户邮箱:**\n<span class="hljs-subst">$&#123;customerEmail&#125;</span>`</span> &#125; &#125;,<br>                        &#123; <span class="hljs-attr">is_short</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">text</span>: &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;lark_md&quot;</span>, <span class="hljs-attr">content</span>: <span class="hljs-string">`**折扣优惠:**\n<span class="hljs-subst">$&#123;discountText&#125;</span>`</span> &#125; &#125;,<br>                        &#123; <span class="hljs-attr">is_short</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">text</span>: &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;lark_md&quot;</span>, <span class="hljs-attr">content</span>: <span class="hljs-string">`**配送运费:**\n<span class="hljs-subst">$&#123;shippingText&#125;</span>`</span> &#125; &#125;<br>                      ]<br>                    &#125;<br>                  ]<br>                &#125;<br>              ]<br>            &#125;,<br>            &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;hr&quot;</span> &#125;,<br>            &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;div&quot;</span>, <span class="hljs-attr">text</span>: &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;lark_md&quot;</span>, <span class="hljs-attr">content</span>: <span class="hljs-string">`**📦 商品清单:**\n<span class="hljs-subst">$&#123;lineItemsText&#125;</span>`</span> &#125; &#125;,<br>            ...(order.<span class="hljs-property">note</span> ? [&#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;hr&quot;</span> &#125;, &#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;note&quot;</span>, <span class="hljs-attr">elements</span>: [&#123; <span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;plain_text&quot;</span>, <span class="hljs-attr">content</span>: <span class="hljs-string">`💬 客户备注: <span class="hljs-subst">$&#123;order.note&#125;</span>`</span> &#125;] &#125;] : [])<br>          ]<br>        &#125;<br>      &#125;;<br><br>      <span class="hljs-comment">// 5. 获取目标飞书 Webhook 地址并发送</span><br>      <span class="hljs-keyword">const</span> targetWebhookUrl = currentStore.<span class="hljs-property">feishu_webhook</span> || env.<span class="hljs-property">FEISHU_WEBHOOK_URL</span>;<br>      <span class="hljs-keyword">if</span> (!targetWebhookUrl) &#123;<br>        <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">&#x27;未配置飞书 Webhook 链接&#x27;</span>);<br>        <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Response</span>(<span class="hljs-string">&#x27;Configuration Error&#x27;</span>, &#123; <span class="hljs-attr">status</span>: <span class="hljs-number">500</span> &#125;);<br>      &#125;<br><br>      <span class="hljs-keyword">const</span> feishuResponse = <span class="hljs-keyword">await</span> <span class="hljs-title function_">fetch</span>(targetWebhookUrl, &#123;<br>        <span class="hljs-attr">method</span>: <span class="hljs-string">&#x27;POST&#x27;</span>,<br>        <span class="hljs-attr">headers</span>: &#123; <span class="hljs-string">&#x27;Content-Type&#x27;</span>: <span class="hljs-string">&#x27;application/json&#x27;</span> &#125;,<br>        <span class="hljs-attr">body</span>: <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">stringify</span>(feishuPayload)<br>      &#125;);<br><br>      <span class="hljs-keyword">if</span> (!feishuResponse.<span class="hljs-property">ok</span>) &#123;<br>        <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">&#x27;Feishu Push Failed:&#x27;</span>, <span class="hljs-keyword">await</span> feishuResponse.<span class="hljs-title function_">text</span>());<br>      &#125;<br><br>      <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Response</span>(<span class="hljs-string">&#x27;OK&#x27;</span>, &#123; <span class="hljs-attr">status</span>: <span class="hljs-number">200</span> &#125;);<br><br>    &#125; <span class="hljs-keyword">catch</span> (error) &#123;<br>      <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">&#x27;Logic Error:&#x27;</span>, error);<br>      <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Response</span>(<span class="hljs-string">&#x27;Bad Request&#x27;</span>, &#123; <span class="hljs-attr">status</span>: <span class="hljs-number">400</span> &#125;);<br>    &#125;<br>  &#125;<br>&#125;;<br></code></pre></td></tr></table></figure><hr><h3 id="第四步：在-Shopify-后台配置-Webhook"><a href="#第四步：在-Shopify-后台配置-Webhook" class="headerlink" title="第四步：在 Shopify 后台配置 Webhook"></a>第四步：在 Shopify 后台配置 Webhook</h3><p>对于你需要监听订单的<strong>每一个 Shopify 站点</strong>：</p><ol><li>登录该站点的 Shopify 后台，进入 <strong>Settings（设置）</strong> -&gt; <strong>Notifications（通知）</strong>。</li><li>页面拉至最下方，找到 <strong>Webhooks</strong> 模块，点击 <strong>Create webhook</strong>：</li></ol><ul><li><strong>Event（事件）</strong>：选择 <code>Order creation</code>（订单创建）。</li><li><strong>Format（格式）</strong>：选择 <code>JSON</code>。</li><li><strong>URL</strong>：填入你在第二步获得的 Cloudflare Worker 部署域名（例：<code>https://shopify-feishu-notifier.yourname.workers.dev</code>）。</li><li><strong>Webhook API version</strong>：选择最新的稳定版。</li></ul><ol start="3"><li>点击保存后，复制该页面最底部显示的 <strong>Secret Key</strong>（“Your webhooks will be signed with…” 后的字符串）。</li><li>确保将该 Key 和对应的 <code>.myshopify.com</code> 域名填入第一步创建的 Cloudflare KV 中。</li></ol><hr><h2 id="🛠️-关键技术解密"><a href="#🛠️-关键技术解密" class="headerlink" title="🛠️ 关键技术解密"></a>🛠️ 关键技术解密</h2><h3 id="1-为什么不用自定义域名作为-KV-Key？"><a href="#1-为什么不用自定义域名作为-KV-Key？" class="headerlink" title="1. 为什么不用自定义域名作为 KV Key？"></a>1. 为什么不用自定义域名作为 KV Key？</h3><p>Shopify Webhook 发送请求时，会在 HTTP Header 中自动带上 <code>X-Shopify-Shop-Domain</code> 标头，其值固定为店铺初始的 <code>xxxx.myshopify.com</code> 格式。使用此标头可以精准检索 KV 中的对应密钥，避免绑定自定义顶级域名变更带来的配置失效。</p><h3 id="2-签名安全校验-HMAC-SHA-256"><a href="#2-签名安全校验-HMAC-SHA-256" class="headerlink" title="2. 签名安全校验 (HMAC SHA-256)"></a>2. 签名安全校验 (HMAC SHA-256)</h3><p>为防止恶意伪造订单请求，代码通过 Web Crypto API 提取原始 Body 进行签名运算：</p><ul><li><strong>防止 Stack Overflow</strong>：避免直接使用 <code>String.fromCharCode(...array)</code> 处理大型 Payload 时引发的 JavaScript 栈溢出。</li><li><strong>防止 Timing Attack</strong>：编写 <code>safeCompare</code> 函数进行恒定时间比对，提升校验安全性。</li></ul><hr><h2 id="💡-总结"><a href="#💡-总结" class="headerlink" title="💡 总结"></a>💡 总结</h2><p>通过 Cloudflare Workers 的边缘计算能力配合 KV 存储，我们仅用少量代码就构建了一套高效、安全且低成本的多站点订单推送通知系统。不仅能实时把控各站点的销售状态，精美的卡片排版也大大提升了团队协同的效率！</p>]]>
      </content:encoded>
    </item>
    <item>
      <title>META广告发布错误#2446173</title>
      <link>https://www.blog.nxyz.org/posts/f2817f83/</link>
      <description>
        <![CDATA[<p>本文记录 META 广告发布过程中出现的 #2446173 错误及解决方法。该问题多出现在复制广告后，系统遗留的素材规则标签与新广告素材未正确关联。解决方式是：复制广告后先删除素材，填写链接后再重新添加素材。</p>
<h2 id="问题现象"><a href="#问题现象]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Facebook/">Facebook</category>
      <category domain="https://www.blog.nxyz.org/tags/Bug/">Bug</category>
      <pubDate>Wed, 03 Jun 2026 13:27:50 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>本文记录 META 广告发布过程中出现的 #2446173 错误及解决方法。该问题多出现在复制广告后，系统遗留的素材规则标签与新广告素材未正确关联。解决方式是：复制广告后先删除素材，填写链接后再重新添加素材。</p><h2 id="问题现象"><a href="#问题现象" class="headerlink" title="问题现象"></a>问题现象</h2><p>在复制或新建 META 广告时，发布阶段出现以下报错：</p><blockquote><p><strong>目标规则标签必须涉及素材标签: 名称为…的目标规则标签并未涉及任何素材标签。请移除所有广告创意，以修复问题。 (#2446173)</strong></p></blockquote><hr><h2 id="报错原因"><a href="#报错原因" class="headerlink" title="报错原因"></a>报错原因</h2><p>这个问题通常出现在<strong>新建&#x2F;复制广告</strong>或<strong>修改广告创意素材</strong>时。</p><p>META 系统会保留原广告中的部分素材规则、版位规则或创意标签，但新复制出来的广告中，素材内容和这些规则没有正确关联，导致系统判断：</p><blockquote><p>目标规则标签存在，但没有对应的素材标签。</p></blockquote><p>简单来说，就是广告创意素材和系统的版位&#x2F;规则标签没有匹配上。</p><hr><h2 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h2><h3 id="推荐处理方式"><a href="#推荐处理方式" class="headerlink" title="推荐处理方式"></a>推荐处理方式</h3><p>复制广告出来后，不要直接替换或添加素材，建议按照下面顺序操作：</p><ol><li><strong>复制原广告</strong></li><li><strong>先删除广告中的所有素材</strong></li><li><strong>不要马上添加新素材</strong></li><li><strong>先填写或替换落地页链接</strong></li><li><strong>保存后，再重新上传或选择广告素材</strong></li><li><strong>重新检查预览和版位</strong></li><li><strong>发布广告</strong></li></ol><hr><h2 id="操作重点"><a href="#操作重点" class="headerlink" title="操作重点"></a>操作重点</h2><p>错误操作：</p><blockquote><p>复制广告后，直接替换素材或添加素材。</p></blockquote><p>正确操作：</p><blockquote><p>复制广告后，先清空素材，再放链接，最后重新添加素材。</p></blockquote><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>遇到 META 广告发布错误 <strong>#2446173</strong> 时，核心处理思路是：</p><blockquote><p><strong>先删除素材，再填写链接，最后重新添加素材。</strong></p></blockquote><p>这样可以避免复制广告时遗留的素材标签、版位规则标签和新广告创意之间产生冲突。</p>]]>
      </content:encoded>
    </item>
    <item>
      <title>Facebook(Meta)快捷入口大全</title>
      <link>https://www.blog.nxyz.org/posts/45880/</link>
      <description>
        <![CDATA[<h2 id="🔥-高频核心工具-Daily-Tools"><a href="#🔥-高频核心工具-Daily-Tools" class="headerlink" title="🔥 高频核心工具 (Daily Tools)"></a>🔥 高频核心工具 (Daily Tool]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Facebook/">Facebook</category>
      <pubDate>Sun, 24 May 2026 11:04:31 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="🔥-高频核心工具-Daily-Tools"><a href="#🔥-高频核心工具-Daily-Tools" class="headerlink" title="🔥 高频核心工具 (Daily Tools)"></a>🔥 高频核心工具 (Daily Tools)</h2><ul><li>🖥️ <strong><a href="https://s.nxyz.org/fbbm">BM 商务管理平台 (Business Manager)</a></strong></li><li>📊 <strong><a href="https://s.nxyz.org/fbam">广告管理工具 (Ads Manager)</a></strong></li><li>🔎 <strong><a href="https://s.nxyz.org/fbal">FB 广告资料库 (Ad Library)</a></strong></li><li>📈 <strong><a href="https://s.nxyz.org/fbai">广告受众分析 (Audience Insights)</a></strong></li><li>🛠️ <strong><a href="https://s.nxyz.org/fbph">像素助手 (Pixel Helper)</a></strong></li><li>🌐 <strong><a href="https://s.nxyz.org/fbdt">域名调试工具 (Debug Tool)</a></strong></li></ul><hr><h2 id="🚨-封号与限制申诉-Appeals-Bans"><a href="#🚨-封号与限制申诉-Appeals-Bans" class="headerlink" title="🚨 封号与限制申诉 (Appeals &amp; Bans)"></a>🚨 封号与限制申诉 (Appeals &amp; Bans)</h2><h3 id="🚫-账号-功能受限"><a href="#🚫-账号-功能受限" class="headerlink" title="🚫 账号&#x2F;功能受限"></a>🚫 账号&#x2F;功能受限</h3><ul><li><strong><a href="https://www.facebook.com/accountquality/">账号质量概览 (Account Quality)</a></strong> - <em>查看封号原因的第一站</em></li><li><a href="https://www.facebook.com/help/contact/2026068680760273">复审：受限的广告帐户</a></li><li><a href="https://www.facebook.com/help/contact/273898596750902">复审：广告投放功能受限</a></li><li><a href="https://www.facebook.com/help/contact/2158932601016581">申诉：Page 主页被封</a></li><li><a href="https://www.facebook.com/help/contact/536515906554077">申诉：Page 广告功能被禁用</a></li></ul><h3 id="💳-支付与资金相关"><a href="#💳-支付与资金相关" class="headerlink" title="💳 支付与资金相关"></a>💳 支付与资金相关</h3><ul><li><a href="https://www.facebook.com/help/contact/391647094929792">复审：支付功能被禁用</a></li><li><a href="https://www.facebook.com/help/contact/733689746780575">未授权费用&#x2F;盗刷申诉</a></li><li><a href="https://www.facebook.com/help/contact/649167531904667">广告支付相关问题</a></li><li><a href="https://www.facebook.com/help/contact/1937556639801443">通用支付帮助</a></li></ul><h3 id="🔗-网站与域名"><a href="#🔗-网站与域名" class="headerlink" title="🔗 网站与域名"></a>🔗 网站与域名</h3><ul><li><a href="https://www.facebook.com/help/contact/571927962827151">网站域名被 FB 屏蔽申诉</a></li><li><a href="https://www.facebook.com/help/contact/288611514529252">访问受限 (错误 IP)</a></li></ul><hr><h2 id="⚙️-账户设置与管理-Settings"><a href="#⚙️-账户设置与管理-Settings" class="headerlink" title="⚙️ 账户设置与管理 (Settings)"></a>⚙️ 账户设置与管理 (Settings)</h2><ul><li><a href="https://www.facebook.com/settings">个人账号设置</a></li><li><a href="https://www.facebook.com/privacy/review/?review_id=573933453011661&source=unknown">安全修改账号密码</a></li><li><a href="https://www.facebook.com/ads/manager/account_settings/account_billing/?act=">个人账号支付设置</a></li><li><a href="https://www.facebook.com/ads/manager/billing_history/summary/?act=">个人账号账单记录</a></li><li><strong>姓名修改：</strong><ul><li><a href="https://www.facebook.com/help/contact/1417759018475333">请求更改姓名</a></li><li><a href="https://www.facebook.com/help/contact/391012360910186">更改其他语言姓名</a></li></ul></li><li><strong>生日修改：</strong><ul><li><a href="https://www.facebook.com/help/contact/233841356784195">请求更改生日</a></li></ul></li></ul><hr><h3 id="👮-安全与举报"><a href="#👮-安全与举报" class="headerlink" title="👮 安全与举报"></a>👮 安全与举报</h3><ul><li><strong><a href="https://www.facebook.com/hacked">账户被黑&#x2F;被盗 (Hacked)</a></strong> - <em>紧急救援</em></li><li><a href="https://www.facebook.com/help/contact/295309487309948">举报冒名帐户</a></li><li><a href="https://www.facebook.com/help/contact/139646232852264">申请移除视频</a></li><li><a href="https://www.facebook.com/help/contact/255904741169641">邮箱已被使用报错</a></li></ul><h3 id="⚖️-版权与商标"><a href="#⚖️-版权与商标" class="headerlink" title="⚖️ 版权与商标"></a>⚖️ 版权与商标</h3><ul><li><a href="https://www.facebook.com/help/contact/552695131608132">版权举报表单</a></li><li><a href="https://www.facebook.com/help/contact/1057530390957243">商标举报表单</a></li><li><a href="https://www.facebook.com/help/contact/321897297972632">商标申诉联系</a></li><li><a href="https://www.facebook.com/help/contact/628238764025713">仿冒品举报</a></li><li><a href="https://www.facebook.com/help/contact/144059062408922">隐私侵权举报</a></li></ul><h3 id="🙋‍♂️-官方客服与帮助"><a href="#🙋‍♂️-官方客服与帮助" class="headerlink" title="🙋‍♂️ 官方客服与帮助"></a>🙋‍♂️ 官方客服与帮助</h3><ul><li><a href="https://www.facebook.com/help/">Facebook 帮助中心</a></li><li><a href="https://www.facebook.com/support/">帮助中心信箱 (Support Inbox)</a></li><li><strong><a href="https://www.facebook.com/business/help/support/get-help">CC 在线客服入口</a></strong> (注：并非所有账户都有权限)</li><li><a href="https://www.facebookblueprint.com/student/catalog/browse?locale=zh-CN">广告专家学习中心 (Blueprint)</a></li></ul><hr><p><em>免责声明：Facebook 官方链接入口可能会随平台更新而变动，如有失效请<a href="https://s.nxyz.org/link">联系我</a>。</em></p>]]>
      </content:encoded>
    </item>
    <item>
      <title>Meta广告管理工具预设列指标</title>
      <link>https://www.blog.nxyz.org/posts/f0dc4c35/</link>
      <description>
        <![CDATA[<h3 id="1-基础投放与花费-Delivery-Spend"><a href="#1-基础投放与花费-Delivery-Spend" class="headerlink" title="1. 基础投放与花费 (Delivery &amp; Spend)"></a>1. 基础]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Facebook/">Facebook</category>
      <category domain="https://www.blog.nxyz.org/tags/Ads/">Ads</category>
      <pubDate>Wed, 11 Mar 2026 22:54:24 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h3 id="1-基础投放与花费-Delivery-Spend"><a href="#1-基础投放与花费-Delivery-Spend" class="headerlink" title="1. 基础投放与花费 (Delivery &amp; Spend)"></a>1. 基础投放与花费 (Delivery &amp; Spend)</h3><p><em>此部分用于监控广告的运行状态、受众覆盖面以及预算消耗情况。</em></p><ul><li><strong>投放 (Delivery):</strong> 当前广告组或广告的运行状态（如：活动、审核中、学习期等）。</li><li><strong>预算 (Budget):</strong> 设定的单日预算或总预算金额。</li><li><strong>已花费金额 (Amount Spent):</strong> 在所选时间段内消耗的广告费用。</li><li><strong>展示次数 (Impressions):</strong> 广告在屏幕上展示的总次数。</li><li><strong>覆盖人数 (Reach):</strong> 看到广告的独立访客人数。</li><li><strong>频次 (Frequency):</strong> 平均每个人看到广告的次数（展示次数 ÷ 覆盖人数）。频次过高容易导致受众疲劳，需及时更换素材。</li><li><strong>千次展示费用 (CPM):</strong> 衡量买量成本的核心指标，受大盘竞争和受众精准度影响。</li></ul><h3 id="2-引流与互动-Traffic-Clicks"><a href="#2-引流与互动-Traffic-Clicks" class="headerlink" title="2. 引流与互动 (Traffic &amp; Clicks)"></a>2. 引流与互动 (Traffic &amp; Clicks)</h3><p><em>此部分用于评估广告素材（图片&#x2F;文案）的初步吸引力。</em></p><ul><li><strong>点击量（全部）(Clicks - All):</strong> 包括点击链接、点赞、评论、分享、展开文字等所有互动点击。</li><li><strong>点击率（全部）(CTR - All):</strong> 整体互动点击占展示次数的比例。</li><li><strong>单次点击费用（全部）(CPC - All):</strong> 产生任意一次互动的平均成本。</li><li><strong>出站点击率 (Outbound CTR):</strong> 专门指引流到 Facebook 以外的链接点击率，比“全部点击率”更能反映真实的外部引流能力。</li><li><strong>链接点击量 (Link Clicks):</strong> 用户真正点击并意图跳转到落地页&#x2F;产品页的次数。</li><li><strong>链接点击率 (Link CTR):</strong> 链接点击量 ÷ 展示次数，直接反映素材促使用户进站的效果。</li></ul><h3 id="3-网站转化与诊断漏斗-Website-Conversions-Funnel"><a href="#3-网站转化与诊断漏斗-Website-Conversions-Funnel" class="headerlink" title="3. 网站转化与诊断漏斗 (Website Conversions &amp; Funnel)"></a>3. 网站转化与诊断漏斗 (Website Conversions &amp; Funnel)</h3><p><em>漏斗下层的核心操作。通过这组数据，可以精准定位是网站加载太慢，还是产品详情页缺乏吸引力。</em></p><ul><li><strong>落地页浏览量 (Landing Page Views):</strong> Pixel 成功加载并记录到用户浏览网页的次数。比“链接点击”更真实（点击了不代表等到了网页打开）。</li><li><strong>单次落地页浏览费用 (Cost per Landing Page View):</strong> 获取一个真实进站访客的成本。</li><li><strong>加入购物车 (Adds to Cart):</strong> 用户将商品加入购物车的总次数。</li><li><strong>单次加入购物车费用 (Cost per Add to Cart):</strong> 如果进站便宜但加购贵，通常说明流量不精准，或者产品详情页&#x2F;价格转化力弱。</li><li><strong>结账发起次数 (Checkouts Initiated):</strong> 用户进入结账流程的次数。</li><li><strong>成效 (Results):</strong> 根据广告目标（如：购物转化）实现的最终订单次数。</li><li><strong>单次成效费用 (Cost per Result):</strong> 获取一个订单或核心转化的平均成本（CPA）。</li></ul><h3 id="4-投入产出与价值-ROI-Value"><a href="#4-投入产出与价值-ROI-Value" class="headerlink" title="4. 投入产出与价值 (ROI &amp; Value)"></a>4. 投入产出与价值 (ROI &amp; Value)</h3><p><em>衡量广告投放最终盈利能力的核心板块。</em></p><ul><li><strong>平均购物转化价值 (Average Purchase Conversion Value):</strong> 即客单价 (AOV)，单笔订单带来的平均金额。</li><li><strong>成效价值 (Conversion Value):</strong> 广告带来的总销售额。</li><li><strong>广告花费回报 (ROAS - 购物):</strong> 购物成效价值 ÷ 已花费金额。衡量盈亏的最核心指标（例如：ROAS 为 2，即投入 1 美元收回 2 美元）。</li></ul><h3 id="5-视频互动与素材诊断-Video-Engagement"><a href="#5-视频互动与素材诊断-Video-Engagement" class="headerlink" title="5. 视频互动与素材诊断 (Video Engagement)"></a>5. 视频互动与素材诊断 (Video Engagement)</h3><p><em>如果广告大量使用视频（如产品动态展示、模特上身实拍），这组数据是优化视频素材的黄金指标。</em></p><ul><li><strong>ThruPlay:</strong> 视频播放达到 15 秒（或播放完毕）的次数。这是衡量受众是否对视频内容产生实质兴趣的基准。</li><li><strong>单次 ThruPlay 费用 (Cost per ThruPlay):</strong> 获取一次高质量视频观看的成本。</li><li><strong>视频播放进度 (Video Plays at 25%, 50%, 75%, 100%):</strong> 分析用户的观看流失点。若大部分人在前 3 秒划走，说明视频的 Hook（前三秒抓手）不够吸引人；若看到 75% 却没点击，说明 Call to Action (行动号召) 不够明确。</li></ul><hr>]]>
      </content:encoded>
    </item>
    <item>
      <title>如何查看您的 Google 账户所属国家或地区？（附更改方法）</title>
      <link>https://www.blog.nxyz.org/posts/f09f3c95/</link>
      <description>
        <![CDATA[<h2 id="快速查看账户所属国家-地区的步骤"><a href="#快速查看账户所属国家-地区的步骤" class="headerlink" title="快速查看账户所属国家&#x2F;地区的步骤"></a>快速查看账户所属国家&#x2F;地区的步骤</h2><ol>
<l]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Google/">Google</category>
      <pubDate>Tue, 03 Mar 2026 12:36:19 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="快速查看账户所属国家-地区的步骤"><a href="#快速查看账户所属国家-地区的步骤" class="headerlink" title="快速查看账户所属国家&#x2F;地区的步骤"></a>快速查看账户所属国家&#x2F;地区的步骤</h2><ol><li><strong>登录账户</strong>：首先，请确保您已经在浏览器中登录了您的 Google 账户。</li><li><strong>访问条款页面</strong>：<a href="https://policies.google.com/terms" title="Google服务条款">点击查询</a>。</li><li><strong>查找“国家&#x2F;地区版本”</strong>：页面加载后，将目光移向页面的左上方区域。您会在顶部附近看到一行标有“国家&#x2F;地区版本”（Country Version）的文字。</li><li><strong>确认归属地</strong>：这行文字旁边显示的国家或地区，就是目前 Google 系统中与您账户相关联的地理位置。</li></ol><h2 id="发现国家-地区错误怎么办？"><a href="#发现国家-地区错误怎么办？" class="headerlink" title="发现国家&#x2F;地区错误怎么办？"></a>发现国家&#x2F;地区错误怎么办？</h2><p>您可以直接访问并填写 <strong>国家&#x2F;地区关联更改申请表</strong>：<a href="https://policies.google.com/country-association-form" title="国家&#x2F;地区关联更改申请表">点击提交更改</a>。提交申请后，Google 的相关团队会审核您的请求，并在处理完毕后与您联系。</p><h2 id="Google-是如何判定您的所在地的？"><a href="#Google-是如何判定您的所在地的？" class="headerlink" title="Google 是如何判定您的所在地的？"></a>Google 是如何判定您的所在地的？</h2><ul><li><strong>对于新账户</strong>：系统会根据您最初创建 Google 账户时的物理所在地来进行绑定。</li><li><strong>对于注册一年以上的账户</strong>：Google 会根据您通常访问 Google 服务的地区（即过去一年中您停留时间最长的地方）来进行判定。</li></ul><p>值得注意的是，短期的频繁旅行通常不会影响您的账户关联地区。如果您搬家到了一个新的国家，您的账户归属地可能需要大约一年的时间才会自动更新。</p><p>此外，如果您发现账户关联的地区与您的实际居住地不符，这可能是由以下原因造成的：</p><ul><li>您的工作地和居住地不在同一个国家或地区。</li><li>您使用了虚拟专用网络（VPN）来掩盖您的真实 IP 地址。</li><li>您居住在国家或领土的物理边界附近，导致网络定位发生偏移。</li></ul>]]>
      </content:encoded>
    </item>
    <item>
      <title>Windows功能定制软件</title>
      <link>https://www.blog.nxyz.org/posts/32351/</link>
      <description>
        <![CDATA[<h2 id="1-彻底关闭-Windows-Defender：Defender-Control"><a href="#1-彻底关闭-Windows-Defender：Defender-Control" class="headerlink" title="1. 彻底关闭 Wind]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      <category domain="https://www.blog.nxyz.org/tags/Windows/">Windows</category>
      <pubDate>Fri, 13 Feb 2026 06:14:29 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="1-彻底关闭-Windows-Defender：Defender-Control"><a href="#1-彻底关闭-Windows-Defender：Defender-Control" class="headerlink" title="1. 彻底关闭 Windows Defender：Defender Control"></a>1. 彻底关闭 Windows Defender：Defender Control</h2><p>自 Windows Vista 开始，微软内置了 Windows Defender（现为 Microsoft Defender）以防止恶意软件。虽然它是免费且内置的，但对于已经安装了第三方杀毒软件或追求极致性能的用户来说，它可能会占用宝贵的系统资源。</p><p>更令人头疼的是，在 Windows 10&#x2F;11 中，微软取消了“永久关闭”的选项。即便在设置中暂时关闭实时保护，系统也会在一段时间后自动重新开启。</p><p><strong>Defender Control</strong> 是一款小巧的便携式免费软件，旨在解决这一痛点。它能让您一键彻底禁用 Windows Defender，无需修改注册表或服务，简单高效。</p><blockquote><p><strong>💾 下载地址：</strong><br><a href="https://www.lanzoui.com/b00z9wzyb">蓝奏云下载</a></p></blockquote><hr><h2 id="2-彻底禁止-Windows-自动更新：Windows-Update-Blocker"><a href="#2-彻底禁止-Windows-自动更新：Windows-Update-Blocker" class="headerlink" title="2. 彻底禁止 Windows 自动更新：Windows Update Blocker"></a>2. 彻底禁止 Windows 自动更新：Windows Update Blocker</h2><p>早期的 Windows 10 允许用户控制更新，但现在的版本通常只能“暂停更新 7 天”。想要永久关闭更新，往往需要复杂的注册表和服务修改，且容易被系统自动恢复。</p><p><strong>Windows Update Blocker</strong> 专为此场景开发。它具有以下特点：</p><ul><li><strong>完全免费且便携</strong>：无需安装，解压即用，不残留垃圾文件。</li><li><strong>一键操作</strong>：通过简单的界面按钮即可启用或禁用自动更新。</li><li><strong>服务保护</strong>：防止 Windows 系统偷偷重启更新服务。</li><li><strong>命令行支持</strong>：支持自动化脚本调用。</li></ul><p>如果您希望由自己决定何时更新系统，而不是被强制重启，这是一款必备工具。</p><blockquote><p><strong>💾 下载地址：</strong><br><a href="https://pan.quark.cn/s/e116071dab28">夸克网盘下载</a></p></blockquote><hr><h2 id="3-Windows-系统精简与优化：Dism"><a href="#3-Windows-系统精简与优化：Dism" class="headerlink" title="3. Windows 系统精简与优化：Dism++"></a>3. Windows 系统精简与优化：Dism++</h2><p><strong>Dism++</strong> 被誉为“Windows 系统管理神器”。它表面上是 Dism 的 GUI 版，但实际上它是直接基于更底层的 CBS (Component Based Servicing) 开发，不依赖 Windows 自带的 Dism 组件。</p><p><strong>主要功能包括：</strong></p><ul><li><strong>系统清理</strong>：深度清理更新冗余、临时文件、系统缓存。</li><li><strong>系统管理</strong>：启动项管理、驱动管理、Appx 管理。</li><li><strong>系统优化</strong>：提供大量可以直接勾选的系统隐藏设置（如关闭小娜、隐藏任务栏图标等）。</li><li><strong>系统备份&#x2F;还原</strong>：支持热备份系统，无需进 PE 即可操作。</li></ul><blockquote><p><strong>💾 下载地址：</strong><br><a href="https://www.123pan.cn/s/HQeA-vl4Sh.html">123云盘下载</a></p></blockquote><hr><h2 id="4-Windows-隐私保护与遥测关闭：WPD"><a href="#4-Windows-隐私保护与遥测关闭：WPD" class="headerlink" title="4. Windows 隐私保护与遥测关闭：WPD"></a>4. Windows 隐私保护与遥测关闭：WPD</h2><p>Windows 系统在后台会收集大量用户数据（微软称为“遥测”）。虽然微软提供了隐私设置选项，但许多核心数据收集接口是隐藏的，普通用户很难彻底关闭。</p><p><strong>WPD (Windows Privacy Dashboard)</strong> 是一款利用 Windows API 工作的小巧工具，专注于隐私保护。</p><ul><li><strong>隐私管理</strong>：一键关闭遥测、广告ID、Cortana 等数据收集服务。</li><li><strong>防火墙规则</strong>：阻止特定微软 IP 的连接。</li><li><strong>应用卸载</strong>：轻松卸载 Windows 内置的 UWP 应用。</li></ul><p>这是目前在 Windows 中自定义隐私相关设置最方便、最正确的方法之一。</p><blockquote><p><strong>💾 下载地址：</strong><br><a href="http://www.123pan.cn/s/HQeA-6X1Sh">123云盘下载</a></p></blockquote><p align="right"> 文章来源：<a href="https://www.ghxi.com" target="_blank">果壳剥壳</a> </p>]]>
      </content:encoded>
    </item>
    <item>
      <title>Facebook广告数据的自定义列如何在不同设备同步</title>
      <link>https://www.blog.nxyz.org/posts/170e73cf/</link>
      <description>
        <![CDATA[<h1 id="🚀-拒绝头皮发麻！FB-广告后台「自定义列」跨设备同步技巧"><a href="#🚀-拒绝头皮发麻！FB-广告后台「自定义列」跨设备同步技巧" class="headerlink" title="🚀 拒绝头皮发麻！FB 广告后台「自定义列」跨设备同步技巧">]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Facebook/">Facebook</category>
      <pubDate>Fri, 06 Feb 2026 13:23:09 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h1 id="🚀-拒绝头皮发麻！FB-广告后台「自定义列」跨设备同步技巧"><a href="#🚀-拒绝头皮发麻！FB-广告后台「自定义列」跨设备同步技巧" class="headerlink" title="🚀 拒绝头皮发麻！FB 广告后台「自定义列」跨设备同步技巧"></a>🚀 拒绝头皮发麻！FB 广告后台「自定义列」跨设备同步技巧</h1><p>很多人在第一次打开 <strong>Facebook 广告管理工具 (Ads Manager)</strong> 时，都会有同一个感受：</p><blockquote><p>😵 <strong>数据太多、太乱，看得人头皮发麻，不知道哪些才是关键指标。</strong></p></blockquote><p>所以大多数“老司机”都会做一件事：<br>👉 <strong>通过「自定义列」只保留自己真正关心的数据。</strong></p><h2 id="🛑-遇到的痛点"><a href="#🛑-遇到的痛点" class="headerlink" title="🛑 遇到的痛点"></a>🛑 遇到的痛点</h2><p>当你更换了 <strong>电脑 &#x2F; 浏览器 &#x2F; 新网络环境</strong> 再次打开广告后台时，常常会崩溃地发现：</p><ul><li>❌ 自定义列没有同步</li><li>❌ 页面直接被重置成默认展示</li><li>❌ 又要几十个指标重新勾选一遍</li></ul><p>别急，下面教大家一个 <strong>3步搞定</strong> 的实用技巧，让你在不同设备和浏览器中瞬间同步自定义列。</p><hr><h2 id="🛠️-具体操作步骤"><a href="#🛠️-具体操作步骤" class="headerlink" title="🛠️ 具体操作步骤"></a>🛠️ 具体操作步骤</h2><h3 id="1️⃣-第一步：获取“完美配置”的链接"><a href="#1️⃣-第一步：获取“完美配置”的链接" class="headerlink" title="1️⃣ 第一步：获取“完美配置”的链接"></a>1️⃣ 第一步：获取“完美配置”的链接</h3><p>首先，打开你 <strong>已经设置好自定义列</strong> 的广告管理工具页面。确认这是你最满意、最常用的一套列配置。</p><p>然后在浏览器地址栏中，<strong>复制整个广告管理工具链接</strong>。</p><p><strong>🔗 链接示例：</strong></p><blockquote><p><code>https://adsmanager.facebook.com/adsmanager/manage/campaigns?act=111...&amp;columns=name%2Cdelivery...</code></p></blockquote><h3 id="2️⃣-第二步：提取核心参数"><a href="#2️⃣-第二步：提取核心参数" class="headerlink" title="2️⃣ 第二步：提取核心参数"></a>2️⃣ 第二步：提取核心参数</h3><p>在刚才复制的链接中，只保留 <strong>「从 <code>&amp;columns=</code> 开始」</strong> 的参数部分。<br>这就是 FB 用来保存你自定义列的核心代码，你可以把它理解为你整套“自定义列模板”的存档文件。</p><p><strong>📋 你需要保留的部分（示例如下，整段复制）：</strong></p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs text">&amp;columns=name%2Cdelivery%2Cbudget%2Cspend%2Cresults%2Ccpc%2Ccpm%2Cactions%3Aomni_add_to_cart%2Cctr%2Cpurchase_roas%3Aomni_purchase%2Cbid%2Cactions%3Alink_click%2Ccost_per_result%2Cactions%3Aomni_initiated_checkout%2Caction_values%3Aomni_purchase%2Cfrequency%2Cactions%3Aomni_purchase%2Cattribution_setting%2Cactions%3Aonsite_conversion.messaging_block%2Creach&amp;attribution_windows=default&amp;date=2026-02-05_2026-02-06%2Ctoday&amp;insights_date=2026-02-05_2026-02-06%2Ctoday&amp;geography_breakdown=geography&amp;insights_selected_metrics=cpm<br></code></pre></td></tr></table></figure><h3 id="3️⃣-第三步：替换新环境的链接"><a href="#3️⃣-第三步：替换新环境的链接" class="headerlink" title="3️⃣ 第三步：替换新环境的链接"></a>3️⃣ 第三步：替换新环境的链接</h3><p>在另一台电脑或浏览器中打开广告后台，地址栏里可能是一个默认的短链接。</p><p>❌<strong>默认链接示例</strong>：<code>.../manage/campaigns?act=222...&amp;columns=name%2Cdelivery</code></p><p>✅ 操作方法： 直接把第 2 步复制的长参数，<strong>完整接在链接后面</strong>（或者替换掉原有的 &amp;columns&#x3D; 及其后面的内容），然后<strong>回车刷新</strong>。</p><p>刷新后你会发现—— 👉<strong>自定义列已 100% 还原成功！</strong></p>]]>
      </content:encoded>
    </item>
    <item>
      <title>Meta 广告投放“不完全指北”</title>
      <link>https://www.blog.nxyz.org/posts/34e1541/</link>
      <description>
        <![CDATA[<blockquote>
<p><strong>前言</strong>：所谓的“仙女座”算法时期，本质上是 Meta 完成了从“机械定向”到“AI 智能黑盒”的彻底转型。<br>在这个阶段，广告账户的波动性（Volatility）加剧，人工干预的权重降低。本指南旨在帮助优化师在]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Facebook/">Facebook</category>
      <category domain="https://www.blog.nxyz.org/tags/Instagram/">Instagram</category>
      <pubDate>Mon, 02 Feb 2026 13:18:28 GMT</pubDate>
      <content:encoded>
        <![CDATA[<blockquote><p><strong>前言</strong>：所谓的“仙女座”算法时期，本质上是 Meta 完成了从“机械定向”到“AI 智能黑盒”的彻底转型。<br>在这个阶段，广告账户的波动性（Volatility）加剧，人工干预的权重降低。本指南旨在帮助优化师在 AI 统管的时代，找回控制权。</p></blockquote><hr><h2 id="🟢-一、-核心逻辑变迁：从“找人”到“喂养”"><a href="#🟢-一、-核心逻辑变迁：从“找人”到“喂养”" class="headerlink" title="🟢 一、 核心逻辑变迁：从“找人”到“喂养”"></a>🟢 一、 核心逻辑变迁：从“找人”到“喂养”</h2><p>在旧算法时代，我们告诉系统：“去找 25-45 岁喜欢骑行的人”。<br>在<strong>仙女座算法</strong>时代，逻辑变成了：<strong>“素材即定向”</strong>。</p><ul><li><strong>旧逻辑</strong>：Campaign 结构 + 细分受众兴趣 &#x3D; 成功。</li><li><strong>新逻辑</strong>：优质素材 + 广泛受众 + 转化信号 &#x3D; 成功。<ul><li>系统通过分析你的视频&#x2F;图片内容（AI 视觉识别）和文案，自动判断这则广告适合推给谁。</li><li><strong>结论</strong>：不要再过度纠结受众重叠，AI 会自动处理。</li></ul></li></ul><hr><h2 id="🔵-二、-账户结构策略：极简主义-Simplification"><a href="#🔵-二、-账户结构策略：极简主义-Simplification" class="headerlink" title="🔵 二、 账户结构策略：极简主义 (Simplification)"></a>🔵 二、 账户结构策略：极简主义 (Simplification)</h2><p>对抗算法波动的最佳方式是<strong>数据集中</strong>。账户结构越复杂，机器学习越难走出“学习期”。</p><h3 id="1-推荐结构：3-1-N-模型"><a href="#1-推荐结构：3-1-N-模型" class="headerlink" title="1. 推荐结构：3-1-N 模型"></a>1. 推荐结构：3-1-N 模型</h3><ul><li><strong>1 个 CBO (Campaign Budget Optimization) 或者是 ASC 广告系列</strong>：用于主力扩量（Scaling）。</li><li><strong>1 个 ABO (Ad Set Budget Optimization)</strong>：专门用于测试新素材（Creative Testing）。</li><li><strong>N 个素材</strong>：保持广告层级的多样性。</li></ul><h3 id="2-关于-ASC-Advantage-Shopping-Campaigns"><a href="#2-关于-ASC-Advantage-Shopping-Campaigns" class="headerlink" title="2. 关于 ASC (Advantage+ Shopping Campaigns)"></a>2. 关于 ASC (Advantage+ Shopping Campaigns)</h3><p>ASC 是目前算法权重的“亲儿子”。</p><ul><li><strong>建议配置</strong>：预算的 50%-70% 应该流向 ASC。</li><li><strong>注意</strong>：ASC 极其“吞噬”预算，它倾向于把钱花在历史表现好的老素材上。<strong>必须</strong>在设置中限定“现有客户上限（Existing Customer Cap）”，建议设为 0%-10%，强迫系统去拉新，而不是收割老客。</li></ul><hr><h2 id="🟡-三、-素材策略：唯一的杠杆-Creative-Strategy"><a href="#🟡-三、-素材策略：唯一的杠杆-Creative-Strategy" class="headerlink" title="🟡 三、 素材策略：唯一的杠杆 (Creative Strategy)"></a>🟡 三、 素材策略：唯一的杠杆 (Creative Strategy)</h2><p>在“仙女座”算法下，素材质量决定了 CPM（千次展示费用）。系统会惩罚低互动、低质量的广告。</p><h3 id="1-3秒定生死"><a href="#1-3秒定生死" class="headerlink" title="1. 3秒定生死"></a>1. 3秒定生死</h3><ul><li><strong>Hook (钩子)</strong>：前 3 秒必须展示痛点或惊艳的视觉效果。</li><li><strong>节奏</strong>：不要做漫长的铺垫，直接切入产品核心卖点。</li></ul><h3 id="2-格式多样性-Format-Diversity"><a href="#2-格式多样性-Format-Diversity" class="headerlink" title="2. 格式多样性 (Format Diversity)"></a>2. 格式多样性 (Format Diversity)</h3><p>算法喜欢把不同的格式推给不同习惯的人。一个广告组内应包含：</p><ul><li><strong>1x 静态图</strong> (高光产品图&#x2F;痛点对比图)</li><li><strong>1x UGC 短视频</strong> (TikTok 风格，真实感强)</li><li><strong>1x 轮播图 (Carousel)</strong> (展示系列产品或单一产品的多个角度)</li></ul><h3 id="3-文案-Copywriting"><a href="#3-文案-Copywriting" class="headerlink" title="3. 文案 (Copywriting)"></a>3. 文案 (Copywriting)</h3><ul><li><strong>Primary Text</strong>：测试“短文案”（一句话痛点）vs“长文案”（故事性&#x2F;评测）。</li><li><strong>Headline</strong>：直接写促销（Free Shipping）或紧迫感（Limited Stock）。</li></ul><hr><h2 id="🟠-四、-竞价与预算：驯服波动"><a href="#🟠-四、-竞价与预算：驯服波动" class="headerlink" title="🟠 四、 竞价与预算：驯服波动"></a>🟠 四、 竞价与预算：驯服波动</h2><p>当算法“发疯”（ROI 骤降）时，需要用竞价策略来保护资金。</p><h3 id="1-Cost-Cap-成本上限"><a href="#1-Cost-Cap-成本上限" class="headerlink" title="1. Cost Cap (成本上限)"></a>1. Cost Cap (成本上限)</h3><ul><li><strong>适用场景</strong>：当你不想亏损，只愿在特定 CPA (每次转化成本) 下出单时。</li><li><strong>设置</strong>：设置一个你盈亏平衡点的 CPA（例如 $20）。</li><li><strong>结果</strong>：如果系统跑不到 $20 一单，它就不花钱。这是一种“保命”策略，适合高波动期。</li></ul><h3 id="2-Bid-Strategy-出价策略"><a href="#2-Bid-Strategy-出价策略" class="headerlink" title="2. Bid Strategy (出价策略)"></a>2. Bid Strategy (出价策略)</h3><ul><li><strong>Lowest Cost (自动出价)</strong>：适合测试期，让系统以此为基准跑数据。</li><li><strong>Bid Cap</strong>：适合老手，手动控制竞价，抢占优质流量。</li></ul><h3 id="3-扩量规则-Scaling"><a href="#3-扩量规则-Scaling" class="headerlink" title="3. 扩量规则 (Scaling)"></a>3. 扩量规则 (Scaling)</h3><ul><li><strong>垂直扩量</strong>：在表现好的 Campaign 直接加预算。建议每 48-72 小时增加 20%，避免触发重新学习。</li><li><strong>水平扩量</strong>：复制表现好的 Ad Set 到新的 CBO 中。</li></ul><hr><h2 id="🟣-五、-信号与归因-Signals-Attribution"><a href="#🟣-五、-信号与归因-Signals-Attribution" class="headerlink" title="🟣 五、 信号与归因 (Signals &amp; Attribution)"></a>🟣 五、 信号与归因 (Signals &amp; Attribution)</h2><p>iOS14 之后，数据丢失是常态。</p><ul><li><strong>CAPI (Conversions API)</strong>：<strong>必须配置</strong>。仅靠 Pixel 浏览器端抓取已经不够了，必须通过服务器端回传数据。确保“匹配质量”在 6.0 分以上。</li><li><strong>归因窗口</strong>：<ul><li>推荐：<strong>点击后 7 天 + 浏览后 1 天</strong> (7DC&#x2F;1DV)。这是算法数据量最大的窗口。</li></ul></li><li><strong>第三方追踪</strong>：不要完全相信 Meta 后台的 ROAS。建议配合 GA4 或 Shopify 自带的数据报表进行交叉验证。</li></ul><hr><h2 id="⚫-六、-避坑指南：玄学与科学"><a href="#⚫-六、-避坑指南：玄学与科学" class="headerlink" title="⚫ 六、 避坑指南：玄学与科学"></a>⚫ 六、 避坑指南：玄学与科学</h2><ol><li><strong>不要频繁动刀</strong>：每次修改广告（改预算、改文案），都可能重置机器学习。给广告组至少 3-4 天的时间（或 50 次转化事件）。</li><li><strong>避免内卷</strong>：同一个账户内，不要开多个完全一样的受众组跑同样的素材，这会导致“自我竞争”拉高 CPM。</li><li><strong>如果广告死了</strong>：<ul><li><strong>Duplicate (复制)</strong>：有时候只是运气不好，复制一遍可能“复活”。</li><li><strong>Creative Refresh</strong>：更换缩略图（Thumbnail）或前 3 秒，往往能骗过算法让它以为是新素材。</li></ul></li></ol><hr><blockquote><p><strong>总结</strong><br>仙女座算法的核心是 <strong>“Broad Targeting + Killer Creative” (宽泛定向 + 杀手级素材)</strong>。<br>别再试图用狭窄的兴趣词去框定用户，把精力花在打磨那个 15 秒的视频上。</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>机场和专业VPN</title>
      <link>https://www.blog.nxyz.org/posts/1fe4e7e/</link>
      <description>
        <![CDATA[<h2 id="1-技术背景：VPN-与代理的区别"><a href="#1-技术背景：VPN-与代理的区别" class="headerlink" title="1. 技术背景：VPN 与代理的区别"></a>1. 技术背景：VPN 与代理的区别</h2><p>在深入评测之前，]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/VPN/">VPN</category>
      <category domain="https://www.blog.nxyz.org/tags/%E4%BB%A3%E7%90%86/">代理</category>
      <category domain="https://www.blog.nxyz.org/tags/%E6%9C%BA%E5%9C%BA/">机场</category>
      <pubDate>Sat, 31 Jan 2026 07:03:22 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="1-技术背景：VPN-与代理的区别"><a href="#1-技术背景：VPN-与代理的区别" class="headerlink" title="1. 技术背景：VPN 与代理的区别"></a>1. 技术背景：VPN 与代理的区别</h2><p>在深入评测之前，我们需要理解两种主要的技术路线：</p><p><strong>VPN（虚拟专用网络）：</strong> 如 Astrill 和 V1VPN。它们在操作系统内核层面建立虚拟网卡，接管设备的所有网络请求，具有最高的隐私级别。<br><strong>Proxy（代理&#x2F;机场）：</strong> 如 Ghelper 和 Sakuracat。它们通常工作在应用层，虽然效率极高，但在隐私保护上弱于全隧道 VPN。</p><hr><h2 id="2-深度服务点评"><a href="#2-深度服务点评" class="headerlink" title="2. 深度服务点评"></a>2. 深度服务点评</h2><h3 id="🛡️-Astrill-VPN：极致稳定但昂贵的“核武器”"><a href="#🛡️-Astrill-VPN：极致稳定但昂贵的“核武器”" class="headerlink" title="🛡️ Astrill VPN：极致稳定但昂贵的“核武器”"></a>🛡️ Astrill VPN：极致稳定但昂贵的“核武器”</h3><p>Astrill VPN 在跨境网络访问领域拥有“核武器”般的地位，是驻华外企和高净值用户的首选。</p><ul><li><strong>核心优势：</strong><ul><li><strong>抗干扰能力：</strong> 拥有 StealthVPN 与 OpenWeb 私有协议矩阵。OpenWeb 可将流量伪装成普通网页浏览，而 StealthVPN 通过双层加密与数据包分片混淆规避深度包检测。</li><li><strong>物理服务器：</strong> 坚持使用物理专用服务器（Bare Metal）而非 VPS，避免了“嘈杂邻居效应”，提供极高的带宽吞吐量。</li></ul></li><li><strong>主要劣势：</strong><ul><li><strong>价格高昂：</strong> 月付高达 $30.00 USD，是市场平均水平的两到三倍。</li><li><strong>无退款政策：</strong> 一旦售出概不退款，这是其最具争议的霸王条款。</li><li><strong>体验过时：</strong> 客户端界面被评价为“上世纪的产物”，操作繁琐。</li></ul></li></ul><h3 id="⚡-V1VPN：性价比与流媒体的新生代挑战者"><a href="#⚡-V1VPN：性价比与流媒体的新生代挑战者" class="headerlink" title="⚡ V1VPN：性价比与流媒体的新生代挑战者"></a>⚡ V1VPN：性价比与流媒体的新生代挑战者</h3><p>V1VPN 定位于针对高审查环境优化的现代化服务，通过极具竞争力的价格争夺市场。</p><ul><li><strong>核心优势：</strong><ul><li><strong>无限设备连接：</strong> 允许用户一个账号登陆所有设备，极适合家庭共享。</li><li><strong>流媒体解锁：</strong> 在解锁 Netflix、Disney+ 等服务方面表现优异，拥有高质量的“住宅 IP”池。</li><li><strong>极致性价比：</strong> 年付折合 $3.33&#x2F;月，仅为 Astrill 的五分之一。</li><li><strong>动态 IP 调度：</strong> 采用自动化的服务器部署机制，当 IP 被封锁时能快速拉起新实例。</li></ul></li><li><strong>主要劣势：</strong><ul><li><strong>客服短板：</strong> 主要依赖邮件支持，缺乏 24&#x2F;7 实时在线聊天。</li></ul></li></ul><h3 id="🏠-12VPX：坚守小众市场的长期主义者"><a href="#🏠-12VPX：坚守小众市场的长期主义者" class="headerlink" title="🏠 12VPX：坚守小众市场的长期主义者"></a>🏠 12VPX：坚守小众市场的长期主义者</h3><p>12VPX 专注于服务在华外籍人士，提供类似“保姆级”的稳定服务。</p><ul><li><strong>核心优势：</strong><ul><li><strong>WEB 协议：</strong> 牺牲部分加密强度（AES-128）以换取更低的数据包负载，在慢速网络下表现更好。</li><li><strong>PAC 智能分流：</strong> 确保用户访问国外资源时，国内应用（如淘宝、外卖）不受影响。</li><li><strong>专家级支持：</strong> 客服团队对中国网络环境极度了解，能提供具体的排障指导。</li></ul></li><li><strong>主要劣势：</strong><ul><li><strong>移动端体验差：</strong> iOS 和 Android 端无原生 App，需手动配置第三方客户端，门槛较高。</li><li><strong>价格较高：</strong> 年付折合 $12.50&#x2F;月，缺乏性价比。</li></ul></li></ul><h3 id="🧩-Ghelper：浏览器里的“轻骑兵”"><a href="#🧩-Ghelper：浏览器里的“轻骑兵”" class="headerlink" title="🧩 Ghelper：浏览器里的“轻骑兵”"></a>🧩 Ghelper：浏览器里的“轻骑兵”</h3><p>Ghelper 不是系统级 VPN，而是一个浏览器插件，适合极度垂直的轻量用户。</p><ul><li><strong>核心优势：</strong><ul><li><strong>零门槛：</strong> 安装插件即用，无需配置网络。</li><li><strong>成本极低：</strong> 年付约 160 RMB（约 $2&#x2F;月），且支持支付宝&#x2F;微信支付。</li></ul></li><li><strong>主要劣势：</strong><ul><li><strong>覆盖窄：</strong> 仅代理浏览器流量，无法用于桌面软件或游戏。</li><li><strong>无隐私：</strong> 缺乏端到端加密，ISP 可轻易分析流量，且支付方式实名化。</li></ul></li></ul><h3 id="✈️-机场生态-OuO-Sakuracat-：极速与风险并存"><a href="#✈️-机场生态-OuO-Sakuracat-：极速与风险并存" class="headerlink" title="✈️ 机场生态 (OuO &#x2F; Sakuracat)：极速与风险并存"></a>✈️ 机场生态 (OuO &#x2F; Sakuracat)：极速与风险并存</h3><p>这类服务依靠 Shadowsocks&#x2F;V2Ray 协议和 IPLC 专线，在高端玩家中备受推崇。</p><ul><li><strong>核心优势：</strong><ul><li><strong>物理穿墙：</strong> 使用 IPLC&#x2F;IEPL 国际专线，流量不经过 GFW 审查网关，延迟极低（常年低于 50ms）。</li><li><strong>极致速度：</strong> 适合 FPS 游戏玩家的唯一选择。</li></ul></li><li><strong>主要劣势：</strong><ul><li><strong>跑路风险：</strong> 多由个人运营，缺乏法律实体，存在“卷款跑路”的风险。</li><li><strong>隐私审计：</strong> 机场主可能会审计用户流量，绝无匿名性可言。</li></ul></li></ul><hr><h2 id="3-横向对比矩阵"><a href="#3-横向对比矩阵" class="headerlink" title="3. 横向对比矩阵"></a>3. 横向对比矩阵</h2><table><thead><tr><th align="left">特性指标</th><th align="left">Astrill VPN</th><th align="left">V1VPN</th><th align="left">12VPX</th><th align="left">Ghelper</th><th align="left">机场 (OuO&#x2F;Sakuracat)</th></tr></thead><tbody><tr><td align="left"><strong>主要协议</strong></td><td align="left">OpenWeb &#x2F; Stealth</td><td align="left">Proprietary</td><td align="left">WEB &#x2F; OpenVPN</td><td align="left">HTTPS Proxy</td><td align="left">SS &#x2F; V2Ray</td></tr><tr><td align="left"><strong>系统防护</strong></td><td align="left">✅ 全局</td><td align="left">✅ 全局</td><td align="left">✅ 全局</td><td align="left">❌ 仅浏览器</td><td align="left">✅ (需第三方软件)</td></tr><tr><td align="left"><strong>连接速度</strong></td><td align="left">🚀 极快 (物理机)</td><td align="left">⚡ 快 (1Gbps)</td><td align="left">🔵 一般</td><td align="left">🐢 慢&#x2F;中等</td><td align="left">🚀 极快 (专线)</td></tr><tr><td align="left"><strong>设备限制</strong></td><td align="left">5 台</td><td align="left">♾️ <strong>无限</strong></td><td align="left">6 台</td><td align="left">♾️ <strong>无限</strong></td><td align="left">通常限制 IP</td></tr><tr><td align="left"><strong>月均成本</strong></td><td align="left">💰💰💰 ($12.5+)</td><td align="left">💰 ($3.33)</td><td align="left">💰💰 ($10+)</td><td align="left">💰 (&lt;$3)</td><td align="left">💰 按量付费</td></tr><tr><td align="left"><strong>退款政策</strong></td><td align="left">❌ <strong>无退款</strong></td><td align="left">✅ 有</td><td align="left">✅ 有限制</td><td align="left">❌ <strong>无退款</strong></td><td align="left">❌ 通常无</td></tr></tbody></table><hr><h2 id="4-选购建议"><a href="#4-选购建议" class="headerlink" title="4. 选购建议"></a>4. 选购建议</h2><p>根据你的具体需求，以下是战略性建议：</p><ol><li><strong>商务精英 (Budget Irrelevant)：选择 Astrill VPN</strong><ul><li>如果你需要绝对的可靠性，且经常进行 VoIP 通话，Astrill 是唯一能保持“常亮”的灯塔，但你必须接受其昂贵的价格和无退款政策。</li></ul></li><li><strong>家庭用户与流媒体 (Value Focused)：选择 V1VPN</strong><ul><li>家庭设备众多且需要看 Netflix&#x2F;Disney+ 的用户，V1VPN 的无限设备连接和流媒体优化是当前市场周期的最优解。</li></ul></li><li><strong>长期外籍人士 (Stability Oriented)：选择 12VPX</strong><ul><li>看重英语服务和类似“回家”体验的用户，且不介意手动配置手机端。</li></ul></li><li><strong>学术查资料 (Lightweight)：选择 Ghelper</strong><ul><li>如果你只是需要上 Google Scholar 查个论文，不要杀鸡用牛刀，插件最方便。</li></ul></li><li><strong>硬核游戏玩家 (Performance Oriented)：选择 Sakuracat &#x2F; OuO</strong><ul><li>唯有 IPLC 专线能提供竞技游戏所需的低延迟，但需注意隐私风险，不要进行敏感操作。</li></ul></li></ol><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>在审查与反审查的博弈中，没有完美的“银弹”。用户本质上是在<strong>价格 (Cost)</strong>、<strong>隐私 (Privacy)</strong> 与 <strong>速度 (Speed)</strong> 这“不可能三角”中进行取舍。</p><blockquote><p><strong>免责声明</strong>：网络环境动态变化，建议在购买长期套餐前优先利用试用期进行实测。</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>Autodesk CAD v2025.1.2 绿色版</title>
      <link>https://www.blog.nxyz.org/posts/4d5f7edc/</link>
      <description>
        <![CDATA[<h2 id="软件简介"><a href="#软件简介" class="headerlink" title="软件简介"></a>软件简介</h2><p>欧特克（Autodesk）推出的 <strong>Autodesk AutoCAD 2025</strong> 是全球领先的]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      <category domain="https://www.blog.nxyz.org/tags/%E7%A0%B4%E8%A7%A3/">破解</category>
      <category domain="https://www.blog.nxyz.org/tags/CAD/">CAD</category>
      <pubDate>Sat, 31 Jan 2026 06:55:37 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="软件简介"><a href="#软件简介" class="headerlink" title="软件简介"></a>软件简介</h2><p>欧特克（Autodesk）推出的 <strong>Autodesk AutoCAD 2025</strong> 是全球领先的专业计算机辅助设计（CAD）软件之一，主要用于二维绘图、工程制图、设计文档编制以及基础三维建模。</p><p>AutoCAD 凭借高精度绘图能力与行业标准 <strong>DWG 数据格式</strong>，已成为机械设计与工程建筑领域的核心设计工具，广泛应用于：</p><ul><li>机械设计  </li><li>工程制图  </li><li>土木建筑  </li><li>室内装饰  </li><li>服装加工  </li><li>工业制造</li></ul><p>通过 AutoCAD，设计师可高效创建、编辑并共享设计数据，实现与客户及团队成员的精准协作。</p><p>DWG 作为业界最通用的设计文件格式之一，支持：</p><ul><li>图形演示  </li><li>渲染处理  </li><li>专业绘图  </li><li>三维打印  </li><li>多平台数据交换</li></ul><p>可显著提升设计成果展示效果。</p><hr><h2 id="下载地址"><a href="#下载地址" class="headerlink" title="下载地址"></a>下载地址</h2><blockquote><p>请在下方补充实际资源链接</p></blockquote><ul><li>OneDrive：<code>（填写下载链接）</code></li></ul><hr><h2 id="使用说明"><a href="#使用说明" class="headerlink" title="使用说明"></a>使用说明</h2><ol><li>下载软件压缩包  </li><li>解压至本地目录  </li><li>运行主程序启动软件  </li><li>根据需要进行个性化配置</li></ol><blockquote><p>⚠️ 提示：非官方精简或便携版本在稳定性与功能完整性方面可能存在差异，建议重要项目使用 Autodesk 官方正式版。</p></blockquote><hr><h2 id="Autodesk-CAD-v2025-新功能"><a href="#Autodesk-CAD-v2025-新功能" class="headerlink" title="Autodesk CAD v2025 新功能"></a>Autodesk CAD v2025 新功能</h2><h3 id="1-活动见解（Activity-Insights）"><a href="#1-活动见解（Activity-Insights）" class="headerlink" title="1. 活动见解（Activity Insights）"></a>1. 活动见解（Activity Insights）</h3><ul><li>跟踪图形文件的演变过程  </li><li>查看与比较历史记录  </li><li>提升团队协作透明度</li></ul><hr><h3 id="2-Autodesk-Docs-标记导入"><a href="#2-Autodesk-Docs-标记导入" class="headerlink" title="2. Autodesk Docs 标记导入"></a>2. Autodesk Docs 标记导入</h3><ul><li>支持从 Autodesk Docs 导入 PDF 标记  </li><li>与“标记输入”功能联动  </li><li>便于查看与合并修订内容</li></ul><hr><h3 id="3-智能块搜索与转换（Smart-Blocks）"><a href="#3-智能块搜索与转换（Smart-Blocks）" class="headerlink" title="3. 智能块搜索与转换（Smart Blocks）"></a>3. 智能块搜索与转换（Smart Blocks）</h3><ul><li>自动识别重复几何对象  </li><li>一键转换为块（Block）  </li><li>提升绘图效率与结构规范性</li></ul><hr><h3 id="4-智能块对象检测（技术预览）"><a href="#4-智能块对象检测（技术预览）" class="headerlink" title="4. 智能块对象检测（技术预览）"></a>4. 智能块对象检测（技术预览）</h3><ul><li>扫描图形元素  </li><li>检测可转换对象  </li><li>强化自动化处理能力</li></ul><hr><h3 id="5-填充图案功能改进"><a href="#5-填充图案功能改进" class="headerlink" title="5. 填充图案功能改进"></a>5. 填充图案功能改进</h3><ul><li>HATCH 命令增强  </li><li>新增与优化填充选项  </li><li>图案填充更加高效便捷</li></ul><hr><h3 id="6-Esri-地图集成"><a href="#6-Esri-地图集成" class="headerlink" title="6. Esri 地图集成"></a>6. Esri 地图集成</h3><p>新增 5 种 Esri 地图支持：</p><ul><li>地理位置信息指定  </li><li>GIS 数据结合  </li><li>场景化设计参考</li></ul><hr><h3 id="7-跟踪（Trace）功能更新"><a href="#7-跟踪（Trace）功能更新" class="headerlink" title="7. 跟踪（Trace）功能更新"></a>7. 跟踪（Trace）功能更新</h3><ul><li>改进工具栏界面  </li><li>支持在“编辑图形”模式下编辑外部参照（Xref）  </li><li>批注协作更加流畅</li></ul><hr><h3 id="8-标记输入与标记辅助优化"><a href="#8-标记输入与标记辅助优化" class="headerlink" title="8. 标记输入与标记辅助优化"></a>8. 标记输入与标记辅助优化</h3><ul><li>持续增强标记识别能力  </li><li>更高效引入修订内容  </li><li>简化图形修改流程</li></ul><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>AutoCAD 2025 通过以下能力升级进一步提升设计生产力：</p><ul><li>智能块自动化处理  </li><li>云端标记协作  </li><li>历史活动追踪  </li><li>GIS 地理数据整合</li></ul><p>适用于工程设计、制造建模及建筑制图等多场景工作流。</p><hr><blockquote><p>📌 建议结合 Autodesk Docs &#x2F; BIM 协作环境使用，以获得完整云端设计体验。</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>去除AI水印</title>
      <link>https://www.blog.nxyz.org/posts/41c3d293/</link>
      <description>
        <![CDATA[<h1 id="告别-AI-水印：两款超实用的-Gemini-与豆包图像去水印工具推荐"><a href="#告别-AI-水印：两款超实用的-Gemini-与豆包图像去水印工具推荐" class="headerlink" title="告别 AI 水印：两款超实用的 Gemini]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Gemini/">Gemini</category>
      <category domain="https://www.blog.nxyz.org/tags/%E8%B1%86%E5%8C%85/">豆包</category>
      <category domain="https://www.blog.nxyz.org/tags/AI/">AI</category>
      <category domain="https://www.blog.nxyz.org/tags/%E5%8E%BB%E6%B0%B4%E5%8D%B0/">去水印</category>
      <category domain="https://www.blog.nxyz.org/tags/%E8%84%9A%E6%9C%AC/">脚本</category>
      <pubDate>Fri, 23 Jan 2026 08:07:38 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h1 id="告别-AI-水印：两款超实用的-Gemini-与豆包图像去水印工具推荐"><a href="#告别-AI-水印：两款超实用的-Gemini-与豆包图像去水印工具推荐" class="headerlink" title="告别 AI 水印：两款超实用的 Gemini 与豆包图像去水印工具推荐"></a>告别 AI 水印：两款超实用的 Gemini 与豆包图像去水印工具推荐</h1><p>在使用 Google Gemini 或字节跳动旗下的“豆包 AI”生成精美图片时，最令人头疼的莫过于图片上的品牌水印。这些水印往往会破坏图片的构图，影响二次创作。</p><p>今天为大家推荐两款开源、高效的工具。它们通过<strong>油猴脚本（Tampermonkey）<strong>或</strong>浏览器扩展</strong>的方式，为 Gemini 和 豆包 AI 提供了近乎完美的去水印解决方案。</p><hr><h2 id="1-Gemini-Watermark-Remover：数学级精准还原"><a href="#1-Gemini-Watermark-Remover：数学级精准还原" class="headerlink" title="1. Gemini Watermark Remover：数学级精准还原"></a>1. Gemini Watermark Remover：数学级精准还原</h2><p>大多数去水印工具采用的是“AI 涂抹”或“内容填充”，这往往会导致图片细节模糊。而这款工具另辟蹊径，采用了纯数学算法。</p><h3 id="🚀-核心亮点"><a href="#🚀-核心亮点" class="headerlink" title="🚀 核心亮点"></a>🚀 核心亮点</h3><ul><li><strong>100% 客户端处理</strong>：所有计算均在浏览器本地完成，无需上传图片，保护隐私且响应极快。</li><li><strong>反向 Alpha 混合算法</strong>：利用数学推导水印透明度并进行反向补偿（Reverse Alpha Blending），实现真正的<strong>无损还原</strong>，而非不可预测的 AI 补全。</li><li><strong>纯 JS 构建</strong>：基于原生 JavaScript，轻量化且不依赖复杂后端。</li></ul><h3 id="📁-项目信息"><a href="#📁-项目信息" class="headerlink" title="📁 项目信息"></a>📁 项目信息</h3><ul><li><strong>GitHub 主页</strong>：<a href="https://github.com/journey-ad/gemini-watermark-remover">journey-ad&#x2F;gemini-watermark-remover</a></li><li><strong>关键词</strong>：无损、反向混合算法、高性能。</li></ul><hr><h2 id="2-Doubao-Downloader：一键获取无水印原图"><a href="#2-Doubao-Downloader：一键获取无水印原图" class="headerlink" title="2. Doubao Downloader：一键获取无水印原图"></a>2. Doubao Downloader：一键获取无水印原图</h2><p>相比于后期去水印，直接下载原始生成的无水印资源显然更加高效。<strong>Doubao Downloader</strong> 正是为此而生。</p><h3 id="🚀-核心亮点-1"><a href="#🚀-核心亮点-1" class="headerlink" title="🚀 核心亮点"></a>🚀 核心亮点</h3><ul><li><strong>原生无水印</strong>：通过拦截浏览器请求，直接提取豆包 AI 生成的原始无水印图片链接。</li><li><strong>批量下载</strong>：支持一键批量保存生成的图片资源，极大提升素材收集效率。</li><li><strong>双版本支持</strong>：提供浏览器扩展程序（Extension）和油猴脚本（Userscript）两种安装方式。</li></ul><h3 id="📁-项目信息-1"><a href="#📁-项目信息-1" class="headerlink" title="📁 项目信息"></a>📁 项目信息</h3><ul><li><strong>GitHub 主页</strong>：<a href="https://github.com/LauZzL/doubao-downloader">LauZzL&#x2F;doubao-downloader</a></li><li><strong>关键词</strong>：批量下载、资源拦截、快捷方便。</li></ul><hr><h2 id="🛠-如何安装使用？"><a href="#🛠-如何安装使用？" class="headerlink" title="🛠 如何安装使用？"></a>🛠 如何安装使用？</h2><p>这两款工具均支持通过 <strong>Tampermonkey（油猴）</strong> 插件运行。</p><ol><li><strong>准备工作</strong>：在浏览器（Chrome, Edge, Firefox 等）中安装 <a href="https://www.tampermonkey.net/">Tampermonkey</a> 插件。</li><li><strong>安装脚本</strong>：<ul><li>访问上述 GitHub 项目地址。</li><li>找到以 <code>.user.js</code> 结尾的脚本文件链接并点击，在弹出的油猴界面选择“安装”。</li></ul></li><li><strong>开始使用</strong>：<ul><li>刷新 Gemini 或 豆包 AI 页面。</li><li>生成图片后，页面上会出现对应的“去水印”或“批量下载”功能按钮。</li></ul></li></ol><hr><h2 id="💡-总结"><a href="#💡-总结" class="headerlink" title="💡 总结"></a>💡 总结</h2><table><thead><tr><th align="left">工具名称</th><th align="left">针对平台</th><th align="left">技术原理</th><th align="left">推荐人群</th></tr></thead><tbody><tr><td align="left"><strong>Gemini Remover</strong></td><td align="left">Google Gemini</td><td align="left">反向 Alpha 混合 (数学还原)</td><td align="left">追求画质无损的极客</td></tr><tr><td align="left"><strong>Doubao Downloader</strong></td><td align="left">豆包 AI</td><td align="left">请求拦截 (原生提取)</td><td align="left">需要大量素材的创作者</td></tr></tbody></table><blockquote><p><strong>温馨提示</strong>：请在遵守相关法律法规及平台服务协议的前提下使用上述工具，尊重 AI 生成内容的合理使用规范。</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>下载国外社媒视频</title>
      <link>https://www.blog.nxyz.org/posts/28090/</link>
      <description>
        <![CDATA[<h2 id="YouTube"><a href="#YouTube" class="headerlink" title="YouTube"></a>YouTube</h2><p>视频质量最高设置为<code>4k</code> <a href="https://youtube4]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Facebook/">Facebook</category>
      <pubDate>Thu, 22 Jan 2026 12:42:42 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="YouTube"><a href="#YouTube" class="headerlink" title="YouTube"></a>YouTube</h2><p>视频质量最高设置为<code>4k</code> <a href="https://youtube4kdownloader.com/" title="点击访问">Youtube 4K Downloader</a><br>视频质量最高设置为<code>2K</code> <a href="https://yt5s.biz/zh-cn" title="点击访问">yt5s.best</a><br>视频质量最高设置为<code>1080p</code> <a href="https://yt1d.com/zh-tw" title="点击访问">YT1D</a><br>视频质量最高设置为<code>1080p</code> <a href="https://www.y2mate.com/en858/download-youtube" title="点击访问">y2mate.com</a><br>视频质量最高设置为<code>1080p</code> <a href="https://9convert.com/zh-tw425" title="点击访问">9Convert</a><br>视频质量最高设置为<code>1440p</code> <a href="https://en.loader.to/1/1080p-video-downloader.html" title="点击访问">Loader.to</a><br>视频质量最高设置为<code>4k</code> <a href="https://ssyoutube.online/en1/" title="点击访问">SSTYouTube.online</a><br>视频质量最高设置为<code>1080p</code> <a href="https://v1.yt1s.biz/youtube-to-mp4/" title="点击访问">YT1s</a></p><hr><h2 id="Facebook"><a href="#Facebook" class="headerlink" title="Facebook"></a>Facebook</h2><p><a href="https://fdownloader.net/zh-cn" title="点击访问">FDownloader.Net</a></p><hr><h2 id="TikTok"><a href="#TikTok" class="headerlink" title="TikTok"></a>TikTok</h2><p><a href="https://tiksave.io/zh-cn" title="点击访问">TikSave.io</a></p><hr><h2 id="Instagram"><a href="#Instagram" class="headerlink" title="Instagram"></a>Instagram</h2><p>网站 <a href="https://sssinstagram.com/zh" title="点击访问">SSSInstagram</a><br><del>插件 <a href="https://chromewebstore.google.com/detail/downloader-for-instagram/flknhjeojpjfhcgpdaapoldgppnacnhl" title="点击下载">ToolMaster</a></del></p><hr><h2 id="Pinterest"><a href="#Pinterest" class="headerlink" title="Pinterest"></a>Pinterest</h2><p><a href="https://pindown.io/zh-cn1" title="点击下载">PinDown</a></p><hr><h2 id="Dailymotion"><a href="#Dailymotion" class="headerlink" title="Dailymotion"></a>Dailymotion</h2><p><a href="https://dmvideo.download/">dmvideo</a></p>]]>
      </content:encoded>
    </item>
    <item>
      <title>如何截取网页全图：主流浏览器保姆级教程</title>
      <link>https://www.blog.nxyz.org/posts/31d70c5c/</link>
      <description>
        <![CDATA[<h3 id="1-Microsoft-Edge-最推荐：原生支持"><a href="#1-Microsoft-Edge-最推荐：原生支持" class="headerlink" title="1. Microsoft Edge (最推荐：原生支持)"></a>1. Micro]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/%E6%88%AA%E5%9B%BE/">截图</category>
      <pubDate>Thu, 22 Jan 2026 03:15:14 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h3 id="1-Microsoft-Edge-最推荐：原生支持"><a href="#1-Microsoft-Edge-最推荐：原生支持" class="headerlink" title="1. Microsoft Edge (最推荐：原生支持)"></a>1. Microsoft Edge (最推荐：原生支持)</h3><p>Edge 是目前截长图最方便的浏览器，无需安装任何插件。</p><ul><li><strong>操作步骤：</strong><ol><li>在网页任何位置按下快捷键 <code>Ctrl</code> + <code>Shift</code> + <code>S</code>。</li><li>在弹出的工具栏中选择 <strong>“捕获整页” (Capture full page)</strong>。</li><li>系统会自动生成预览，您可以进行简单的涂鸦标注，点击右上角 <strong>“保存”</strong> 即可下载。</li></ol></li></ul><h3 id="2-Google-Chrome-进阶技巧：无需插件"><a href="#2-Google-Chrome-进阶技巧：无需插件" class="headerlink" title="2. Google Chrome (进阶技巧：无需插件)"></a>2. Google Chrome (进阶技巧：无需插件)</h3><p>Chrome 虽然没有直接的截图按钮，但可以通过开发者工具实现高清晰度截全图。</p><ul><li><strong>操作步骤：</strong><ol><li>按下 <code>F12</code> 或 <code>Ctrl</code> + <code>Shift</code> + <code>I</code> 打开开发者工具。</li><li>按下 <code>Ctrl</code> + <code>Shift</code> + <code>P</code> 调出命令输入框。</li><li>输入关键词 <code>Capture full size screenshot</code>。</li><li>选中该命令并回车，浏览器会自动下载整张网页的图片。</li></ol></li></ul><h3 id="3-Firefox-火狐浏览器-极简操作"><a href="#3-Firefox-火狐浏览器-极简操作" class="headerlink" title="3. Firefox 火狐浏览器 (极简操作)"></a>3. Firefox 火狐浏览器 (极简操作)</h3><p>火狐浏览器内置了非常直观的截图工具。</p><ul><li><strong>操作步骤：</strong><ol><li>在网页空白处点击 <strong>鼠标右键</strong>。</li><li>选择 <strong>“截取屏幕截图”</strong>。</li><li>点击右上角的 <strong>“保存整页”</strong> 按钮。</li><li>完成后点击下载即可。</li></ol></li></ul><h3 id="4-推荐扩展插件-功能更强大"><a href="#4-推荐扩展插件-功能更强大" class="headerlink" title="4. 推荐扩展插件 (功能更强大)"></a>4. 推荐扩展插件 (功能更强大)</h3><p>如果您需要批量处理或更高级的编辑功能，推荐在 <a href="https://chromewebstore.google.com/">Chrome 应用商店</a> 安装以下插件：</p><ul><li><strong><a href="https://chromewebstore.google.comdetail/gofullpage-full-page-scre/fdpohaocaechififmbbbbbknoalclacl">GoFullPage</a></strong>：最纯粹的全网页截图工具，一键生成。</li><li><strong><a href="https://chromewebstore.google.comdetail/take-webpage-screenshots/mcbpblocgmgfnpjjppndjkmgjaogfceg">FireShot</a></strong>：支持滚动截图，并可直接保存为 PDF、PNG 或 JPEG。</li></ul><h3 id="5-移动端-iPhone-iPad-Safari"><a href="#5-移动端-iPhone-iPad-Safari" class="headerlink" title="5. 移动端 (iPhone&#x2F;iPad Safari)"></a>5. 移动端 (iPhone&#x2F;iPad Safari)</h3><p>在手机端同样可以轻松截取全图：</p><ol><li>使用组合键进行常规截屏。</li><li>点击左下角的 <strong>截图缩略图</strong> 进入编辑界面。</li><li>在顶部切换标签，从“屏幕”改为 <strong>“整页”</strong>。</li><li>点击“完成”即可保存为 PDF 文件。</li></ol>]]>
      </content:encoded>
    </item>
    <item>
      <title>图片处理</title>
      <link>https://www.blog.nxyz.org/posts/e65a2183/</link>
      <description>
        <![CDATA[<h1 id="🛠️-在线图片处理工具合集"><a href="#🛠️-在线图片处理工具合集" class="headerlink" title="🛠️ 在线图片处理工具合集"></a>🛠️ 在线图片处理工具合集</h1><h2 id="🖥️-综合编辑平台"><a hr]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/%E5%9B%BE%E7%89%87%E5%A4%84%E7%90%86/">图片处理</category>
      <pubDate>Wed, 21 Jan 2026 10:00:59 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h1 id="🛠️-在线图片处理工具合集"><a href="#🛠️-在线图片处理工具合集" class="headerlink" title="🛠️ 在线图片处理工具合集"></a>🛠️ 在线图片处理工具合集</h1><h2 id="🖥️-综合编辑平台"><a href="#🖥️-综合编辑平台" class="headerlink" title="🖥️ 综合编辑平台"></a>🖥️ 综合编辑平台</h2><ul><li><strong>在线图片编辑 (iLoveIMG 主页)</strong><ul><li><a href="https://www.iloveimg.com/zh-cn">iLoveIMG</a></li></ul></li></ul><h2 id="💧-水印处理"><a href="#💧-水印处理" class="headerlink" title="💧 水印处理"></a>💧 水印处理</h2><ul><li><strong>图片批量添加水印</strong><ul><li><a href="https://bulkwatermarks.com/">Bulk Watermarks</a></li><li><a href="https://www.iloveimg.com/zh-cn/watermark-image">iLoveIMG 水印工具</a></li></ul></li></ul><h2 id="✂️-背景去除"><a href="#✂️-背景去除" class="headerlink" title="✂️ 背景去除"></a>✂️ 背景去除</h2><ul><li><strong>AI 自动抠图&#x2F;去底</strong><ul><li><a href="https://www.photoroom.com/zh/tools/background-remover">PhotoRoom 背景去除工具</a></li><li><a href="https://www.iloveimg.com/zh-cn/remove-background">iLoveIMG 移除背景</a></li></ul></li></ul><h2 id="📉-图像优化与调整"><a href="#📉-图像优化与调整" class="headerlink" title="📉 图像优化与调整"></a>📉 图像优化与调整</h2><ul><li><strong>压缩图像</strong> (在保持质量的同时减小文件体积)<ul><li><a href="https://www.iloveimg.com/zh-cn/compress-image">iLoveIMG 压缩图像</a></li></ul></li><li><strong>调整图像大小</strong> (修改分辨率&#x2F;像素)<ul><li><a href="https://www.iloveimg.com/zh-cn/resize-image">iLoveIMG 修改大小</a></li></ul></li><li><strong>裁剪图片</strong> (剪切特定区域)<ul><li><a href="https://www.iloveimg.com/zh-cn/crop-image">iLoveIMG 图片裁剪</a></li></ul></li></ul><h2 id="🔄-格式转换"><a href="#🔄-格式转换" class="headerlink" title="🔄 格式转换"></a>🔄 格式转换</h2><ul><li><strong>转为 JPG</strong><ul><li><a href="https://www.iloveimg.com/zh-cn/convert-to-jpg">iLoveIMG 转JPG</a></li></ul></li></ul><h2 id="🔍-图像搜索"><a href="#🔍-图像搜索" class="headerlink" title="🔍 图像搜索"></a>🔍 图像搜索</h2><ul><li><strong>搜索相似图片 (以图搜图)</strong><ul><li><a href="https://yandex.ru/images/">Yandex Images</a></li></ul></li></ul>]]>
      </content:encoded>
    </item>
    <item>
      <title>Telegram不能下载保存的群组或者频道的视频如何保存到本地-免费版</title>
      <link>https://www.blog.nxyz.org/posts/3ae86d46/</link>
      <description>
        <![CDATA[<h2 id="适用于Android、iOS、Windows"><a href="#适用于Android、iOS、Windows" class="headerlink" title="适用于Android、iOS、Windows"></a>适用于Android、iOS、Windo]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Telegram/">Telegram</category>
      <pubDate>Tue, 16 Dec 2025 01:13:03 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="适用于Android、iOS、Windows"><a href="#适用于Android、iOS、Windows" class="headerlink" title="适用于Android、iOS、Windows"></a>适用于Android、iOS、Windows</h2><h3 id="我们要用到网页版的Telegram"><a href="#我们要用到网页版的Telegram" class="headerlink" title="我们要用到网页版的Telegram"></a>我们要用到网页版的Telegram</h3><p>Telegram 网页版有两个不同的版本：<br><a href="https://web.telegram.org/k/">https://web.telegram.org/k/</a> （推荐食用）<br><a href="https://web.telegram.org/a/">https://web.telegram.org/a/</a></p><h3 id="浏览器安装Tampermonkey或者脚本猫"><a href="#浏览器安装Tampermonkey或者脚本猫" class="headerlink" title="浏览器安装Tampermonkey或者脚本猫"></a>浏览器安装<code>Tampermonkey</code>或者<code>脚本猫</code></h3><p><a href="https://www.tampermonkey.net/index.php?locale=zh">Tampermonkey</a><br><a href="https://scriptcat.org/zh-CN">脚本猫</a></p><h3 id="浏览器点击插件管理打开开发者模式"><a href="#浏览器点击插件管理打开开发者模式" class="headerlink" title="浏览器点击插件管理打开开发者模式"></a>浏览器点击<code>插件管理</code>打开<code>开发者模式</code></h3><p>Edge、Chrome和其他浏览器都一样，打开插件管理的开发者模式</p><h3 id="安装Telegram受限图片视频下载器脚本"><a href="#安装Telegram受限图片视频下载器脚本" class="headerlink" title="安装Telegram受限图片视频下载器脚本"></a>安装Telegram受限图片视频下载器脚本</h3><p><a href="https://greasyfork.org/zh-CN/scripts/446342-telegram-media-downloader">Telegram 受限图片视频下载器</a></p><h3 id="安装完成后打开https-web-telegram-org-k-登录"><a href="#安装完成后打开https-web-telegram-org-k-登录" class="headerlink" title="安装完成后打开https://web.telegram.org/k/登录"></a>安装完成后打开<code>https://web.telegram.org/k/</code>登录</h3><p><a href="https://web.telegram.org/k/">https://web.telegram.org/k/</a></p><h3 id="点击需要下载的图片或者视频"><a href="#点击需要下载的图片或者视频" class="headerlink" title="点击需要下载的图片或者视频"></a>点击需要下载的图片或者视频</h3><p><strong>右上角会有个独立的下载按钮，点击即可</strong><br><strong>注意</strong>开始下载的视频会在页面右下角显示下载进度，图片和音频不会显示下载进度。<br><img src="https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExY2VjNmU2ZDM0YTFlOWY4YTMzZDZmNjVlMDE2ODQ4OGY4N2E3MDFkNSZlcD12MV9pbnRlcm5hbF9naWZzX2dpZklkJmN0PWc/lqCVcw0pCd2VA3zqoE/giphy.gif"><br><img src="https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExMzYwMzM3ZTMzYmI1MzA4M2EyYmY0NTFlOTg4OWFhNjhjNDk5YTkzYiZlcD12MV9pbnRlcm5hbF9naWZzX2dpZklkJmN0PWc/wnYzW4vwpPdeuo62nQ/giphy.gif"><br><img src="https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExMXcxYnJxaXMxcW05YW5rZ2YzZzE0bTU4aTBwYXI1N3pmdnVzbDFrdSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/EEPbblwmSpteAmwLls/giphy.gif"><br><img src="https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExZ3Z5Y2VzM2QzbW1xc3ZwNTQ2N3Q0a3lnanpxdW55c2Qzajl5NXZsaCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/xJFjBGi8isHPR5cuHl/giphy.gif"></p>]]>
      </content:encoded>
    </item>
    <item>
      <title>Windows查看所有软件快捷方式</title>
      <link>https://www.blog.nxyz.org/posts/8a88fb60/</link>
      <description>
        <![CDATA[<p>Windows 的开始菜单有时候显得杂乱无章，想找个软件要翻半天？</p>
<p>其实 Windows 系统里隐藏了一个 <strong>“Applications（所有应用）”</strong> 文件夹，它能以最纯净的文件列表形式展示电脑里安装的所有程序。下面教你如何创建]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Windows/">Windows</category>
      <pubDate>Sun, 14 Dec 2025 10:33:14 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>Windows 的开始菜单有时候显得杂乱无章，想找个软件要翻半天？</p><p>其实 Windows 系统里隐藏了一个 <strong>“Applications（所有应用）”</strong> 文件夹，它能以最纯净的文件列表形式展示电脑里安装的所有程序。下面教你如何创建一个桌面快捷方式直接打开它。</p><h2 id="🛠️-操作步骤"><a href="#🛠️-操作步骤" class="headerlink" title="🛠️ 操作步骤"></a>🛠️ 操作步骤</h2><h3 id="1-新建快捷方式"><a href="#1-新建快捷方式" class="headerlink" title="1. 新建快捷方式"></a>1. 新建快捷方式</h3><p>在桌面 <strong>空白处点击鼠标右键</strong>，选择菜单中的 <strong>「新建」</strong> -&gt; <strong>「快捷方式」</strong>。</p><h3 id="2-输入“魔法”代码"><a href="#2-输入“魔法”代码" class="headerlink" title="2. 输入“魔法”代码"></a>2. 输入“魔法”代码</h3><p>在弹出的窗口中，“请键入对象的位置”一栏，复制并粘贴以下代码：</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs cmd"><span class="hljs-variable">%windir%</span>\explorer.exe shell:::&#123;<span class="hljs-number">4234</span>d49b-<span class="hljs-number">0245</span>-<span class="hljs-number">4</span>df3-b780-<span class="hljs-number">3893943456</span>e1&#125;<br></code></pre></td></tr></table></figure><h3 id="3-命名并完成"><a href="#3-命名并完成" class="headerlink" title="3. 命名并完成"></a>3. 命名并完成</h3><p>在“键入该快捷方式的名称”一栏，输入你喜欢的名字，例如：</p><ul><li>所有应用</li><li>Applications</li><li>我的软件</li></ul><p>点击 「完成」。</p><h3 id="✅-效果展示"><a href="#✅-效果展示" class="headerlink" title="✅ 效果展示"></a>✅ 效果展示</h3><p>双击你刚刚创建的快捷方式，你会打开一个特殊的资源管理器窗口。</p><p>它的特点是：</p><ul><li>列出了电脑上所有已安装的应用程序（包括 UWP 应用和传统 exe 软件）。</li><li>界面清爽，支持搜索。</li><li>支持右键直接卸载、固定到任务栏或以管理员身份运行。</li></ul><h2 id="💡-原理："><a href="#💡-原理：" class="headerlink" title="💡 原理："></a>💡 原理：</h2><blockquote><p>这段代码利用了 Windows 的 Shell CLSID（类标识符），{4234d49b-0245-4df3-b780-3893943456e1} 正是 Windows 系统中指向“应用程序文件夹”的唯一标识符。</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>Spotify（高级版已解锁）</title>
      <link>https://www.blog.nxyz.org/posts/bef00599/</link>
      <description>
        <![CDATA[<h1 id="Spotify：v9-0-89-1450"><a href="#Spotify：v9-0-89-1450" class="headerlink" title="Spotify：v9.0.89.1450"></a>Spotify：v9.0.89.1450</h1><]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E8%BD%AF%E4%BB%B6/">软件</category>
      <category domain="https://www.blog.nxyz.org/tags/%E7%A0%B4%E8%A7%A3/">破解</category>
      <category domain="https://www.blog.nxyz.org/tags/Spotify/">Spotify</category>
      <category domain="https://www.blog.nxyz.org/tags/%E5%AE%89%E5%8D%93/">安卓</category>
      <pubDate>Sun, 14 Dec 2025 04:54:12 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h1 id="Spotify：v9-0-89-1450"><a href="#Spotify：v9-0-89-1450" class="headerlink" title="Spotify：v9.0.89.1450"></a>Spotify：v9.0.89.1450</h1><h2 id="💎𝗠𝗼𝗱𝗜𝗻𝗳𝗼："><a href="#💎𝗠𝗼𝗱𝗜𝗻𝗳𝗼：" class="headerlink" title="💎𝗠𝗼𝗱𝗜𝗻𝗳𝗼："></a>💎𝗠𝗼𝗱𝗜𝗻𝗳𝗼：</h2><h3 id="付费功能已解锁"><a href="#付费功能已解锁" class="headerlink" title="付费功能已解锁"></a>付费功能已解锁</h3><ul><li>无广告</li><li>稳定的模组</li><li>无登录问题</li><li>所有高级功能均可使用</li><li>没有活动的跟踪器或广告</li><li>需要安卓8.0及以上版本</li><li>CPU 架构：armeabi-v7a、arm64-v8a</li><li>优化和清洁资源</li><li>用于快速加载。</li></ul><h2 id="下载地址"><a href="#下载地址" class="headerlink" title="下载地址"></a>下载地址</h2><p>  <a href="https://pan.quark.cn/s/79ac9a575e24?pwd=tARx">夸克网盘</a><br>  <a href="https://"><del>OneDrive</del></a></p>]]>
      </content:encoded>
    </item>
    <item>
      <title>Edge完全卸载教程</title>
      <link>https://www.blog.nxyz.org/posts/e47852d5/</link>
      <description>
        <![CDATA[<h3 id="三方的工具-remove-ms-edge"><a href="#三方的工具-remove-ms-edge" class="headerlink" title="三方的工具 remove-ms-edge"></a>三方的工具 remove-ms-edge</h3><]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Edge/">Edge</category>
      <pubDate>Sun, 14 Dec 2025 04:53:02 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h3 id="三方的工具-remove-ms-edge"><a href="#三方的工具-remove-ms-edge" class="headerlink" title="三方的工具 remove-ms-edge"></a>三方的工具 remove-ms-edge</h3><p>GitHub 上开源的产品，可以放心食用。</p><ul><li>删除 Edge 可能会导致更新失败循环。</li></ul><h3 id="下载地址："><a href="#下载地址：" class="headerlink" title="下载地址："></a>下载地址：</h3><p><a href="https://github.com/ShadowWhisperer/Remove-MS-Edge/releases">Github</a></p>]]>
      </content:encoded>
    </item>
    <item>
      <title>全平台网络代理客户端推荐与挑选指南</title>
      <link>https://www.blog.nxyz.org/posts/18027459/</link>
      <description>
        <![CDATA[<h2 id="🌐-主流网络代理客户端汇总"><a href="#🌐-主流网络代理客户端汇总" class="headerlink" title="🌐 主流网络代理客户端汇总"></a>🌐 主流网络代理客户端汇总</h2><table>
<thead>
<tr>
<th]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/VPN/">VPN</category>
      <category domain="https://www.blog.nxyz.org/tags/%E4%BB%A3%E7%90%86/">代理</category>
      <category domain="https://www.blog.nxyz.org/tags/Clash/">Clash</category>
      <category domain="https://www.blog.nxyz.org/tags/V2ray/">V2ray</category>
      <category domain="https://www.blog.nxyz.org/tags/Karing/">Karing</category>
      <category domain="https://www.blog.nxyz.org/tags/Surfboard/">Surfboard</category>
      <category domain="https://www.blog.nxyz.org/tags/Hiddify/">Hiddify</category>
      <pubDate>Wed, 10 Dec 2025 01:18:45 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="🌐-主流网络代理客户端汇总"><a href="#🌐-主流网络代理客户端汇总" class="headerlink" title="🌐 主流网络代理客户端汇总"></a>🌐 主流网络代理客户端汇总</h2><table><thead><tr><th align="left">客户端</th><th align="left">支持平台</th><th align="left">核心特性 &#x2F; 简介</th></tr></thead><tbody><tr><td align="left"><a href="https://github.com/KaringX/clashmi/releases"><strong>Clash Mi</strong></a></td><td align="left">Win &#x2F; And &#x2F; iOS</td><td align="left">基于 Mihomo (Clash Meta) 内核的多端工具。</td></tr><tr><td align="left"><a href="https://github.com/KaringX/karing/releases"><strong>Karing</strong></a></td><td align="left">全平台</td><td align="left">兼容 Clash&#x2F;sing-box&#x2F;v2ray 等多协议。</td></tr><tr><td align="left"><a href="https://github.com/2dust/v2rayN/releases"><strong>v2rayN</strong></a></td><td align="left">Win &#x2F; Mac &#x2F; Lin</td><td align="left">经典桌面端，支持 Xray 及 sing-box 核心。</td></tr><tr><td align="left"><a href="https://github.com/2dust/v2rayNG/releases"><strong>v2rayNG</strong></a></td><td align="left">Android</td><td align="left">稳定老牌的安卓端，支持 Xray 与 v2fly。</td></tr><tr><td align="left"><a href="https://apkpure.com/surfboard/com.getsurfboard"><strong>Surfboard</strong></a></td><td align="left">Android</td><td align="left">专为安卓打造，完美兼容 Surge 配置规则。</td></tr><tr><td align="left"><a href="https://github.com/hiddify/hiddify-app/releases"><strong>Hiddify</strong></a></td><td align="left">全平台</td><td align="left">极简易用，智能测速选路，适合小白。</td></tr></tbody></table><hr><h2 id="💡-客户端挑选建议"><a href="#💡-客户端挑选建议" class="headerlink" title="💡 客户端挑选建议"></a>💡 客户端挑选建议</h2><p>面对众多代理工具，如果您不知道该如何选择，可以参考以下针对不同用户群体的匹配建议：</p><h3 id="1-纯新手-“一键连”用户"><a href="#1-纯新手-“一键连”用户" class="headerlink" title="1. 纯新手 &#x2F; “一键连”用户"></a>1. 纯新手 &#x2F; “一键连”用户</h3><p>如果您不想折腾复杂的路由规则、分流配置，只希望导入订阅后就能稳定上网，推荐以下两款：</p><ul><li><strong>Hiddify</strong>：真正的“开箱即用”。它的 UI 设计非常现代化且直观，几乎没有学习成本，自动测速并选择最优节点，全平台支持，是目前极度推荐的无脑代理工具。</li><li><strong>Karing</strong>：同样主打多平台与现代化的界面，对各类订阅格式兼容极好，不需要您去转换订阅链接，粘贴即可使用。</li></ul><h3 id="2-Windows-桌面端进阶用户"><a href="#2-Windows-桌面端进阶用户" class="headerlink" title="2. Windows 桌面端进阶用户"></a>2. Windows 桌面端进阶用户</h3><p>如果您是 Windows 老玩家，需要深度自定义节点、手动配置复杂的 JSON、或者对各个代理内核有切换需求：</p><ul><li><strong>v2rayN</strong>：Windows 平台当之无愧的常青树。虽然界面传统，但功能极其硬核，支持 Xray、sing-box 等几乎所有主流内核。排错方便，日志清晰，适合喜欢掌控全局的折腾党。</li></ul><h3 id="3-Android-移动端重度用户"><a href="#3-Android-移动端重度用户" class="headerlink" title="3. Android 移动端重度用户"></a>3. Android 移动端重度用户</h3><p>安卓端生态百花齐放，根据您的具体需求选择：</p><ul><li><strong>v2rayNG</strong>：如果您的诉求是“绝对的稳定省电”且不需要太复杂的分流，选它准没错。作为老牌工具，兼容性和稳定性经过了时间检验。</li><li><strong>Surfboard</strong>：如果您不仅需要翻墙，还需要去广告、特定应用走特定节点（高级分流），并且习惯使用 Surge 格式的规则，那 Surfboard 是安卓端的最佳选择，功能极其强大。</li></ul><h3 id="4-追求多端一致性体验的用户"><a href="#4-追求多端一致性体验的用户" class="headerlink" title="4. 追求多端一致性体验的用户"></a>4. 追求多端一致性体验的用户</h3><p>如果您同时使用电脑、手机、平板，希望在所有设备上拥有相同的操作逻辑：</p><ul><li><strong>Clash Mi</strong>：基于目前极为强大的 Mihomo (Clash Meta) 内核。如果您以前是 Clash for Windows 或者是 Clash 核心的忠实用户，这款工具能让您在全平台无缝衔接。</li><li><strong>Karing &#x2F; Hiddify</strong>：这两者也是全平台覆盖的优秀代表，跨设备体验非常一致。</li></ul><blockquote><p><strong>总结</strong>：<br>不想折腾选 <strong>Hiddify</strong>，Windows 老手选 <strong>v2rayN</strong>，安卓分流折腾党选 <strong>Surfboard</strong>，需要多端一致或喜欢 Clash 生态选 <strong>Clash Mi</strong> &#x2F; <strong>Karing</strong>。</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>Instagram强制修改Facebook邮箱验证</title>
      <link>https://www.blog.nxyz.org/posts/b0240231/</link>
      <description>
        <![CDATA[<h2 id="登陆账户"><a href="#登陆账户" class="headerlink" title="登陆账户"></a>登陆账户</h2><p><img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMSaTD]]>
      </description>
      <author>Otto</author>
      <category domain="https://www.blog.nxyz.org/categories/%E6%95%99%E7%A8%8B/">教程</category>
      <category domain="https://www.blog.nxyz.org/tags/Facebook/">Facebook</category>
      <category domain="https://www.blog.nxyz.org/tags/Instagram/">Instagram</category>
      <pubDate>Thu, 04 Dec 2025 03:22:29 GMT</pubDate>
      <content:encoded>
        <![CDATA[<h2 id="登陆账户"><a href="#登陆账户" class="headerlink" title="登陆账户"></a>登陆账户</h2><p><img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMSaTD_oS1Qq8UkqXoAAYLPM_zIoI_TAAJiDWsbd3WISYuEYJRjac2vAQADAgADeQADNgQ.png" alt="Facebook登陆界面" title="Facebook登陆界面">把要改的账号登录上去后会显示<img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMTaTEAAXiCFkWUEfkAAcAoNE7gQOCbcQACZQ1rG3d1iEl_goNCLljjdwEAAwIAA3kAAzYE.png" alt="验证界面" title="验证界面"></p><h2 id="打开Instagram官网"><a href="#打开Instagram官网" class="headerlink" title="打开Instagram官网"></a>打开Instagram官网</h2><p><a href="https://www.instagram.com/">Instagram</a><img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMUaTEBFuxXT0tL2YS2po-EFS1UDU4AAmcNaxt3dYhJYC9ny53N_84BAAMCAAN5AAM2BA.png" alt="Instagram登录界面" title="Instagram登录界面">可以点<code>使用Facebook登录</code>按钮<br>如果没有这个按钮就点击<a href="https://www.facebook.com/oidc/?app_id=124024574287414&redirect_uri=https://www.instagram.com/accounts/signupviafb/&response_type=code&scope=openid%20email%20profile%20linking&state=ATm4gno4hTqja_wl9E0iiMkNJk7JJ_FIy0rmaoiaegEtH0xunujiNERK0st9jMO1lS054UtTXwkG5TsikMZ6AwkuJelwCx2rS_imNKXMM15ICH82xjKth4kmXr-ovzoloyrlCK9UZeCR_7fcPcG4tOHSdjnl_rPlUygKnOaydl3o66x5s2pwuWEc52hH8kzWBCxa3pUUuS-4GRed-IkRBxDTxI3pVsymrhoaURBgseSSKCDcmkmtj8OvaUKrKYgRLhCT"><em>用Facebook登录Instagram</em></a>打开<img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMVaTEDIi3Td3hkHyr9iKZSUBpLj1oAAmoNaxt3dYhJjir55V-oXOIBAAMCAAN5AAM2BA.png" alt="Facebook登录Instagram"><img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMWaTEDti2OSLW3V0Wb8FwZXKb_HyEAAmsNaxt3dYhJVtI6ecPgDFUBAAMCAAN5AAM2BA.png" alt="Facebook登录Instagram"><img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMXaTED1lO6VXp8A-qhXtojW7fZCDEAAmwNaxt3dYhJD2QTdT-r-ycBAAMCAAN5AAM2BA.png" alt="Facebook登录Instagram"><img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMYaTEEAzYV0gyKKhl_YH6dSdbuvqAAAm0Naxt3dYhJrPA64dH4jykBAAMCAAN5AAM2BA.png" alt="Facebook登录Instagram">然后注册完成，回去刷新下，应该就可以了。<img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMZaTEET9oBMbH-UY_3XqT7g324kHAAAm8Naxt3dYhJuqyCUleWc5IBAAMCAAN5AAM2BA.png" alt="Facebook登录Instagram">如果提示失败也没关系，回去Facebook看看。<img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMaaTEEmxvWbI5Sz3FJ9n07mh8wpHwAAnANaxt3dYhJ6d3ViEvGZssBAAMCAAN5AAM2BA.png" alt="Facebook登录Instagram">这个时候在点一下修改密码检查，大概率是修复正常了。<img src="https://tc.nxyz.org/file/AgACAgIAAyEGAAStrJdqAAMbaTEE2oPlmIMrs-rQkdloUm4E6YoAAnENaxt3dYhJlAuh5qrM7z0BAAMCAAN5AAM2BA.png" alt="Facebook登录Instagram"></p>]]>
      </content:encoded>
    </item>
  </channel>
</rss>
