<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Leehow的小站</title><link>https://www.haoyep.com/</link><description>Leehow的博客，记录个人学习过程。好耶！</description><generator>Hugo 0.139.4 &amp; FixIt v0.3.16</generator><language>zh-CN</language><managingEditor>chuxuange@gmail.com (Leehow)</managingEditor><webMaster>chuxuange@gmail.com (Leehow)</webMaster><copyright>本站内容采用 CC BY-NC-SA 4.0 国际许可协议。</copyright><lastBuildDate>Sun, 12 Jan 2025 07:03:48 +0000</lastBuildDate><atom:link href="https://www.haoyep.com/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 vercel 加速 Github 图床</title><link>https://www.haoyep.com/posts/github-graph-beds-vercel-cdn/</link><pubDate>Sun, 27 Oct 2024 23:48:46 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/github-graph-beds-vercel-cdn/</guid><category domain="https://www.haoyep.com/categories/blog/">blog</category><category domain="https://www.haoyep.com/categories/markdown/">markdown</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410280001769.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>考虑到 Chinajsdelivr 的审查限制，本文改用 vercel 加速 GitHub 图床访问，并通过仓库结构调整和 GitHub Action，兼容国内外分流加速策略，自动化完成分支同步。&lt;/p>
&lt;p>之前的文章介绍了如何搭建图床和使用jsDelivr 加速图床图片访问。
&lt;a href="https://haoyep.com/posts/github-graph-beds/" title="使用PicGo &amp;#43; GitHub 搭建 Obsidian 图床"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">使用PicGo + GitHub 搭建 Obsidian 图床&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://haoyep.com/posts/github-graph-beds/&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a>&lt;/p>
&lt;a href="https://www.haoyep.com/posts/github-graph-beds-cdn/" title="通过 Cloudflare 和 JsDelivr 免费加速博客 GitHub 图床等静态资源"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">通过 Cloudflare 和 JsDelivr 免费加速博客 GitHub 图床等静态资源&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://www.haoyep.com/posts/github-graph-beds-cdn/&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a>
&lt;p>&lt;a href="https://github.com/54ayao/Chinajsdelivr"target="_blank" rel="external nofollow noopener noreferrer">Chinajsdelivr&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 项目的加速效果不错，但由于成本等因素，加速的图片偶发不可访问。且加速的图片要能经过国内审查，如果图床内有违规图片（如魔法上网等），整个 Github 仓库都会被 &lt;a href="https://github.com/54ayao/Chinajsdelivr"target="_blank" rel="external nofollow noopener noreferrer">Chinajsdelivr&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> ban 掉。我本人的图床仓库就在使用了约1个月的时间后被 ban 掉了。虽说可以向开发者写邮件申述，但我懒得整理、清理违规图片，而且这种命运掌握在别人手中的感觉不太好。&lt;/p>
&lt;p>&lt;a href="https://vercel.com/"target="_blank" rel="external nofollow noopener noreferrer">vercel&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 可以将 Github 仓库当做静态网站展示，仓库内的文件也会被当做网站的一部分，通过 vercel 的 CDN 进行加速。vercel 对每个账号的免费流量限制是 100GB/月。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272120356.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272120356.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>vercel流量限制&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272120356.png" alt="vercel流量限制" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272120356.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272120356.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272120356.png?size=large 2x" data-title="vercel流量限制" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">vercel流量限制&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>本人图床主要用于 Markdown 笔记和个人博客，基本没啥访问量，因此免费额度够用；且对加载速度要求不高，所以可以忍受 vercel CDN 的速度（总比直接访问 Github 仓库快）。&lt;/p>
&lt;p>解决方案主要分为两方面：&lt;/p>
&lt;ul>
&lt;li>将图床仓库改造，让 vercel 将其识别为静态网站资源目录。&lt;/li>
&lt;li>兼容之前设计的国内外图床加速策略，国内访问走 vercel，国外走 jsdelivr&lt;/li>
&lt;/ul>
&lt;h2 id="图床仓库改造" class="heading-element">&lt;span>1 图床仓库改造&lt;/span>
 &lt;a href="#%e5%9b%be%e5%ba%8a%e4%bb%93%e5%ba%93%e6%94%b9%e9%80%a0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>让 vercel 将仓库识别为静态网站的方法很简单，只需仓库根目录中存在&lt;code>index.html&lt;/code>文件。你可以自定义一个简单的 html 文件，或者让 AI 帮你写一个。&lt;/p>
&lt;p>例如，下面是一个用于展示当前时间的 html 代码。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&amp;lt;!DOCTYPE html&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">html&lt;/span> &lt;span class="na">lang&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;en&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">head&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">meta&lt;/span> &lt;span class="na">charset&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;UTF-8&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">meta&lt;/span> &lt;span class="na">name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;viewport&amp;#34;&lt;/span> &lt;span class="na">content&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>实时时钟&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">style&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">body&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">display&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">flex&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">justify-content&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">center&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">align-items&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">center&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">vh&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">margin&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">font-family&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Arial&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kc">sans-serif&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">background-color&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#f5f5f5&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">#&lt;/span>&lt;span class="nn">clock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">font-size&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">48&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c">/* 增大字体大小 */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">font-weight&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">bold&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">color&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mh">#333&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">style&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">function&lt;/span> &lt;span class="nx">updateTime&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">now&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nb">Date&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="c1">// 获取当前时间
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kd">var&lt;/span> &lt;span class="nx">hours&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">now&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getHours&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="c1">// 小时
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kd">var&lt;/span> &lt;span class="nx">minutes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">now&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getMinutes&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="c1">// 分钟
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kd">var&lt;/span> &lt;span class="nx">seconds&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">now&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getSeconds&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="c1">// 秒数
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kd">var&lt;/span> &lt;span class="nx">formattedTime&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">hours&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s1">&amp;#39;:&amp;#39;&lt;/span> &lt;span class="o">+&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nx">minutes&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="mi">10&lt;/span> &lt;span class="o">?&lt;/span> &lt;span class="s1">&amp;#39;0&amp;#39;&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">minutes&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s1">&amp;#39;:&amp;#39;&lt;/span> &lt;span class="o">+&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nx">seconds&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="mi">10&lt;/span> &lt;span class="o">?&lt;/span> &lt;span class="s1">&amp;#39;0&amp;#39;&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">seconds&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getElementById&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;clock&amp;#39;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="nx">textContent&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">formattedTime&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">setInterval&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">updateTime&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1000&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// 每1000毫秒（1秒）更新时间
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">head&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">body&lt;/span> &lt;span class="na">onload&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;updateTime()&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;clock&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="c">&amp;lt;!-- 时间显示的位置 --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">body&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">html&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>将上述代码复制并保存到 &lt;code>index.html&lt;/code> 文件中，再将 &lt;code>index.html&lt;/code> 文件上传到图床仓库根目录中。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272143973.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272143973.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>将 index.html 文件上传到图床仓库根目录中&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272143973.png" alt="将 index.html 文件上传到图床仓库根目录中" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272143973.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272143973.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272143973.png?size=large 2x" data-title="将 index.html 文件上传到图床仓库根目录中" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">将 index.html 文件上传到图床仓库根目录中&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>假设使用图床仓库搭建的静态网站域名为 &lt;code>img.haoyep.com&lt;/code>，图床仓库存在文件 &lt;code>cdnimg/test.png&lt;/code> 图片，则可以使用链接 &lt;code>https://img.haoyep.com/cdnimg/test.png&lt;/code> 来访问该图片。&lt;/p>
&lt;h2 id="兼容国内外加速策略" class="heading-element">&lt;span>2 兼容国内外加速策略&lt;/span>
 &lt;a href="#%e5%85%bc%e5%ae%b9%e5%9b%bd%e5%86%85%e5%a4%96%e5%8a%a0%e9%80%9f%e7%ad%96%e7%95%a5" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>使用&lt;a href="https://www.haoyep.com/posts/github-graph-beds-cdn/"target="_blank" rel="external nofollow noopener noreferrer">图床加速&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 文章中设计的国内外分流加速策略，国内访问 &lt;code>cdn.haoyep.com&lt;/code> 会被重定向到 &lt;code>jsd.cdn.zzko.cn&lt;/code>，国外访问被重定向到 &lt;code>cdn.jsdelivr.net&lt;/code>。二者访问的 url 路径相同，仅是域名不同。&lt;/p>
&lt;p>因此假设使用图床仓库搭建的静态网站域名为 &lt;code>img.haoyep.com&lt;/code>，则期待实现的效果应当为：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"># Github 图床图片对外展示链接
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/md_img.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># cn请求将访问到
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://img.haoyep.com/gh/leegical/Blog_img/cdnimg/md_img.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># 国外请求将访问到
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://cdn.jsdelivr.net/gh/leegical/Blog_img/cdnimg/md_img.png&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>但 vercel 静态网站的 url 路径就是仓库文件的实际路径。假设仓库&lt;code>cdnimg&lt;/code>文件夹中有一个&lt;code>a.png&lt;/code>文件，vercel和 jsdelivr 的访问链接分别为：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"># vercel 的访问链接
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://img.haoyep.com/cdnimg/md_img.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># jsdelivr 的访问链接
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://cdn.jsdelivr.net/gh/leegical/Blog_img/cdnimg/a.png&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>可以看到，由于 jsdelivr 的加速机制，它与 vercel 链接中的路径并不一致，多出了&lt;code>gh/用户名/仓库名&lt;/code>。因此，需要调整仓库结构以兼容：&lt;/p>
&lt;ul>
&lt;li>只需替换域名就能实现国内外分流&lt;/li>
&lt;li>让 vercel 使用 jsdelivr 格式的路径访问到文件&lt;/li>
&lt;/ul>
&lt;h3 id="仓库目录结构调整" class="heading-element">&lt;span>2.1 仓库目录结构调整&lt;/span>
 &lt;a href="#%e4%bb%93%e5%ba%93%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84%e8%b0%83%e6%95%b4" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>实现思路为：&lt;/p>
&lt;ul>
&lt;li>为图床仓库新建一个分支，假设新分支名为 &lt;code>vercelcdn&lt;/code>&lt;/li>
&lt;li>在新分支中，新建文件夹 &lt;code>gh/用户名/仓库名&lt;/code>&lt;/li>
&lt;li>将原图床中的所有文件拷贝到文件夹 &lt;code>gh/用户名/仓库名&lt;/code> 中&lt;/li>
&lt;/ul>
&lt;p>clone 图床仓库到本地，进入图床仓库文件夹，执行以下命令。&lt;/p>
&lt;div class="alert alert-note">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M0 8a8 8 0 1116 0A8 8 0 010 8zm8-6.5a6.5 6.5.0 100 13 6.5 6.5.0 000-13zM6.5 7.75A.75.75.0 017.25 7h1a.75.75.0 01.75.75v2.75h.25a.75.75.0 010 1.5h-2a.75.75.0 010-1.5h.25v-2h-.25a.75.75.0 01-.75-.75zM8 6a1 1 0 110-2 1 1 0 010 2z"/>&lt;/svg>注意&lt;/p>&lt;p>记得将命令中的 &lt;strong>用户名&lt;/strong> 和 &lt;strong>仓库名&lt;/strong> 替换成你自己的。&lt;/p>
&lt;/div>&lt;ul>
&lt;li>创建新分支。&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 创建新分支&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git checkout -b vercelcdn
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 删除全部文件&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm -rf ./*&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>添加 &lt;code>index.html&lt;/code>。在当前目录中新建文件，并粘贴代码。&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"># 新建 index.html文件
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">touch index.html
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># 使用 nano/vim/vs code 编辑文件并粘贴代码&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>添加 vercel 缓存配置文件 &lt;code>touch vercel.json&lt;/code>。复制下面的代码到 &lt;code>vercel.json&lt;/code> 文件中并保存。&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;headers&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/sw.js&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;headers&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;key&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Cache-Control&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;value&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;public, max-age=0, must-revalidate&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/(.*).(jpe?g|png|ico|webp|svg|mp4|gif|xml|ttf|otf|woff2?)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;headers&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;key&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Cache-Control&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;value&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;public, max-age=31536000, immutable&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;(.*)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;headers&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;key&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Cache-Control&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;value&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;public, s-maxage=86400, max-age=86400&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;key&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;CDN-Cache-Control&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;value&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;max-age=86400&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;key&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Vercel-CDN-Cache-Control&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;value&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;max-age=86400&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>恢复图床图片到指定路径，推送。&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 克隆图床仓库到新分支的新文件夹&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone https://github.com/用户名/仓库名.git gh/用户名/仓库名
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 删除多余的 .git 文件夹&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm -rf ./gh/用户名/仓库名/.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 保存并提交到 Github 远程分支&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git add .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -m &lt;span class="s2">&amp;#34;初始化vercel分支内容&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push --set-upstream origin/vercelcdn&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="部署到-vercel" class="heading-element">&lt;span>2.2 部署到 vercel&lt;/span>
 &lt;a href="#%e9%83%a8%e7%bd%b2%e5%88%b0-vercel" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>打开 &lt;a href="https://vercel.com/"target="_blank" rel="external nofollow noopener noreferrer">vercel&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，使用图床仓库的 Github 账号登录。&lt;/p>
&lt;ul>
&lt;li>
&lt;p>新建项目，选择图床仓库，点击 &lt;strong>Import&lt;/strong>

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240591.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240591.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>使用图床仓库新建vercel项目&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240591.png" alt="使用图床仓库新建vercel项目" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240591.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240591.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240591.png?size=large 2x" data-title="使用图床仓库新建vercel项目" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">使用图床仓库新建vercel项目&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>随便改个项目名，其他不用动，点击 &lt;strong>Deploy&lt;/strong> 部署

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240988.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240988.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>部署图床项目到vercel&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240988.png" alt="部署图床项目到vercel" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240988.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240988.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272240988.png?size=large 2x" data-title="部署图床项目到vercel" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">部署图床项目到vercel&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>部署成功后，点击项目——设置——Git。将分支更改为上一步新建的分支名 &lt;strong>vercelcdn&lt;/strong>。这里没有保存按钮，用鼠标随便点一下其他地方就行

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272243157.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272243157.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>更改分支&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272243157.png" alt="更改分支" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272243157.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272243157.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272243157.png?size=large 2x" data-title="更改分支" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">更改分支&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>项目——设置——Functions。将地域改成香港（Hong Kong）

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272247949.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272247949.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>更改地域为香港&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272247949.png" alt="更改地域为香港" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272247949.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272247949.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272247949.png?size=large 2x" data-title="更改地域为香港" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">更改地域为香港&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="设置自定义域名" class="heading-element">&lt;span>2.3 设置自定义域名&lt;/span>
 &lt;a href="#%e8%ae%be%e7%bd%ae%e8%87%aa%e5%ae%9a%e4%b9%89%e5%9f%9f%e5%90%8d" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>部署成功后，vercel 会自动为你的项目分配 &lt;code>xxx.vercel.app&lt;/code> 域名。但这类域名已经被墙，无法用于图床图片链接。因此，你需要为项目设置一个自定义域名。&lt;/p>
&lt;p>使用 &lt;a href="https://vercel.cdn.yt-blog.top/"target="_blank" rel="external nofollow noopener noreferrer">Vercel CDN:利用 CNAME 负载均衡实现的 Vercel 加速 CDN&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 可以加速 vercel 访问。&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="https://www.yt-blog.top/9952/"target="_blank" rel="external nofollow noopener noreferrer">&lt;strong>加速原理&lt;/strong>&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/p>
&lt;p>Vercel 在大陆周围还有很多节点，其中包含中国台湾、韩国、日本、新加坡等，这些节点的访问延迟在接受范围，且相对香港节点来说带宽更充足。&lt;/p>
&lt;p>Vercel 的 Anycast 会自动将节点解析至距离最近的香港服务器，但如果手动解析则太过麻烦。&lt;/p>
&lt;p>vercel.cdn.yt-blog.top 经过不断测速（大约消耗了200MB 流量）手动解析，并通过监控检查状态，无法访问时会及时暂停节点。使用时自动解析至附近可用节点，尽可能的选择优质节点。&lt;/p>
&lt;/blockquote>
&lt;p>登录 &lt;a href="https://dash.cloudflare.com/login?lang=zh-cn"target="_blank" rel="external nofollow noopener noreferrer">Cloudflare&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>。假设自定义域名为 &lt;code>img.haoyep.com&lt;/code>，添加一条 CNAME 解析记录：&lt;/p>
&lt;ul>
&lt;li>名称：img&lt;/li>
&lt;li>目标：vercel.cdn.yt-blog.top&lt;/li>
&lt;li>代理状态：仅 DNS

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272304342.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272304342.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>添加vercel图床加速域名&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272304342.png" alt="添加vercel图床加速域名" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272304342.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272304342.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272304342.png?size=large 2x" data-title="添加vercel图床加速域名" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">添加vercel图床加速域名&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ul>
&lt;p>规则——重定向规则，将国内的重定向域名改为 &lt;code>img.haoyep.com&lt;/code>。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272314630.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272314630.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>更改重定向规则&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272314630.png" alt="更改重定向规则" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272314630.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272314630.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272314630.png?size=large 2x" data-title="更改重定向规则" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">更改重定向规则&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>回到 vercel，项目——设置——Domains。添加自定义域名 &lt;code>img.haoyep.com&lt;/code>。稍等片刻，等待 vercel 验证通过。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272307325.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272307325.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>vercel添加自定义域名&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272307325.png" alt="vercel添加自定义域名" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272307325.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272307325.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272307325.png?size=large 2x" data-title="vercel添加自定义域名" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">vercel添加自定义域名&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>Project——右下角三个点——Redeploy。重新部署一下项目。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272316802.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272316802.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>重新部署项目&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272316802.png" alt="重新部署项目" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272316802.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272316802.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202410272316802.png?size=large 2x" data-title="重新部署项目" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">重新部署项目&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="自动化同步分支" class="heading-element">&lt;span>3 自动化同步分支&lt;/span>
 &lt;a href="#%e8%87%aa%e5%8a%a8%e5%8c%96%e5%90%8c%e6%ad%a5%e5%88%86%e6%94%af" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>完成上面的设置后，就会自动将国内访问重定向到 vercel 图床项目中。但是如何做到每次上传新图片后，&lt;strong>vercelcdn&lt;/strong> 分支都能自动同步呢？每次手动删除、更新主分支图片实在麻烦，好在可以使用 Github Action 自动化完成操作。&lt;/p>
&lt;p>回到主分支，新建 &lt;code>.github/workflows/sync.yml&lt;/code> 文件。记得将下面的&lt;code>master&lt;/code>改为你自己的主分支名称。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">git checkout master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir -p .github/workflows
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> .github/workflows
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">touch sync.yml&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>复制下面的代码，粘贴并保存到 &lt;code>sync.yml&lt;/code> 文件。&lt;/p>
&lt;div class="alert alert-note">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M0 8a8 8 0 1116 0A8 8 0 010 8zm8-6.5a6.5 6.5.0 100 13 6.5 6.5.0 000-13zM6.5 7.75A.75.75.0 017.25 7h1a.75.75.0 01.75.75v2.75h.25a.75.75.0 010 1.5h-2a.75.75.0 010-1.5h.25v-2h-.25a.75.75.0 01-.75-.75zM8 6a1 1 0 110-2 1 1 0 010 2z"/>&lt;/svg>注意&lt;/p>&lt;p>记得替换 28-34 行中的邮箱、用户名、仓库名。&lt;/p>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yml" data-lang="yml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">sync&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">push&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">branches&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">master &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Set a branch to deploy&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pull_request&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">branches&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">master &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Set a branch to deploy&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">workflow_dispatch&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">schedule&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Runs everyday at 0:00 AM&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">cron&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;0 0 * * *&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">jobs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">build&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runs-on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ubuntu-latest&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">permissions&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">write-all&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">steps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Check out repository code&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">actions/checkout@v4&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">fetch-depth&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Fetch all history for .GitInfo and .Lastmod&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">			&lt;/span>&lt;span class="c"># 记得替换下面的 邮箱、用户名、仓库名&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Sync vercelcdn&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> git config --global user.email &amp;#34;邮箱&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> git config --global user.name &amp;#34;用户名&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> git checkout vercelcdn
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> cd gh/用户名
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> rm -rf 仓库名
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> git clone https://github.com/用户名/仓库名.git
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> cd 仓库名
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> rm -rf .git&lt;/span>&lt;span class="w"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Commit changes&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">stefanzweifel/git-auto-commit-action@v5&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">branch&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">vercelcdn&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">commit_message: &amp;#39;:arrow_up&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">sync vercelcdn img with master&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">commit_author&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;github-actions[bot] &amp;lt;github-actions[bot]@users.noreply.github.com&amp;gt;&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">push_options&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;--set-upstream&amp;#39;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>以后，每次向 master 分支上传图片，GitHub Action 都会自动将其同步到 vercelcdn 分支。vercel 也会在检测分支有更新后，自动重新构建项目。&lt;/p>
&lt;h2 id="picgo" class="heading-element">&lt;span>4 PicGo&lt;/span>
 &lt;a href="#picgo" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>无需设置，按照之前设定好的自定义域名上传图片即可。&lt;/p>
&lt;p>不过建议转到 &lt;a href="https://piclist.cn/app"target="_blank" rel="external nofollow noopener noreferrer">Piclist&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，可以使用更多图片预处理功能，如添加水印、裁剪、转换为 webp 格式等。&lt;/p></description></item><item><title>利用 Cloudflare Pages 和 BPB 面板搭建免费VPN订阅节点</title><link>https://www.haoyep.com/posts/cf-bpb-vpn/</link><pubDate>Thu, 29 Aug 2024 01:32:43 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/cf-bpb-vpn/</guid><category domain="https://www.haoyep.com/categories/%E6%8A%80%E6%9C%AF/">技术</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290144107.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>无需域名，无需 SSL，通过 Cloudflare 和 BPB Panel，搭建一个永久免费且高速的免费 VPN。结合 Cloudflare 实现优选订阅、永久免费 vless 节点订阅，为使用（singbox-core 和 xray-core）的跨平台客户端提供配置。&lt;/p>
&lt;h2 id="前提" class="heading-element">&lt;span>1 前提&lt;/span>
 &lt;a href="#%e5%89%8d%e6%8f%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>有一个 Cloudflare 账号，以及一个域名。
登录 &lt;a href="https://dash.cloudflare.com/login?lang=zh-cn"target="_blank" rel="external nofollow noopener noreferrer">Cloudflare&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>。&lt;/p>
&lt;h2 id="创建-pages" class="heading-element">&lt;span>2 创建 Pages&lt;/span>
 &lt;a href="#%e5%88%9b%e5%bb%ba-pages" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="下载代码文件" class="heading-element">&lt;span>2.1 下载代码文件&lt;/span>
 &lt;a href="#%e4%b8%8b%e8%bd%bd%e4%bb%a3%e7%a0%81%e6%96%87%e4%bb%b6" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>从以下几个链接任选其一，下载最新的 &lt;code>worker.zip&lt;/code> 到本地。&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.zip"target="_blank" rel="external nofollow noopener noreferrer">Github Release&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.moeyy.xyz/https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.zip"target="_blank" rel="external nofollow noopener noreferrer">中国大陆加速1&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://gh.xmly.dev/https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.zip"target="_blank" rel="external nofollow noopener noreferrer">中国大陆加速2&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://gh.api.99988866.xyz/https://github.com/bia-pain-bache/BPB-Worker-Panel/releases/latest/download/worker.zip"target="_blank" rel="external nofollow noopener noreferrer">中国大陆加速3&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="上传并创建" class="heading-element">&lt;span>2.2 上传并创建&lt;/span>
 &lt;a href="#%e4%b8%8a%e4%bc%a0%e5%b9%b6%e5%88%9b%e5%bb%ba" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>点击左侧栏 &lt;strong>Compute (Workers)&lt;/strong> -&amp;gt; 【Workers 和 Pages】，点击&lt;strong>创建&lt;/strong>。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282337942.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282337942.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>创建 Pages&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282337942.png" alt="创建 Pages" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282337942.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282337942.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282337942.png?size=large 2x" data-title="创建 Pages" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">创建 Pages&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>点击 &lt;strong>Pages&lt;/strong> -&amp;gt; 【上传资产】。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290003015.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290003015.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>上传worker&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290003015.png" alt="上传worker" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290003015.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290003015.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290003015.png?size=large 2x" data-title="上传worker" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">上传worker&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;ul>
&lt;li>项目名称：随便取，但是不能包含 &lt;code>bpb&lt;/code>。&lt;/li>
&lt;li>上传压缩包：将第一步中下载的 &lt;code>worker.zip&lt;/code> 上传。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282356132.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282356132.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>上传worker&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282356132.png" alt="上传worker" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282356132.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282356132.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408282356132.png?size=large 2x" data-title="上传worker" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">上传worker&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ul>
&lt;p>稍等片刻，部署成功！

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290035625.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290035625.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>部署成功&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290035625.png" alt="部署成功" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290035625.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290035625.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290035625.png?size=large 2x" data-title="部署成功" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">部署成功&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="设置变量" class="heading-element">&lt;span>2.3 设置变量&lt;/span>
 &lt;a href="#%e8%ae%be%e7%bd%ae%e5%8f%98%e9%87%8f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>部署成功后，点击右下角 &lt;strong>继续处理项目&lt;/strong> 回到创建的 Pages 的界面。
点击 &lt;strong>设置&lt;/strong> -&amp;gt; 【变量和机密】，点击&lt;strong>添加&lt;/strong>。添加以下3个变量：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>UUID&lt;/strong>：直接安装的 BPB 面板默认使用同一个 UUID [89b3cbba-e6ac-485a-9481-976a0415eab9]，可能存在安全隐患。可以去&lt;a href="https://1024tools.com/uuid"target="_blank" rel="external nofollow noopener noreferrer">在线生成 UUID 1&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> | &lt;a href="https://www.lddgo.net/string/uuid"target="_blank" rel="external nofollow noopener noreferrer">在线生成 UUID 2&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 等网站随机生成一个新的 UUID。&lt;/li>
&lt;li>&lt;strong>PROXYIP&lt;/strong>：去这里&lt;a href="https://www.nslookup.io/domains/cdn.xn--b6gac.eu.org/dns-records/"target="_blank" rel="external nofollow noopener noreferrer">随机选择一个代理 IP&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，或者你也可以直接把代理 IP 设置为 &lt;code>cdn-b100.xn--b6gac.eu.org&lt;/code> 或 &lt;code>bpb.yousef.isegaro.com&lt;/code>。&lt;/li>
&lt;li>&lt;strong>TR_PASS&lt;/strong>: 去&lt;a href="https://www.jyshare.com/front-end/9111/"target="_blank" rel="external nofollow noopener noreferrer">随机字符串生成器&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> | &lt;a href="http://tool.pfan.cn/random"target="_blank" rel="external nofollow noopener noreferrer">随机字符串生成&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 生成一串复杂字符串做为密码。&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290005720.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290005720.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>设置变量&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290005720.png" alt="设置变量" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290005720.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290005720.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290005720.png?size=large 2x" data-title="设置变量" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">设置变量&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="绑定-kv" class="heading-element">&lt;span>3 绑定 KV&lt;/span>
 &lt;a href="#%e7%bb%91%e5%ae%9a-kv" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="创建" class="heading-element">&lt;span>3.1 创建&lt;/span>
 &lt;a href="#%e5%88%9b%e5%bb%ba" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>点击左侧栏 &lt;strong>存储和数据库&lt;/strong> -&amp;gt; 【KV】，点击&lt;strong>创建&lt;/strong>。&lt;/p>
&lt;ul>
&lt;li>名称：随便取一个，但是不能包含 &lt;code>bpb&lt;/code>。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408210057058.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408210057058.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>创建kv&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408210057058.png" alt="创建kv" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408210057058.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408210057058.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408210057058.png?size=large 2x" data-title="创建kv" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">创建kv&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ul>
&lt;h3 id="绑定" class="heading-element">&lt;span>3.2 绑定&lt;/span>
 &lt;a href="#%e7%bb%91%e5%ae%9a" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>回到创建的 Pages 界面。点击 &lt;strong>设置&lt;/strong> -&amp;gt; 【绑定】，点击&lt;strong>添加&lt;/strong>，选择添加 KV 命名空间。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290013515.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290013515.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>添加KV&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290013515.png" alt="添加KV" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290013515.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290013515.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290013515.png?size=large 2x" data-title="添加KV" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">添加KV&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;ul>
&lt;li>变量名称：能且仅能填写 &lt;code>kv&lt;/code>&lt;/li>
&lt;li>KV 命名空间：选择&lt;a href="#%e5%88%9b%e5%bb%ba-kv">创建 KV&lt;/a> 中设置的命名空间&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290039054.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290039054.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>绑定kv&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290039054.png" alt="绑定kv" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290039054.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290039054.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290039054.png?size=large 2x" data-title="绑定kv" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">绑定kv&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="绑定域名可选" class="heading-element">&lt;span>4 绑定域名（可选）&lt;/span>
 &lt;a href="#%e7%bb%91%e5%ae%9a%e5%9f%9f%e5%90%8d%e5%8f%af%e9%80%89" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>Cloudflare 为 Pages 分配的 &lt;code>.pages.dev&lt;/code> 域名被墙了，无法直接访问。你可以为创建的 pages 设定一个自定义域名，从而访问它。&lt;/p>
&lt;p>点击&lt;strong>自定义域&lt;/strong>。假设你的域名是 &lt;code>example.com&lt;/code>，这里分配一个三级域名 &lt;code>shop.example.com&lt;/code> 给这个 page。这样，你就可以通过&lt;code>shop.example.com/panel&lt;/code> 来访问你的面板了！

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/20250112023744473.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/20250112023744473.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>设置自定义域名&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/20250112023744473.png" alt="设置自定义域名" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/20250112023744473.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/20250112023744473.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/20250112023744473.png?size=large 2x" data-title="设置自定义域名" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">设置自定义域名&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="重新部署" class="heading-element">&lt;span>5 重新部署&lt;/span>
 &lt;a href="#%e9%87%8d%e6%96%b0%e9%83%a8%e7%bd%b2" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>&lt;a href="#%e8%ae%be%e7%bd%ae%e5%8f%98%e9%87%8f">设置变量&lt;/a>、&lt;a href="#%e7%bb%91%e5%ae%9a">KV 空间绑定&lt;/a>后，点击右上角 &lt;strong>创建部署&lt;/strong>，再上传一次 &lt;code>worker.zip&lt;/code>，重新部署。&lt;/p>
&lt;div class="alert alert-note">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M0 8a8 8 0 1116 0A8 8 0 010 8zm8-6.5a6.5 6.5.0 100 13 6.5 6.5.0 000-13zM6.5 7.75A.75.75.0 017.25 7h1a.75.75.0 01.75.75v2.75h.25a.75.75.0 010 1.5h-2a.75.75.0 010-1.5h.25v-2h-.25a.75.75.0 01-.75-.75zM8 6a1 1 0 110-2 1 1 0 010 2z"/>&lt;/svg>注意&lt;/p>&lt;p>注意：在项目有任何改动后，都需要进行重新部署，否则改动不会生效。&lt;/p>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290046972.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290046972.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>重新部署&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290046972.png" alt="重新部署" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290046972.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290046972.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290046972.png?size=large 2x" data-title="重新部署" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">重新部署&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="bpb-面板" class="heading-element">&lt;span>6 BPB 面板&lt;/span>
 &lt;a href="#bpb-%e9%9d%a2%e6%9d%bf" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>访问项目网址： &lt;em>https://你的项目地址.pages.dev/panel&lt;/em>&lt;/p>
&lt;p>或者 &lt;em>https://自定义域名/panel&lt;/em> 。&lt;/p>
&lt;h3 id="修改密码" class="heading-element">&lt;span>6.1 修改密码&lt;/span>
 &lt;a href="#%e4%bf%ae%e6%94%b9%e5%af%86%e7%a0%81" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>第一次访问面板会提示你修改密码，建议修改成一个复杂密码，避免面板被盗用。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290050299.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290050299.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>修改密码&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290050299.png" alt="修改密码" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290050299.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290050299.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290050299.png?size=large 2x" data-title="修改密码" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">修改密码&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="面板配置" class="heading-element">&lt;span>6.2 面板配置&lt;/span>
 &lt;a href="#%e9%9d%a2%e6%9d%bf%e9%85%8d%e7%bd%ae" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>使用修改后的密码重新登录面板。&lt;/p>
&lt;ol>
&lt;li>&lt;strong>FakeDNS&lt;/strong>：可以设置为 enable，理论上会加快速度。但可能出现与浏览器 dns 缓存冲突等问题，导致无法正常上网。&lt;/li>
&lt;li>&lt;strong>Proxy IPs / Domains&lt;/strong>：填写&lt;code>cdn-b100.xn--b6gac.eu.org&lt;/code>或&lt;code>bpb.yousef.isegaro.com&lt;/code>&lt;/li>
&lt;li>&lt;strong>Clean IPs / Domains&lt;/strong>：前往 &lt;a href="https://scanner.github1.cloud/"target="_blank" rel="external nofollow noopener noreferrer">Scan Now&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 点击扫描 Clean IP。一般来说，Clean IP 的节点 RTT 会更短。&lt;/li>
&lt;/ol>
&lt;div class="alert alert-note">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M0 8a8 8 0 1116 0A8 8 0 010 8zm8-6.5a6.5 6.5.0 100 13 6.5 6.5.0 000-13zM6.5 7.75A.75.75.0 017.25 7h1a.75.75.0 01.75.75v2.75h.25a.75.75.0 010 1.5h-2a.75.75.0 010-1.5h.25v-2h-.25a.75.75.0 01-.75-.75zM8 6a1 1 0 110-2 1 1 0 010 2z"/>&lt;/svg>注意&lt;/p>&lt;p>为了扫描出与你实际网络通信时间最短的 IP，扫描时记得关闭代理。&lt;/p>
&lt;/div>&lt;p>点击 Start Scan，开始扫描。第一次扫描的 IP 数较少，你可以点击下方提示，扫描更多 IP。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290102440.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290102440.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>扫描Clean IP&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290102440.png" alt="扫描Clean IP" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290102440.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290102440.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290102440.png?size=large 2x" data-title="扫描Clean IP" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">扫描Clean IP&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>将扫描到的 Clean IP 填到 BPB 面板配置中。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290057503.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290057503.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>Scan Now&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290057503.png" alt="Scan Now" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290057503.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290057503.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290057503.png?size=large 2x" data-title="Scan Now" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">Scan Now&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;ol start="4">
&lt;li>
&lt;p>TLS 端口处勾选你想启用的端口，或者默认使用443端口。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290056538.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290056538.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>启用TLS端口&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290056538.png" alt="启用TLS端口" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290056538.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290056538.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290056538.png?size=large 2x" data-title="启用TLS端口" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">启用TLS端口&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>ROUTING RULES&lt;/strong>：配置一些路由规则。&lt;strong>Bypass xxx&lt;/strong>是指 xxx 不走代理（直连访问）；&lt;strong>Block xxx&lt;/strong>是指 xxx 被屏蔽访问（无法访问）。可以按需勾选。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Bypass LAN&lt;/strong>：绕过本地局域网&lt;/li>
&lt;li>&lt;strong>Block Ads&lt;/strong>：屏蔽广告网址&lt;/li>
&lt;li>&lt;strong>Bypass Iran&lt;/strong>：绕过伊朗&lt;/li>
&lt;li>&lt;strong>Block Porn&lt;/strong>：屏蔽颜色网站&lt;/li>
&lt;li>&lt;strong>Bypass China&lt;/strong>：绕过中国大陆&lt;/li>
&lt;li>&lt;strong>Block QUIC&lt;/strong>：屏蔽 QUIC 协议&lt;/li>
&lt;li>&lt;strong>Bypass Russia&lt;/strong>：绕过俄罗斯&lt;/li>
&lt;li>&lt;strong>CUSTOM RULES&lt;/strong>：除了上面预设的规则外，你可以在这里自定义一些需要直连（Bypass）和屏蔽（Block）的 IP 地址/网站。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290053192.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290053192.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>路由规则&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290053192.png" alt="路由规则" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290053192.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290053192.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290053192.png?size=large 2x" data-title="路由规则" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">路由规则&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>最后，点击 &lt;strong>APPLY SETTINGS&lt;/strong>，应用设置。&lt;/p>
&lt;h3 id="导入节点" class="heading-element">&lt;span>6.3 导入节点&lt;/span>
 &lt;a href="#%e5%af%bc%e5%85%a5%e8%8a%82%e7%82%b9" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>根据你所使用的代理应用，点击 【NORMAL SUB】或【FULL NORMAL SUB】对应的 &lt;strong>COPY SUB&lt;/strong> 按钮，复制 BPB 面板生成的订阅链接。&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290110707.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290110707.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>复制订阅链接&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290110707.png" alt="复制订阅链接" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290110707.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290110707.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290110707.png?size=large 2x" data-title="复制订阅链接" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">复制订阅链接&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h4 id="pc-v2rayn" class="heading-element">&lt;span>6.3.1 PC-V2rayN&lt;/span>
 &lt;a href="#pc-v2rayn" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;h5 id="导入" class="heading-element">&lt;span>6.3.1.1 导入&lt;/span>
 &lt;a href="#%e5%af%bc%e5%85%a5" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h5>&lt;p>打开 V2rayN，【订阅分组】-&amp;gt;【订阅分组设置】-&amp;gt;【添加】&lt;/p>
&lt;ul>
&lt;li>别名：随机写一个&lt;/li>
&lt;li>可选地址：输入 BPB 面板导出的订阅链接

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290114711.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290114711.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>V2rayN导入订阅链接&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290114711.png" alt="V2rayN导入订阅链接" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290114711.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290114711.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290114711.png?size=large 2x" data-title="V2rayN导入订阅链接" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">V2rayN导入订阅链接&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ul>
&lt;h5 id="更新获取节点" class="heading-element">&lt;span>6.3.1.2 更新/获取节点&lt;/span>
 &lt;a href="#%e6%9b%b4%e6%96%b0%e8%8e%b7%e5%8f%96%e8%8a%82%e7%82%b9" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h5>&lt;p>【订阅分组】-&amp;gt;【更新全部订阅(不通过代理)】，获取节点

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290117981.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290117981.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>获取节点&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290117981.png" alt="获取节点" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290117981.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290117981.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290117981.png?size=large 2x" data-title="获取节点" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">获取节点&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h4 id="安卓-v2rayng" class="heading-element">&lt;span>6.3.2 安卓-V2rayNG&lt;/span>
 &lt;a href="#%e5%ae%89%e5%8d%93-v2rayng" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;h5 id="导入-1" class="heading-element">&lt;span>6.3.2.1 导入&lt;/span>
 &lt;a href="#%e5%af%bc%e5%85%a5-1" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h5>&lt;p>【左上角三条横线】-&amp;gt;【订阅分组设置】-&amp;gt; 右上角&lt;code>+&lt;/code>

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290125388.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290125388.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>新建订阅分组&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290125388.png" alt="新建订阅分组" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290125388.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290125388.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290125388.png?size=large 2x" data-title="新建订阅分组" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">新建订阅分组&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;ul>
&lt;li>备注：随便写一个&lt;/li>
&lt;li>可选地址：输入 BPB 面板导出的订阅链接

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290127693.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290127693.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>添加订阅分组&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290127693.png" alt="添加订阅分组" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290127693.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290127693.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290127693.png?size=large 2x" data-title="添加订阅分组" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">添加订阅分组&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ul>
&lt;h5 id="更新获取节点-1" class="heading-element">&lt;span>6.3.2.2 更新/获取节点&lt;/span>
 &lt;a href="#%e6%9b%b4%e6%96%b0%e8%8e%b7%e5%8f%96%e8%8a%82%e7%82%b9-1" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h5>&lt;p>首页右上角三个点 -&amp;gt; 更新订阅

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290131358.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290131358.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>更新订阅&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290131358.png" alt="更新订阅" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290131358.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290131358.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290131358.png?size=large 2x" data-title="更新订阅" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">更新订阅&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="修改密码-1" class="heading-element">&lt;span>6.4 修改密码&lt;/span>
 &lt;a href="#%e4%bf%ae%e6%94%b9%e5%af%86%e7%a0%81-1" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>如果你觉得原来设置的密码太简单，也可以重新修改密码。
登录你的 BPB 面板，到页面最底端，点击 &lt;strong>Change Password&lt;/strong> 来修改密码。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290120104.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290120104.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>修改密码&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290120104.png" alt="修改密码" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290120104.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290120104.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202408290120104.png?size=large 2x" data-title="修改密码" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">修改密码&lt;/figcaption>
 &lt;/figure>&lt;/p></description></item><item><title>通过Cloudflare tunnel访问内网端口</title><link>https://www.haoyep.com/posts/access-intranet-ports-via-cloudflare-tunnel/</link><pubDate>Tue, 14 May 2024 15:00:08 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/access-intranet-ports-via-cloudflare-tunnel/</guid><category domain="https://www.haoyep.com/categories/%E6%8A%80%E6%9C%AF/">技术</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141503511.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>通过Cloudflare Tunnel内网穿透，访问内网主机端口。&lt;/p>
&lt;h2 id="tunnel-可以做什么" class="heading-element">&lt;span>1 Tunnel 可以做什么&lt;/span>
 &lt;a href="#tunnel-%e5%8f%af%e4%bb%a5%e5%81%9a%e4%bb%80%e4%b9%88" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>将本地网络的服务暴露到公网，可以理解为内网穿透。&lt;/strong> 例如我们在本地服务器 &lt;code>192.168.1.1:3000&lt;/code> 搭建了一个 Transmission 服务用于 BT 下载，我们只能在内网环境才能访问这个服务，但通过内网穿透技术，我们可以在任何广域网环境下访问该服务。相比 NPS 之类传统穿透服务，Tunnel 不需要公网云服务器，同时自带域名解析，无需 DDNS 和公网 IP。&lt;/li>
&lt;li>&lt;strong>将非常规端口服务转发到 80/443 常规端口。&lt;/strong> 无论是使用公网 IP + DDNS 还是传统内网穿透服务，都免不了使用非常规端口进行访问，如果某些服务使用了复杂的重定向可能会导致 URL 中端口号丢失而引起不可控的问题，同时也不够优雅。&lt;/li>
&lt;li>&lt;strong>自动为你的域名提供 HTTPS 认证。&lt;/strong>&lt;/li>
&lt;li>&lt;strong>为你的服务提供额外保护认证。&lt;/strong>&lt;/li>
&lt;li>&lt;strong>最重要的是——免费。&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h2 id="tunnel-工作原理" class="heading-element">&lt;span>2 Tunnel 工作原理&lt;/span>
 &lt;a href="#tunnel-%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>Tunnel 通过在本地网络运行的一个 Cloudflare 守护程序，与 Cloudflare 云端通信，将云端请求数据转发到本地网络的 IP + 端口。&lt;/p>
&lt;h2 id="前置条件" class="heading-element">&lt;span>3 前置条件&lt;/span>
 &lt;a href="#%e5%89%8d%e7%bd%ae%e6%9d%a1%e4%bb%b6" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;ul>
&lt;li>持有一个域名&lt;/li>
&lt;li>将域名 DNS 解析托管到 CF&lt;/li>
&lt;li>内网有一台本地服务器，用于运行本地与 cloudflare 通信的 cloudflared 程序&lt;/li>
&lt;li>一张境内双币信用卡（仅用于添加付款方式，服务是免费的）&lt;/li>
&lt;/ul>
&lt;h2 id="开始" class="heading-element">&lt;span>4 开始&lt;/span>
 &lt;a href="#%e5%bc%80%e5%a7%8b" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="创建-cloudflare-zero-trust" class="heading-element">&lt;span>4.1 创建 &lt;strong>Cloudflare Zero Trust&lt;/strong>&lt;/span>
 &lt;a href="#%e5%88%9b%e5%bb%ba-cloudflare-zero-trust" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;ol>
&lt;li>打开 &lt;a href="https://one.dash.cloudflare.com/"target="_blank" rel="external nofollow noopener noreferrer">Cloudflare Zero Trust&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 工作台面板。&lt;/li>
&lt;li>创建 &lt;strong>Cloudflare Zero Trust&lt;/strong> ，选择免费计划。需要提供付款方式，使用境内的双币卡即可。&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355958.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355958.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>随意填写一个team name&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355958.png" alt="随意填写一个team name" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355958.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355958.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355958.png?size=large 2x" data-title="随意填写一个team name" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">随意填写一个team name&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355959.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355959.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>选择Free计划&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355959.png" alt="选择Free计划" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355959.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355959.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355959.png?size=large 2x" data-title="选择Free计划" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">选择Free计划&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355960.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355960.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>添加付款方式&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355960.png" alt="添加付款方式" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355960.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355960.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355960.png?size=large 2x" data-title="添加付款方式" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">添加付款方式&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355961.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355961.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>填写信用卡信息（仅验证，不会扣款），完成配置&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355961.png" alt="填写信用卡信息（仅验证，不会扣款），完成配置" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355961.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355961.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122355961.png?size=large 2x" data-title="填写信用卡信息（仅验证，不会扣款），完成配置" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">填写信用卡信息（仅验证，不会扣款），完成配置&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="创建-tunnel" class="heading-element">&lt;span>4.2 创建 Tunnel&lt;/span>
 &lt;a href="#%e5%88%9b%e5%bb%ba-tunnel" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>点击 Access——Tunnels，创建一个 Tunnel。&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122351924.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122351924.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>创建一个 Tunnel&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122351924.png" alt="创建一个 Tunnel" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122351924.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122351924.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401122351924.png?size=large 2x" data-title="创建一个 Tunnel" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">创建一个 Tunnel&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>为创建的 tunnel 取一个名字。&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130000169.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130000169.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>为tunnel取一个名字&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130000169.png" alt="为tunnel取一个名字" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130000169.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130000169.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130000169.png?size=large 2x" data-title="为tunnel取一个名字" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">为tunnel取一个名字&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="部署-tunnel" class="heading-element">&lt;span>4.3 部署 Tunnel&lt;/span>
 &lt;a href="#%e9%83%a8%e7%bd%b2-tunnel" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>Tunnel 部署方式，这里推荐选择 docker。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130002128.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130002128.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>获取 Cloudflared docker部署命令及 Token&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130002128.png" alt="获取 Cloudflared docker部署命令及 Token" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130002128.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130002128.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130002128.png?size=large 2x" data-title="获取 Cloudflared docker部署命令及 Token" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">获取 Cloudflared docker部署命令及 Token&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>将图中的 token 替换到下面的命令中，然后执行，启动 docker。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --name cf-tunnel -d --restart always cloudflare/cloudflared:latest tunnel --no-autoupdate run --token &amp;lt;YourToken&amp;gt;&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="配置域名和转发-url" class="heading-element">&lt;span>4.4 配置域名和转发 URL&lt;/span>
 &lt;a href="#%e9%85%8d%e7%bd%ae%e5%9f%9f%e5%90%8d%e5%92%8c%e8%bd%ac%e5%8f%91-url" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;ul>
&lt;li>子域名（Subdomain）：自定义一个。Path 留空。&lt;/li>
&lt;li>Type：&lt;code>SSH&lt;/code>。URL ：&lt;code>localhost:22&lt;/code>。&lt;/li>
&lt;/ul>
&lt;div class="alert alert-tip">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M8 1.5c-2.363.0-4 1.69-4 3.75.0.984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75.0 01-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456.0 00-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863.0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751.0 01-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304.0-2.06-1.637-3.75-4-3.75zM5.75 12h4.5a.75.75.0 010 1.5h-4.5a.75.75.0 010-1.5zM6 15.25a.75.75.0 01.75-.75h2.5a.75.75.0 010 1.5h-2.5A.75.75.0 016 15.25z"/>&lt;/svg>提示&lt;/p>&lt;p>如果需要转发其他协议和端口，你可以选择相应的 Type 和 URL。&lt;/p>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130019856.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130019856.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>配置域名&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130019856.png" alt="配置域名" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130019856.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130019856.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401130019856.png?size=large 2x" data-title="配置域名" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">配置域名&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="完成" class="heading-element">&lt;span>5 完成&lt;/span>
 &lt;a href="#%e5%ae%8c%e6%88%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>接着访问刚刚配置的三级域名，例如&lt;code>https://app.yourdomain.com&lt;/code>（是的，你没看错，是 https，cloudflare 已经自动为域名提供了 https 证书）就可以访问到内网的非公端口号服务了。一个 Tunnel 中可以添加多条三级域名来跳转到不同的内网服务，在 Tunnel 页面的 Public Hostname 中新增即可。&lt;/p>
&lt;h2 id="为你的服务添加额外验证" class="heading-element">&lt;span>6 为你的服务添加额外验证&lt;/span>
 &lt;a href="#%e4%b8%ba%e4%bd%a0%e7%9a%84%e6%9c%8d%e5%8a%a1%e6%b7%bb%e5%8a%a0%e9%a2%9d%e5%a4%96%e9%aa%8c%e8%af%81" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>如果你觉得这种直接暴露内网服务的方式有较高的安全风险，我们还可以使用 Application 功能为服务添加额外的安全验证。&lt;/p>
&lt;ol>
&lt;li>点击 Application - Get started。&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141511385.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141511385.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>Application&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141511385.png" alt="Application" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141511385.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141511385.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141511385.png?size=large 2x" data-title="Application" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">Application&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>创建 Application&lt;/p>
&lt;ol start="2">
&lt;li>选择 Self-hosted。&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141512523.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141512523.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>选择 Self-hosted&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141512523.png" alt="选择 Self-hosted" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141512523.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141512523.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141512523.png?size=large 2x" data-title="选择 Self-hosted" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">选择 Self-hosted&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>选择类型&lt;/p>
&lt;ol start="3">
&lt;li>填写配置，&lt;strong>注意 Subdomain 和 Domain 需要使用刚刚创建的 Tunnel 服务相同的 Domain 配置&lt;/strong>。&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513455.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513455.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>配置三级域名&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513455.png" alt="配置三级域名" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513455.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513455.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513455.png?size=large 2x" data-title="配置三级域名" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">配置三级域名&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>配置三级域名&lt;/p>
&lt;ol start="4">
&lt;li>选择验证方式。填写 Policy name（任意）。在 Include 区域选择验证方式，示例图片中使用的是 Email 域名的方式，用户在访问该网络时需要使用指定的邮箱域名（如@gmail.com）验证，这种方式比较适合自定义域名的企业邮箱用户。另外你还可以指定特定完整邮箱地址、IP 地址范围等方式。&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513592.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513592.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>选择验证方式&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513592.png" alt="选择验证方式" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513592.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513592.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141513592.png?size=large 2x" data-title="选择验证方式" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">选择验证方式&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>选择验证方式&lt;/p>
&lt;ol start="5">
&lt;li>完成添加&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514826.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514826.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>完成添加&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514826.png" alt="完成添加" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514826.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514826.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514826.png?size=large 2x" data-title="完成添加" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">完成添加&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>此时，访问 &lt;a href="https://app.yourdomain.com"target="_blank" rel="external nofollow noopener noreferrer">https://app.yourdomain.com&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 可以看到网站多了一个验证页面，使用刚刚设置的域名邮箱，接收验证码来访问。&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514928.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514928.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>验证页面&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514928.png" alt="验证页面" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514928.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514928.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141514928.png?size=large 2x" data-title="验证页面" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">验证页面&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="评价" class="heading-element">&lt;span>7 评价&lt;/span>
 &lt;a href="#%e8%af%84%e4%bb%b7" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>除了上述直接转发 http 服务之外，Tunnel 还支持 RDP、SSH 等协议的转发，玩法丰富，有待各位探索。作为一款免费的服务，简单的配置，低门槛使用条件，适合各位 Self-hosted 玩家尝试。不过要注意的是 Tunnel 在国内访问速度不快，并且有断流的情况，请酌情使用。&lt;/p>
&lt;h2 id="参考文章" class="heading-element">&lt;span>8 参考文章&lt;/span>
 &lt;a href="#%e5%8f%82%e8%80%83%e6%96%87%e7%ab%a0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;a href="https://niu.sspai.com/post/79278" title="CloudFlare Tunnel 免费内网穿透的简明教程"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">CloudFlare Tunnel 免费内网穿透的简明教程&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://niu.sspai.com/post/79278&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a></description></item><item><title>重装Windows系统记录</title><link>https://www.haoyep.com/posts/reinstall-windows/</link><pubDate>Tue, 14 May 2024 14:48:37 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/reinstall-windows/</guid><category domain="https://www.haoyep.com/categories/%E6%8A%80%E6%9C%AF/">技术</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202405141456243.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>本文主要是记录给小白（女朋友）重装系统的流程，包括重装系统使用的工具和进入新系统后的软件配置。&lt;/p>
&lt;h2 id="一重装系统" class="heading-element">&lt;span>一、重装系统&lt;/span>
 &lt;a href="#%e4%b8%80%e9%87%8d%e8%a3%85%e7%b3%bb%e7%bb%9f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h2 id="11-启动盘工具" class="heading-element">&lt;span>1 1.1 启动盘工具&lt;/span>
 &lt;a href="#11-%e5%90%af%e5%8a%a8%e7%9b%98%e5%b7%a5%e5%85%b7" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>&lt;a href="https://www.ventoy.net/cn/index.html"target="_blank" rel="external nofollow noopener noreferrer">ventoy&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>可以满足一个U盘安装多个系统，&lt;a href="https://www.ventoy.net/cn/download.html"target="_blank" rel="external nofollow noopener noreferrer">下载地址&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301281546842.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301281546842.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>ventoy&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301281546842.png" alt="ventoy" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301281546842.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301281546842.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301281546842.png?size=large 2x" data-title="ventoy" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">ventoy&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>插入U盘，打开&lt;code>Ventoy2Disk.exe&lt;/code>，配置选项——分区类型，勾选&lt;code>GPT&lt;/code>。
点击安装，&lt;strong>注意此步骤会清空U盘全部数据&lt;/strong>。如果U盘已经安装过ventoy，则点击升级，升级操作不会清空U盘数据。&lt;/p>
&lt;h2 id="12-系统镜像文件" class="heading-element">&lt;span>2 1.2 系统镜像文件&lt;/span>
 &lt;a href="#12-%e7%b3%bb%e7%bb%9f%e9%95%9c%e5%83%8f%e6%96%87%e4%bb%b6" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="windows" class="heading-element">&lt;span>2.1 Windows&lt;/span>
 &lt;a href="#windows" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>建议直接&lt;a href="https://zhuanlan.zhihu.com/p/370231492"target="_blank" rel="external nofollow noopener noreferrer">参考教程&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>从微软官网下载，&lt;a href="https://www.microsoft.com/software-download/windows11"target="_blank" rel="external nofollow noopener noreferrer">Windows11&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>同理。原理是更改浏览器为非Windows UA以获取下载直链。注意，下载&lt;code>Windows 10/11 64bit&lt;/code>版本，不要下载家庭中文版。&lt;/p>
&lt;p>&lt;strong>注意事项&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>建议选择&lt;strong>专业工作站&lt;/strong>版本&lt;/li>
&lt;li>条件允许的情况下，可以将Windows安装到200GB以上的分区（需提前清空该分区所有数据）。毕竟小白不懂，只会狂点下一步把软件都安装到C盘。&lt;/li>
&lt;li>Windows无法安装到这个磁盘，选中的磁盘采用GPT分区形式&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>弹出这个提示，主要是电脑硬盘格式为GPT分区表，而U盘启动引导方式为“Legacy”模式，导致了开机引导方式和磁盘数据结构不匹配导致的问题！正确的开机引导方式和磁盘数据结构：Legacy引导对应的是MBR分区；UEFI引导对应的是GPT分区。
&lt;strong>推荐的解决方法：将U盘启动UEFI模式&lt;/strong>
将电脑重启，重新选择U盘启动模式，在BIOS界面选择“UEFI：”开头的U盘名称。
同理，如果电脑硬盘格式为MBR，那么在BIOS界面选择不带“UEFI：”开头的U盘启动。&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>安装系统时建议使用本地账号登陆，账号名设为全英文。进入系统后再去设置里登录自己的微软账号&lt;/li>
&lt;/ul>
&lt;h3 id="ubuntu-2204-lts" class="heading-element">&lt;span>2.2 Ubuntu 22.04 LTS&lt;/span>
 &lt;a href="#ubuntu-2204-lts" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;ul>
&lt;li>&lt;a href="https://releases.ubuntu.com/jammy/"target="_blank" rel="external nofollow noopener noreferrer">官网&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://mirror.nju.edu.cn/ubuntu-releases/jammy/"target="_blank" rel="external nofollow noopener noreferrer">南京大学镜像&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/jammy/"target="_blank" rel="external nofollow noopener noreferrer">清华大学镜像&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://mirrors.bupt.edu.cn/ubuntu-releases/jammy/"target="_blank" rel="external nofollow noopener noreferrer">北邮镜像&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="ubuntu-2004-lts" class="heading-element">&lt;span>2.3 Ubuntu 20.04 LTS&lt;/span>
 &lt;a href="#ubuntu-2004-lts" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;ul>
&lt;li>&lt;a href="https://releases.ubuntu.com/focal/"target="_blank" rel="external nofollow noopener noreferrer">官网&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://mirror.nju.edu.cn/ubuntu-releases/focal/"target="_blank" rel="external nofollow noopener noreferrer">南京大学镜像&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/focal/"target="_blank" rel="external nofollow noopener noreferrer">清华大学镜像&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://mirrors.bupt.edu.cn/ubuntu-releases/focal/"target="_blank" rel="external nofollow noopener noreferrer">北邮镜像&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>注意事项&lt;/strong>
Ubuntu分区没必要那么复杂，完全可以直接all in在一个硬盘分区上。总之，按需调整各逻辑分区对应的硬盘分区位置、大小。&lt;/p>
&lt;h2 id="二windows-软件设置" class="heading-element">&lt;span>二、Windows 软件设置&lt;/span>
 &lt;a href="#%e4%ba%8cwindows-%e8%bd%af%e4%bb%b6%e8%ae%be%e7%bd%ae" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>当给其他人安装软件时，切记以人为本，放下技术优越性，不要搞一些好用但需要折腾、破解的软件。小白需要的是稳定易维护，版本升级简单。
下面提到的软件都以易更新为主（微软商店、联想软件管家），部分特殊软件也保证可以锁死版本使用。&lt;/p>
&lt;h2 id="21-系统相关" class="heading-element">&lt;span>1 2.1 系统相关&lt;/span>
 &lt;a href="#21-%e7%b3%bb%e7%bb%9f%e7%9b%b8%e5%85%b3" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;ul>
&lt;li>系统激活：淘宝买激活码或者使用&lt;a href="https://www.ghxi.com/heukmsactivator.html"target="_blank" rel="external nofollow noopener noreferrer">HEU KMS Activator&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，可能会报毒，关闭Windows安全保护后再运行，或安装火绒后再运行。&lt;code>用完即删&lt;/code>&lt;/li>
&lt;li>驱动：&lt;a href="https://lestore.lenovo.com/detail/1120"target="_blank" rel="external nofollow noopener noreferrer">驱动天使&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>、&lt;a href="https://www.sysceo.com/Software-softwarei-id-264.html"target="_blank" rel="external nofollow noopener noreferrer">驱动总裁&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> &lt;code>用完即卸载&lt;/code>&lt;/li>
&lt;li>软件卸载工具：&lt;a href="https://geekuninstaller.com/"target="_blank" rel="external nofollow noopener noreferrer">geek&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>：单文件、免费、可以自动删除注册表等痕迹&lt;/li>
&lt;li>微软常用运行库合集（&lt;a href="https://ghpym.lanzoui.com/b00ze15ab#y9x2"target="_blank" rel="external nofollow noopener noreferrer">果核版本&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>）。&lt;code>用完即删&lt;/code>&lt;/li>
&lt;li>DirectX修复工具（&lt;a href="https://www.ghxi.com/directxfix.html"target="_blank" rel="external nofollow noopener noreferrer">果核版本&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>），启用扩展，强力修复C++。&lt;code>用完即删&lt;/code>&lt;/li>
&lt;li>多软件音量调节：&lt;a href="https://www.microsoft.com/store/productId/9NBLGGH516XP"target="_blank" rel="external nofollow noopener noreferrer">EarTrumpet&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>剪贴板增强：&lt;a href="https://www.microsoft.com/store/productId/9NBLGGH3ZBJQ"target="_blank" rel="external nofollow noopener noreferrer">Ditto Clipboard&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>多显示器亮度调节工具：&lt;a href="https://www.microsoft.com/store/productId/9PLJWWSV01LK"target="_blank" rel="external nofollow noopener noreferrer">Twinkle Tray&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>系统安全：&lt;a href="https://www.huorong.cn/person5.html"target="_blank" rel="external nofollow noopener noreferrer">火绒&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，下载完整版，开启广告拦截。安静无打扰&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>也可以直接下载联想电脑管家，相当于集成了火绒、驱动管理、软件商店，还是很不错的。&lt;/p>
&lt;/blockquote>
&lt;h2 id="22-办公类" class="heading-element">&lt;span>2 2.2 办公类&lt;/span>
 &lt;a href="#22-%e5%8a%9e%e5%85%ac%e7%b1%bb" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Office：&lt;a href="https://otp.landian.vip/zh-cn/download.html"target="_blank" rel="external nofollow noopener noreferrer">Office Tool Plus&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 选择包含框架的版本。&lt;code>用完即删&lt;/code>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>产品Microsoft365 64位，选择Word、Excel、PowerPoint，如有需求可选安装OneNote、Visio等。先清除所有许可证，再安装激活&lt;code>Office Mondo 2016 - 批量版&lt;/code>许可证。kms地址网上随便搜索填一个，如&lt;code>kms.loli.beer&lt;/code>、&lt;code>kms.03k.org&lt;/code>，端口不用填。&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>PDF：&lt;a href="https://www.aliyundrive.com/s/Btrj6BhFUjg"target="_blank" rel="external nofollow noopener noreferrer">Adobe Acrobat DC @vposy&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>思维导图：&lt;a href="https://ghproxy.com/https://github.com/NaoTu/DesktopNaotu/releases/download/v3.2.3/DesktopNaotu-win32-x64.zip"target="_blank" rel="external nofollow noopener noreferrer">百度脑图桌面离线版&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>、可能需要科学上网&lt;a href="https://github.com/jgraph/drawio-desktop/releases"target="_blank" rel="external nofollow noopener noreferrer">drawio&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>、支持正版&lt;a href="https://xmind.cn/"target="_blank" rel="external nofollow noopener noreferrer">xmind&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="23-工具类" class="heading-element">&lt;span>3 2.3 工具类&lt;/span>
 &lt;a href="#23-%e5%b7%a5%e5%85%b7%e7%b1%bb" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;ul>
&lt;li>软件商店：&lt;a href="https://lestore.lenovo.com/about"target="_blank" rel="external nofollow noopener noreferrer">联想应用商店&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>解压缩：NanaZip（&lt;a href="https://apps.microsoft.com/store/detail/9N8G7TSCL18R?hl=zh-cn&amp;amp;gl=CN&amp;amp;rtc=1"target="_blank" rel="external nofollow noopener noreferrer">微软商店&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>）&lt;/li>
&lt;li>图片：&lt;a href="https://www.123pan.com/s/HQeA-w21Sh#3519"target="_blank" rel="external nofollow noopener noreferrer">2345看图王 果核版&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，第一次使用，请使用绿化卸载.exe进行绿化&lt;/li>
&lt;li>输入法：&lt;a href="https://shurufa.sogou.com/"target="_blank" rel="external nofollow noopener noreferrer">搜狗输入法&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 云联想、细胞词库仍然是天花板级别，广告就交给火绒拦截吧&lt;/li>
&lt;li>截图：&lt;a href="https://www.microsoft.com/store/productId/9P1WXPKB68KX"target="_blank" rel="external nofollow noopener noreferrer">Snipaste&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>浏览器：edge（关闭后台运行、硬件加速）登录微软账号同步扩展、密码，或&lt;a href="https://www.mozilla.org/zh-CN/firefox/"target="_blank" rel="external nofollow noopener noreferrer">Firefox&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>、&lt;a href="https://browser.360.cn/eex/"target="_blank" rel="external nofollow noopener noreferrer">360极速浏览器X&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>不建议安装Chrome，除非会科学上网同步数据
浏览器扩展推荐：&lt;a href="https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak"target="_blank" rel="external nofollow noopener noreferrer">uBlock Origin 去广告&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>、&lt;a href="https://microsoftedge.microsoft.com/addons/detail/awesome-screenshot-%E6%88%AA%E5%9B%BE%E5%BD%95%E5%B1%8F/gpmljinohlbfgmeoaeceoajachkabijo"target="_blank" rel="external nofollow noopener noreferrer">Awesome Screenshot 截图录屏&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>、&lt;a href="https://microsoftedge.microsoft.com/addons/detail/infinity-%E6%96%B0%E6%A0%87%E7%AD%BE%E9%A1%B5-pro/hajlmbnnniemimmaehcefkamdadpjlfa"target="_blank" rel="external nofollow noopener noreferrer">Infinity 新标签页 (Pro)&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>、&lt;a href="https://microsoftedge.microsoft.com/addons/detail/%E6%B2%99%E6%8B%89%E6%9F%A5%E8%AF%8D%E8%81%9A%E5%90%88%E8%AF%8D%E5%85%B8%E5%88%92%E8%AF%8D%E7%BF%BB%E8%AF%91/idghocbbahafpfhjnfhpbfbmpegphmmp"target="_blank" rel="external nofollow noopener noreferrer">沙拉查词&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>、&lt;a href="https://microsoftedge.microsoft.com/addons/detail/easyscholar/bpepicgagmdchlkjjeeiekpoafehpagm"target="_blank" rel="external nofollow noopener noreferrer">学术需求：easyScholar&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>通讯：微信、QQ。不得不用，在联想应用商店里直接下载&lt;/li>
&lt;li>桌面管理：&lt;a href="https://guanjia.qq.com/product/zmzl/"target="_blank" rel="external nofollow noopener noreferrer">腾讯桌面管理&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>：去除快捷方式小箭头、替代everthing、关闭壁纸

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290029000.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290029000.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>腾讯桌面管理&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290029000.png" alt="腾讯桌面管理" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290029000.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290029000.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290029000.png?size=large 2x" data-title="腾讯桌面管理" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">腾讯桌面管理&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ul>
&lt;h2 id="24-音视频可选安装" class="heading-element">&lt;span>4 2.4 音视频（可选安装）&lt;/span>
 &lt;a href="#24-%e9%9f%b3%e8%a7%86%e9%a2%91%e5%8f%af%e9%80%89%e5%ae%89%e8%a3%85" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;ul>
&lt;li>音乐
&lt;ul>
&lt;li>&lt;a href="https://lxmusic.toside.cn/download"target="_blank" rel="external nofollow noopener noreferrer">洛雪音乐&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，配合&lt;a href="https://www.sixyin.com/download?post=8498"target="_blank" rel="external nofollow noopener noreferrer">六音音源&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://listen1.github.io/listen1/"target="_blank" rel="external nofollow noopener noreferrer">Listen 1&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，全平台免费听歌&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>本地音乐播放器：&lt;a href="https://github.com/zhongyang219/MusicPlayer2/releases"target="_blank" rel="external nofollow noopener noreferrer">MusicPlayer2&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;li>播放器：&lt;a href="https://lestore.lenovo.com/detail/15654?origin=pcstore_copylink"target="_blank" rel="external nofollow noopener noreferrer">potplayer&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Potplayer无边框设置：
选项——基本——默认皮肤，勾选&lt;code>视频下自动隐藏&lt;/code>、&lt;code>全屏时防止遮盖&lt;/code>；进阶皮肤，方式设置为&lt;code>使用 Direct3D 9&lt;/code>

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290159701.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290159701.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>Potplayer无边框设置&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290159701.png" alt="Potplayer无边框设置" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290159701.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290159701.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202301290159701.png?size=large 2x" data-title="Potplayer无边框设置" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">Potplayer无边框设置&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;/blockquote>
&lt;h2 id="25-下载工具可选安装" class="heading-element">&lt;span>5 2.5 下载工具（可选安装）&lt;/span>
 &lt;a href="#25-%e4%b8%8b%e8%bd%bd%e5%b7%a5%e5%85%b7%e5%8f%af%e9%80%89%e5%ae%89%e8%a3%85" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>IDM+迅雷组合秒杀一切。下方都是特殊版本，没事别升级&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.423down.com/575.html"target="_blank" rel="external nofollow noopener noreferrer">IDM&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>：有浏览器扩展，资源嗅探能力最强，下载速度也是最快。但没法下种子&lt;/li>
&lt;li>&lt;a href="https://www.neatdownloadmanager.com/index.php/en/"target="_blank" rel="external nofollow noopener noreferrer">NDM&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>：IDM平替，免费，没汉化&lt;/li>
&lt;li>&lt;a href="https://motrix.app/zh-CN/"target="_blank" rel="external nofollow noopener noreferrer">Motrix&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>：颜值高，能下种子。但有时会没速度&lt;/li>
&lt;/ul></description></item><item><title>在 Word 中使用 Zotero 插入参考文献</title><link>https://www.haoyep.com/posts/word-zotero-citation/</link><pubDate>Mon, 01 Apr 2024 16:30:01 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/word-zotero-citation/</guid><category domain="https://www.haoyep.com/categories/%E7%A7%91%E7%A0%94/">科研</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011654593.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>本文介绍了如何在 Word 中使用 Zotero 插入参考文献，并设定东北大学要求的参考文献引用列表格式。&lt;/p>
&lt;h2 id="准备工作" class="heading-element">&lt;span>1 准备工作&lt;/span>
 &lt;a href="#%e5%87%86%e5%a4%87%e5%b7%a5%e4%bd%9c" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="参考文献引用格式" class="heading-element">&lt;span>1.1 参考文献引用格式&lt;/span>
 &lt;a href="#%e5%8f%82%e8%80%83%e6%96%87%e7%8c%ae%e5%bc%95%e7%94%a8%e6%a0%bc%e5%bc%8f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>安装 GB/T 7714-2015 参考文献引用格式。&lt;/p>
&lt;h4 id="zotero-官方7714样式不推荐" class="heading-element">&lt;span>1.1.1 Zotero 官方7714样式（不推荐）&lt;/span>
 &lt;a href="#zotero-%e5%ae%98%e6%96%b97714%e6%a0%b7%e5%bc%8f%e4%b8%8d%e6%8e%a8%e8%8d%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;div class="alert alert-warning">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086.0l6.082 11.378A1.75 1.75.0 0114.082 15H1.918A1.75 1.75.0 01.375 12.425zm1.763.707a.25.25.0 00-.44.0L1.698 13.132a.25.25.0 00.22.368h12.164a.25.25.0 00.22-.368zm.53 3.996v2.5a.75.75.0 01-1.5.0v-2.5a.75.75.0 011.5.0zM9 11a1 1 0 11-2 0 1 1 0 012 0z"/>&lt;/svg>警告&lt;/p>&lt;p>此官方格式存在一些问题，如不能区分中英文文献，导致引用英文文献也是“等”，而不是“et al”。因此并不推荐。&lt;/p>
&lt;/div>&lt;ol>
&lt;li>打开 Zotero，点击&lt;code>编辑&lt;/code>-&amp;gt;&lt;code>首选项&lt;/code>-&amp;gt;&lt;code>引用&lt;/code>&lt;/li>
&lt;li>在&lt;code>样式&lt;/code>中点击&lt;code>获取更多样式&lt;/code>&lt;/li>
&lt;li>搜索&lt;code>7714&lt;/code>即可安装国标引用样式。注意有1987、2005和2015三个时间，note、author-date 和 numeric 三个格式，鼠标悬停即可预览样式

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542774.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542774.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>安装Zotero 官方7714样式&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542774.png" alt="安装Zotero 官方7714样式" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542774.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542774.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542774.png?size=large 2x" data-title="安装Zotero 官方7714样式" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">安装Zotero 官方7714样式&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ol>
&lt;h4 id="比较贴近-neu-要求的7714样式" class="heading-element">&lt;span>1.1.2 比较贴近 NEU 要求的7714样式&lt;/span>
 &lt;a href="#%e6%af%94%e8%be%83%e8%b4%b4%e8%bf%91-neu-%e8%a6%81%e6%b1%82%e7%9a%847714%e6%a0%b7%e5%bc%8f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>Github 上的&lt;a href="https://github.com/redleafnew/Chinese-STD-GB-T-7714-related-csl" title="Chinese-STD-GB-T-7714-related-csl"target="_blank" rel="external nofollow noopener noreferrer">Chinese-STD-GB-T-7714-related-csl&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>仓库（或&lt;a href="https://gitee.com/redleafnew00/Chinese-STD-GB-T-7714-related-csl" title="Gitee"target="_blank" rel="external nofollow noopener noreferrer">Gitee 镜像仓库&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>）提供7714 2015的官方样式及众多修改版，其中&lt;a href="https://github.com/redleafnew/Chinese-STD-GB-T-7714-related-csl/blob/main/002gb-t-7714-2015-numeric-bilingual-no-uppercase-no-url-doi.csl" title="002gb"target="_blank" rel="external nofollow noopener noreferrer">002gb&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>样式比较符合东北大学的要求，除了网络文献的引用顺序有点差异。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542161.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542161.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>002gb样式&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542161.png" alt="002gb样式" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542161.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542161.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542161.png?size=large 2x" data-title="002gb样式" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">002gb样式&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;ol>
&lt;li>点击 [&lt;a href="https://raw.githubusercontent.com/redleafnew/Chinese-STD-GB-T-7714-related-csl/main/002gb-t-7714-2015-numeric-bilingual-no-uppercase-no-url-doi.csl"target="_blank" rel="external nofollow noopener noreferrer">Github&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> | &lt;a href="https://gitee.com/redleafnew00/Chinese-STD-GB-T-7714-related-csl/raw/main/002gb-t-7714-2015-numeric-bilingual-no-uppercase-no-url-doi.csl"target="_blank" rel="external nofollow noopener noreferrer">Gitee&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> ]下载引用格式文件&lt;/li>
&lt;li>打开 Zotero，依次进入&lt;code>编辑&lt;/code>-&amp;gt;&lt;code>首选项&lt;/code>-&amp;gt;&lt;code>引用&lt;/code>&lt;/li>
&lt;li>点击&lt;code>+&lt;/code>号添加样式。选中已下载的002 csl 样式，打开。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542053.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542053.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>导入样式&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542053.png" alt="导入样式" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542053.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542053.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202311071542053.png?size=large 2x" data-title="导入样式" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">导入样式&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>会提示&lt;code>***.csl不是一个有效的 CSL 1.0.2 样式文件，你可能不能和Zotero一起正常工作&lt;/code>，不用管，点击 OK 继续导入。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011457740.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011457740.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>不管提示，继续导入&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011457740.png" alt="不管提示，继续导入" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011457740.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011457740.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011457740.png?size=large 2x" data-title="不管提示，继续导入" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">不管提示，继续导入&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;/blockquote>
&lt;ol start="4">
&lt;li>点击 OK 保存退出首选项。然后重新打开&lt;code>编辑&lt;/code>-&amp;gt;&lt;code>首选项&lt;/code>-&amp;gt;&lt;code>导出&lt;/code>—&amp;gt;&lt;strong>条目格式&lt;/strong>，设置成刚才导入的7714样式

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011502945.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011502945.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>设置默认导出样式&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011502945.png" alt="设置默认导出样式" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011502945.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011502945.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011502945.png?size=large 2x" data-title="设置默认导出样式" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">设置默认导出样式&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ol>
&lt;h3 id="在-word-中安装-zotero-插件" class="heading-element">&lt;span>1.2 在 Word 中安装 Zotero 插件&lt;/span>
 &lt;a href="#%e5%9c%a8-word-%e4%b8%ad%e5%ae%89%e8%a3%85-zotero-%e6%8f%92%e4%bb%b6" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;ol>
&lt;li>关闭所有已经打开的 Word&lt;/li>
&lt;li>打开 Zotero，点击&lt;code>编辑&lt;/code>-&amp;gt;&lt;code>首选项&lt;/code>-&amp;gt;&lt;code>引用&lt;/code>&lt;/li>
&lt;li>在&lt;code>文档编辑软件&lt;/code>中点击&lt;code>安装加载项 Microsoft Word&lt;/code>，记得勾选&lt;code>使用经典版&amp;quot;添加引注&amp;quot;&lt;/code>

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011508777.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011508777.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>安装加载项 Microsoft Word&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011508777.png" alt="安装加载项 Microsoft Word" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011508777.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011508777.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011508777.png?size=large 2x" data-title="安装加载项 Microsoft Word" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">安装加载项 Microsoft Word&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ol>
&lt;h2 id="zotero-word-插件选项卡" class="heading-element">&lt;span>2 Zotero Word 插件选项卡&lt;/span>
 &lt;a href="#zotero-word-%e6%8f%92%e4%bb%b6%e9%80%89%e9%a1%b9%e5%8d%a1" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061347758.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061347758.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>Zotero Word 插件选项卡&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061347758.png" alt="Zotero Word 插件选项卡" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061347758.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061347758.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061347758.png?size=large 2x" data-title="Zotero Word 插件选项卡" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">Zotero Word 插件选项卡&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>一般情况下，Zotero 安装时会安装 Zotero Word 插件，其会在 Microsoft Word 里添加一个 Zotero 选项卡。如果你的 Word 里没有 Zotero 选项卡，请参见 &lt;a href="https://zotero-chinese.com/user-guide/faqs/word-addon.html#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9%E5%8F%8A%E4%B8%8E%E6%A0%B7%E5%BC%8F%E7%9B%B8%E5%85%B3%E7%9A%84%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98"target="_blank" rel="external nofollow noopener noreferrer">故障排除 | 安装 Zotero 的 Word 插件&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 。&lt;/p>
&lt;p>Zotero 选项卡包含以下图标：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>名称&lt;/th>
 &lt;th>图标&lt;/th>
 &lt;th>描述&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>添加/编辑引注&lt;/td>
 &lt;td>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011515777.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011515777.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>插入引文&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011515777.png" alt="插入引文" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011515777.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011515777.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011515777.png?size=large 2x" data-title="插入引文" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">插入引文&lt;/figcaption>
 &lt;/figure>&lt;/td>
 &lt;td>在光标位置添加新引注或编辑文档中的现有引注。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>添加/编辑参考文献表&lt;/td>
 &lt;td>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011517521.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011517521.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>添加参考文献表&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011517521.png" alt="添加参考文献表" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011517521.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011517521.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011517521.png?size=large 2x" data-title="添加参考文献表" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">添加参考文献表&lt;/figcaption>
 &lt;/figure>&lt;/td>
 &lt;td>在光标位置插入参考文献表或编辑现有书目。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>添加笔记&lt;/td>
 &lt;td>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518001.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518001.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>添加笔记&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518001.png" alt="添加笔记" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518001.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518001.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518001.png?size=large 2x" data-title="添加笔记" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">添加笔记&lt;/figcaption>
 &lt;/figure>&lt;/td>
 &lt;td>在光标当前位置插入笔记。请注意，此功能不常用，点击后会出现黄色插入框。如果不小心点开了，可以用键盘上的 &lt;code>Esc&lt;/code> 键关闭黄色插入框。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>文档首选项&lt;/td>
 &lt;td>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518149.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518149.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>文档首选项&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518149.png" alt="文档首选项" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518149.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518149.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518149.png?size=large 2x" data-title="文档首选项" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">文档首选项&lt;/figcaption>
 &lt;/figure>&lt;/td>
 &lt;td>打开“文档首选项”窗口，例如更改引文样式。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>刷新&lt;/td>
 &lt;td>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518120.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518120.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>刷新&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518120.png" alt="刷新" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518120.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518120.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011518120.png?size=large 2x" data-title="刷新" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">刷新&lt;/figcaption>
 &lt;/figure>&lt;/td>
 &lt;td>立即刷新所有引注和参考文献表，更新 Zotero 库中已更改的项目元数据。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>取消链接引注&lt;/td>
 &lt;td>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011519095.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011519095.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>unlink&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011519095.png" alt="unlink" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011519095.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011519095.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011519095.png?size=large 2x" data-title="unlink" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">unlink&lt;/figcaption>
 &lt;/figure>&lt;/td>
 &lt;td>通过删除域代码来取消文档中 Zotero 引文的链接。这可以防止引文和书目的任何进一步自动更新。请注意，删除域代码是不可逆的，通常只能在文档的最终副本中完成。&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>其中，&lt;strong>文档首选项&lt;/strong>窗口允许您设置以下针对该文档的设置：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>引文样式&lt;/strong>：一般情况下，你只需要修改这一项，其余设置均保持默认即可。&lt;/li>
&lt;li>设置引注和参考文献表的格式的语言。&lt;/li>
&lt;li>对于基于注释的样式，例如“China National Standard GB/T 7714-2015（note，Chinese）”，引文是插入为脚注还或尾注。脚注和尾注的样式和格式由 Word（而不是 Zotero）控制。&lt;/li>
&lt;li>将引文存储为字段还是书签。默认为“字段”。除非您需要使用 LibreOffice 与同事协作，否则应始终选择“字段”。&lt;/li>
&lt;li>对于缩写期刊标题的样式（例如，“Nature”），是否使用 MEDLINE 缩写列表来缩写标题。如果选择此选项（默认值），则 Zotero 中“ ”字段的内容将被忽略。&lt;/li>
&lt;li>&lt;strong>是否自动更新引注和参考文献表&lt;/strong>：一般情况下开启即可。当文档中引文非常多，每次更新都会卡顿时，可以关闭此功能，添加一部分或最终手动进行更新。&lt;/li>
&lt;/ol>
&lt;h2 id="插入参考文献" class="heading-element">&lt;span>3 插入参考文献&lt;/span>
 &lt;a href="#%e6%8f%92%e5%85%a5%e5%8f%82%e8%80%83%e6%96%87%e7%8c%ae" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;div class="alert alert-important">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M0 1.75C0 .784.784.0 1.75.0h12.5C15.216.0 16 .784 16 1.75v9.5A1.75 1.75.0 0114.25 13H8.06l-2.573 2.573A1.458 1.458.0 013 14.543V13H1.75A1.75 1.75.0 010 11.25zm1.75-.25a.25.25.0 00-.25.25v9.5c0 .138.112.25.25.25h2a.75.75.0 01.75.75v2.19l2.72-2.72a.749.749.0 01.53-.22h6.5a.25.25.0 00.25-.25v-9.5a.25.25.0 00-.25-.25zm7 2.25v2.5a.75.75.0 01-1.5.0v-2.5a.75.75.0 011.5.0zM9 9A1 1 0 117 9a1 1 0 012 0z"/>&lt;/svg>重要&lt;/p>&lt;p>注意：插入参考文献时要保证Zotero在后台运行。&lt;/p>
&lt;/div>&lt;h3 id="设置默认引用格式" class="heading-element">&lt;span>3.1 设置默认引用格式&lt;/span>
 &lt;a href="#%e8%ae%be%e7%bd%ae%e9%bb%98%e8%ae%a4%e5%bc%95%e7%94%a8%e6%a0%bc%e5%bc%8f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>打开要插入参考文献的 Word，点击 &lt;code>Zotero 选项卡&lt;/code>-&amp;gt;&lt;code>Document Reference&lt;/code>，设置参考文献默认引用格式为 GB/T 7714-2015

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011523027.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011523027.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>设置参考文献默认引用格式为GB/T 7714-2015&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011523027.png" alt="设置参考文献默认引用格式为GB/T 7714-2015" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011523027.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011523027.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011523027.png?size=large 2x" data-title="设置参考文献默认引用格式为GB/T 7714-2015" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">设置参考文献默认引用格式为GB/T 7714-2015&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="插入单篇文献" class="heading-element">&lt;span>3.2 插入单篇文献&lt;/span>
 &lt;a href="#%e6%8f%92%e5%85%a5%e5%8d%95%e7%af%87%e6%96%87%e7%8c%ae" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>在 Word 正文中点击要插入参考文献的位置，然后在&lt;code>Zotero 选项卡&lt;/code>中点击&lt;code>Add/Edit Citation&lt;/code>，从 Zotero 中选择要插入的参考文献，点击&lt;code>OK&lt;/code>即可插入。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011533996.gif?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011533996.gif?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>插入单篇参考文献&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011533996.gif" alt="插入单篇参考文献" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011533996.gif?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011533996.gif?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011533996.gif?size=large 2x" data-title="插入单篇参考文献" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">插入单篇参考文献&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="插入参考文献引用列表" class="heading-element">&lt;span>3.3 插入参考文献引用列表&lt;/span>
 &lt;a href="#%e6%8f%92%e5%85%a5%e5%8f%82%e8%80%83%e6%96%87%e7%8c%ae%e5%bc%95%e7%94%a8%e5%88%97%e8%a1%a8" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>在 Word 正文中点击要插入参考文献引用列表的位置，然后在&lt;code>Zotero 选项卡&lt;/code>中点击&lt;code>Add/Edit Bibliography&lt;/code>，即可出现参考文献引用列表。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011537854.gif?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011537854.gif?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>插入参考文献引用列表&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011537854.gif" alt="插入参考文献引用列表" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011537854.gif?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011537854.gif?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011537854.gif?size=large 2x" data-title="插入参考文献引用列表" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">插入参考文献引用列表&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="插入多篇参考文献" class="heading-element">&lt;span>3.4 插入多篇参考文献&lt;/span>
 &lt;a href="#%e6%8f%92%e5%85%a5%e5%a4%9a%e7%af%87%e5%8f%82%e8%80%83%e6%96%87%e7%8c%ae" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>只需要在插入参考文献时，选择&lt;code>多重来源&lt;/code>，逐个添加参考文献到右边侧栏，然后点击&lt;code>OK&lt;/code>即可。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011540011.gif?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011540011.gif?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>插入多篇参考文献&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011540011.gif" alt="插入多篇参考文献" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011540011.gif?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011540011.gif?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011540011.gif?size=large 2x" data-title="插入多篇参考文献" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">插入多篇参考文献&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="删除或更换多重来源" class="heading-element">&lt;span>3.5 删除或更换多重来源&lt;/span>
 &lt;a href="#%e5%88%a0%e9%99%a4%e6%88%96%e6%9b%b4%e6%8d%a2%e5%a4%9a%e9%87%8d%e6%9d%a5%e6%ba%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>选中 Word 中多重引用的位置，在&lt;code>Zotero 选项卡&lt;/code>中点击&lt;code>Add/Edit Citation&lt;/code>。
左箭头：删除其中一个文献；右箭头：添加一个文献。
上、下箭头：对引文重新排序。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011544296.gif?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011544296.gif?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>删除或更换多重来源&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011544296.gif" alt="删除或更换多重来源" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011544296.gif?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011544296.gif?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011544296.gif?size=large 2x" data-title="删除或更换多重来源" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">删除或更换多重来源&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="设置参考文献格式" class="heading-element">&lt;span>4 设置参考文献格式&lt;/span>
 &lt;a href="#%e8%ae%be%e7%bd%ae%e5%8f%82%e8%80%83%e6%96%87%e7%8c%ae%e6%a0%bc%e5%bc%8f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>Zotero 插入的参考文献引用列表，默认使用了 Word 中的&lt;strong>书目&lt;/strong>样式。因此，只需要修改&lt;strong>书目&lt;/strong>样式为学校要求的参考文献格式，就能保证刷新后不改变，且格式与学校要求保持一致。
NEU &lt;strong>硕士&lt;/strong>毕业论文参考文献的格式要求如下：

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061323866.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061323866.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>NEU硕士毕业论文参考文献格式要求&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061323866.png" alt="NEU硕士毕业论文参考文献格式要求" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061323866.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061323866.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061323866.png?size=large 2x" data-title="NEU硕士毕业论文参考文献格式要求" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">NEU硕士毕业论文参考文献格式要求&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>将&lt;strong>书目&lt;/strong>样式修改为如上格式后，再次插入或刷新参考文献，格式就会保持此样式不变。
也可以从 &lt;a href="https://github.com/leegical/Blog_img/releases/tag/NEU-citation"target="_blank" rel="external nofollow noopener noreferrer">NEU Zotero 参考文献格式 Word分享&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>中下载已经改好样式的 Word 文件。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011625496.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011625496.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>NEU-zotero-citation&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011625496.png" alt="NEU-zotero-citation" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011625496.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011625496.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404011625496.png?size=large 2x" data-title="NEU-zotero-citation" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">NEU-zotero-citation&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="注意事项" class="heading-element">&lt;span>5 注意事项&lt;/span>
 &lt;a href="#%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="等与-et-al" class="heading-element">&lt;span>5.1 等与 et al&lt;/span>
 &lt;a href="#%e7%ad%89%e4%b8%8e-et-al" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>如果英文文献作者超过3个，但显示为中文的&lt;code>等&lt;/code>，而不是英文 &lt;code>et al&lt;/code>。这是没有设置文献语言的原因。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061329315.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061329315.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>英文但显示等&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061329315.png" alt="英文但显示等" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061329315.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061329315.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061329315.png?size=large 2x" data-title="英文但显示等" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">英文但显示等&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>需要手动将英文文献信息中的 &lt;code>语言&lt;/code> 字段修改为 &lt;code>en&lt;/code>。同理，将中文文献的 &lt;code>语言&lt;/code> 字段修改为 &lt;code>zh-CN&lt;/code>。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012026213.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012026213.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>修改文献语言&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012026213.png" alt="修改文献语言" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012026213.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012026213.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012026213.png?size=large 2x" data-title="修改文献语言" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">修改文献语言&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>你也可以使用&lt;a href="https://www.haoyep.com/posts/zotero-config/#%E5%8A%9F%E8%83%BD-1"target="_blank" rel="external nofollow noopener noreferrer">茉莉花插件&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>实现自动识别语言。只需要全选文献——右键——小工具——&lt;strong>Auto:智能识别语言&lt;/strong>，就可以自动更新文献语言。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061333176.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061333176.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>Auto:智能识别语言&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061333176.png" alt="Auto:智能识别语言" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061333176.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061333176.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404061333176.png?size=large 2x" data-title="Auto:智能识别语言" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">Auto:智能识别语言&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="文献名大小写" class="heading-element">&lt;span>5.2 文献名大小写&lt;/span>
 &lt;a href="#%e6%96%87%e7%8c%ae%e5%90%8d%e5%a4%a7%e5%b0%8f%e5%86%99" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>有些期刊或出版社（如 ACS）导出的文章题目（Title）是每个实词的首字母是大写，如：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Measurement-Based Probabilistic Timing Analysis for Multi-path Programs&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>但一些杂志或学校要求是句子（Sentence）格式，即只是题目的首字母大写（缩写除外，都是大写），如：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Measurement-based probabilistic timing analysis for multi-path programs&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>修改方法有两种。&lt;/p>
&lt;h4 id="单一文献手动修改" class="heading-element">&lt;span>5.2.1 单一文献手动修改&lt;/span>
 &lt;a href="#%e5%8d%95%e4%b8%80%e6%96%87%e7%8c%ae%e6%89%8b%e5%8a%a8%e4%bf%ae%e6%94%b9" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>选中文章，然后在右侧文章信息 &lt;code>信息/Info&lt;/code> 中 &lt;code>标题/Title&lt;/code> 字段处右击，选择 &lt;code>句首大写/Transform Text-Sentence case&lt;/code>，然后再把缩略语等需要大写的手动修改一下。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012054249.gif?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012054249.gif?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>手动句首大写&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012054249.gif" alt="手动句首大写" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012054249.gif?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012054249.gif?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012054249.gif?size=large 2x" data-title="手动句首大写" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">手动句首大写&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h4 id="批量修改" class="heading-element">&lt;span>5.2.2 批量修改&lt;/span>
 &lt;a href="#%e6%89%b9%e9%87%8f%e4%bf%ae%e6%94%b9" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>批量转为句首字母大写，即 Sentence 模式的实现方法参考如下链接：
&lt;a href="https://zhuanlan.zhihu.com/p/283889592" title="Zotero批量文章题目大小写转为首字母大写的方法（含视频）"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">Zotero批量文章题目大小写转为首字母大写的方法（含视频）&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://zhuanlan.zhihu.com/p/283889592&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a>&lt;/p>
&lt;p>操作有风险，建议先备份库再进行下面的操作。&lt;/p>
&lt;ol>
&lt;li>选中需要转换的文献，本例中为4条全选。&lt;/li>
&lt;li>在Zotero中依次点击：Zotero&amp;gt;Tools&amp;gt;Developer&amp;gt;Run Javascript

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012100166.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012100166.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>运行js&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012100166.png" alt="运行js" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012100166.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012100166.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012100166.png?size=large 2x" data-title="运行js" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">运行js&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ol>
&lt;p>3.在弹出的对话框中将以下代码复制进去：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-js" data-lang="js">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">zoteroPane&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">Zotero&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getActiveZoteroPane&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">items&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">zoteroPane&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getSelectedItems&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">var&lt;/span> &lt;span class="nx">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">item&lt;/span> &lt;span class="k">of&lt;/span> &lt;span class="nx">items&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">title&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">item&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getField&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;title&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">result&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">title&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s2">&amp;#34;\n&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">new_title&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">title&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sr">/\b([A-Z][a-z0-9]+|A)\b/g&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kd">function&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">x&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nx">x&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">toLowerCase&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">new_title&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">new_title&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sr">/(^|\?\s*)[a-z]/&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kd">function&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">x&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nx">x&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">toUpperCase&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">result&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s2">&amp;#34;-&amp;gt; &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">new_title&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s2">&amp;#34;\n\n&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Do it at your own risk
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nx">item&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">setField&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;title&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">new_title&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">await&lt;/span> &lt;span class="nx">item&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">saveTx&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">return&lt;/span> &lt;span class="nx">result&lt;/span>&lt;span class="p">;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="4">
&lt;li>
&lt;p>点击Run，右侧会显示题目的修改情况。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101922.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101922.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>Run js&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101922.png" alt="Run js" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101922.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101922.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101922.png?size=large 2x" data-title="Run js" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">Run js&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>关闭此窗口，则在Zotero主窗口发现已经修改完成，都成为句首字母大写，最好再核实一下，如果有不正确的，手动再修改一下。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101563.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101563.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>句首字母大写效果&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101563.png" alt="句首字母大写效果" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101563.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101563.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404012101563.png?size=large 2x" data-title="句首字母大写效果" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">句首字母大写效果&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="交叉引用" class="heading-element">&lt;span>5.3 交叉引用&lt;/span>
 &lt;a href="#%e4%ba%a4%e5%8f%89%e5%bc%95%e7%94%a8" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>Zotero 在 Word 中参考文献的上标并不是超链接/交叉引用格式，因此无法点击上标跳转到具体参考文献列表条目。可以通过 Word 中的宏实现交叉引用。&lt;/p>
&lt;blockquote>
&lt;p>参考教程：&lt;a href="https://zhuanlan.zhihu.com/p/674910734"target="_blank" rel="external nofollow noopener noreferrer">Zotero 和 Word 参考文献与文末引用条目的超链接设置&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;ol>
&lt;li>打开Word -&amp;gt; 视图 -&amp;gt; 宏，选择&lt;strong>查看宏&lt;/strong>

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232108298.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232108298.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>查看宏&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232108298.png" alt="查看宏" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232108298.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232108298.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232108298.png?size=large 2x" data-title="查看宏" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">查看宏&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;li>输入宏名：&lt;code>ZoteroLinkCitation&lt;/code>，点击&lt;strong>创建&lt;/strong>宏

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232111552.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232111552.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>创建宏ZoteroLinkCitation&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232111552.png" alt="创建宏ZoteroLinkCitation" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232111552.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232111552.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232111552.png?size=large 2x" data-title="创建宏ZoteroLinkCitation" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">创建宏ZoteroLinkCitation&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;li>将代码全部替换为：&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;span class="lnt">102
&lt;/span>&lt;span class="lnt">103
&lt;/span>&lt;span class="lnt">104
&lt;/span>&lt;span class="lnt">105
&lt;/span>&lt;span class="lnt">106
&lt;/span>&lt;span class="lnt">107
&lt;/span>&lt;span class="lnt">108
&lt;/span>&lt;span class="lnt">109
&lt;/span>&lt;span class="lnt">110
&lt;/span>&lt;span class="lnt">111
&lt;/span>&lt;span class="lnt">112
&lt;/span>&lt;span class="lnt">113
&lt;/span>&lt;span class="lnt">114
&lt;/span>&lt;span class="lnt">115
&lt;/span>&lt;span class="lnt">116
&lt;/span>&lt;span class="lnt">117
&lt;/span>&lt;span class="lnt">118
&lt;/span>&lt;span class="lnt">119
&lt;/span>&lt;span class="lnt">120
&lt;/span>&lt;span class="lnt">121
&lt;/span>&lt;span class="lnt">122
&lt;/span>&lt;span class="lnt">123
&lt;/span>&lt;span class="lnt">124
&lt;/span>&lt;span class="lnt">125
&lt;/span>&lt;span class="lnt">126
&lt;/span>&lt;span class="lnt">127
&lt;/span>&lt;span class="lnt">128
&lt;/span>&lt;span class="lnt">129
&lt;/span>&lt;span class="lnt">130
&lt;/span>&lt;span class="lnt">131
&lt;/span>&lt;span class="lnt">132
&lt;/span>&lt;span class="lnt">133
&lt;/span>&lt;span class="lnt">134
&lt;/span>&lt;span class="lnt">135
&lt;/span>&lt;span class="lnt">136
&lt;/span>&lt;span class="lnt">137
&lt;/span>&lt;span class="lnt">138
&lt;/span>&lt;span class="lnt">139
&lt;/span>&lt;span class="lnt">140
&lt;/span>&lt;span class="lnt">141
&lt;/span>&lt;span class="lnt">142
&lt;/span>&lt;span class="lnt">143
&lt;/span>&lt;span class="lnt">144
&lt;/span>&lt;span class="lnt">145
&lt;/span>&lt;span class="lnt">146
&lt;/span>&lt;span class="lnt">147
&lt;/span>&lt;span class="lnt">148
&lt;/span>&lt;span class="lnt">149
&lt;/span>&lt;span class="lnt">150
&lt;/span>&lt;span class="lnt">151
&lt;/span>&lt;span class="lnt">152
&lt;/span>&lt;span class="lnt">153
&lt;/span>&lt;span class="lnt">154
&lt;/span>&lt;span class="lnt">155
&lt;/span>&lt;span class="lnt">156
&lt;/span>&lt;span class="lnt">157
&lt;/span>&lt;span class="lnt">158
&lt;/span>&lt;span class="lnt">159
&lt;/span>&lt;span class="lnt">160
&lt;/span>&lt;span class="lnt">161
&lt;/span>&lt;span class="lnt">162
&lt;/span>&lt;span class="lnt">163
&lt;/span>&lt;span class="lnt">164
&lt;/span>&lt;span class="lnt">165
&lt;/span>&lt;span class="lnt">166
&lt;/span>&lt;span class="lnt">167
&lt;/span>&lt;span class="lnt">168
&lt;/span>&lt;span class="lnt">169
&lt;/span>&lt;span class="lnt">170
&lt;/span>&lt;span class="lnt">171
&lt;/span>&lt;span class="lnt">172
&lt;/span>&lt;span class="lnt">173
&lt;/span>&lt;span class="lnt">174
&lt;/span>&lt;span class="lnt">175
&lt;/span>&lt;span class="lnt">176
&lt;/span>&lt;span class="lnt">177
&lt;/span>&lt;span class="lnt">178
&lt;/span>&lt;span class="lnt">179
&lt;/span>&lt;span class="lnt">180
&lt;/span>&lt;span class="lnt">181
&lt;/span>&lt;span class="lnt">182
&lt;/span>&lt;span class="lnt">183
&lt;/span>&lt;span class="lnt">184
&lt;/span>&lt;span class="lnt">185
&lt;/span>&lt;span class="lnt">186
&lt;/span>&lt;span class="lnt">187
&lt;/span>&lt;span class="lnt">188
&lt;/span>&lt;span class="lnt">189
&lt;/span>&lt;span class="lnt">190
&lt;/span>&lt;span class="lnt">191
&lt;/span>&lt;span class="lnt">192
&lt;/span>&lt;span class="lnt">193
&lt;/span>&lt;span class="lnt">194
&lt;/span>&lt;span class="lnt">195
&lt;/span>&lt;span class="lnt">196
&lt;/span>&lt;span class="lnt">197
&lt;/span>&lt;span class="lnt">198
&lt;/span>&lt;span class="lnt">199
&lt;/span>&lt;span class="lnt">200
&lt;/span>&lt;span class="lnt">201
&lt;/span>&lt;span class="lnt">202
&lt;/span>&lt;span class="lnt">203
&lt;/span>&lt;span class="lnt">204
&lt;/span>&lt;span class="lnt">205
&lt;/span>&lt;span class="lnt">206
&lt;/span>&lt;span class="lnt">207
&lt;/span>&lt;span class="lnt">208
&lt;/span>&lt;span class="lnt">209
&lt;/span>&lt;span class="lnt">210
&lt;/span>&lt;span class="lnt">211
&lt;/span>&lt;span class="lnt">212
&lt;/span>&lt;span class="lnt">213
&lt;/span>&lt;span class="lnt">214
&lt;/span>&lt;span class="lnt">215
&lt;/span>&lt;span class="lnt">216
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">Public&lt;/span> &lt;span class="n">Sub&lt;/span> &lt;span class="n">ZoteroLinkCitation&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39; get selected area (if applicable)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">nStart&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">nEnd&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">nStart&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Start&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">nEnd&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">End&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39; toggle screen updating&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Application&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ScreenUpdating&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39; define variables&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">title&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">titleAnchor&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">style&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">fieldCode&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">numOrYear&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n1&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n2&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n3&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ActiveWindow&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">View&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ShowFieldCodes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Find&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ClearFormatting&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39; find the Zotero bibliography&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">With&lt;/span> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Find&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Text&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;^d ADDIN ZOTERO_BIBL&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Replacement&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Text&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Forward&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Wrap&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wdFindContinue&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Format&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchCase&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchWholeWord&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchWildcards&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchSoundsLike&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchAllWordForms&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">With&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Find&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Execute&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; add bookmark for the Zotero bibliography&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">With&lt;/span> &lt;span class="n">ActiveDocument&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Bookmarks&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Add&lt;/span> &lt;span class="ne">Range&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Range&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Zotero_Bibliography&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">DefaultSorting&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wdSortByName&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">ShowHidden&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">With&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; loop through each field in the document&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">For&lt;/span> &lt;span class="n">Each&lt;/span> &lt;span class="n">aField&lt;/span> &lt;span class="n">In&lt;/span> &lt;span class="n">ActiveDocument&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Fields&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; check if the field is a Zotero in-text reference&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;##################################################&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">If&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">aField&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Code&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;ADDIN ZOTERO_ITEM&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="n">Then&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fieldCode&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">aField&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Code&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;#############&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; Prepare&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; Plain citation== Format of Textfield shown&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; must be in Brackets&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">plain_Cit&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">plCitStrBeg&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;plainCitation&amp;#34;&amp;#34;:&amp;#34;&amp;#34;[&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> plCitStrEnd = &amp;#34;]&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">plCitStrBeg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n1&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">Len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plCitStrBeg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Mid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">n1&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">plCitStrEnd&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">n1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">plain_Cit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Mid&lt;/span>&lt;span class="o">$&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n1&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n2&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">n1&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Reference &amp;#39;&lt;/span>&lt;span class="n">as&lt;/span> &lt;span class="n">shown&lt;/span>&lt;span class="s1">&amp;#39; in word as a string&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Title array in fieldCode (all referenced Titles within this field)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">array_RefTitle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Do&lt;/span> &lt;span class="n">While&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;title&amp;#34;&amp;#34;:&amp;#34;&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;title&amp;#34;&amp;#34;:&amp;#34;&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">Len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;title&amp;#34;&amp;#34;:&amp;#34;&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Mid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">n1&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;,&amp;#34;&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">n1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">If&lt;/span> &lt;span class="n">n2&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">n1&lt;/span> &lt;span class="n">Then&lt;/span> &lt;span class="s1">&amp;#39;Exception the type &amp;#39;&lt;/span>&lt;span class="n">Article&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Mid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">n1&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="s2">&amp;#34;}&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">n1&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">If&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">array_RefTitle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Mid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n2&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">n1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fieldCode&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Mid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n2&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fieldCode&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">n2&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Loop&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Titles_in_Cit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">i&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Number array with References shown in PlainCit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Numer is equal or less than Titels, depending on the type&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;[3], [8]-[10]; [2]-[4]; [2], [4], [5]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; All citations have to be in Brackets each! [3], [8] not [3, 8]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; This doesnt work otherwise!&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; --&amp;gt; treatment of other delimiters could be implemented here&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">RefNumber&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Do&lt;/span> &lt;span class="n">While&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plain_Cit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;]&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">Or&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plain_Cit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;[&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plain_Cit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;[&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">InStr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plain_Cit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;]&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">RefNumber&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Mid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plain_Cit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n1&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n2&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">n1&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">plain_Cit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Mid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plain_Cit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n2&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plain_Cit&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">n2&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Loop&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Refs_in_Cit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">i&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;treat only the shown references (skip the rest)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;[3], [8]-[10] --&amp;gt; skip [9]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Order of titles given from fieldcode, not checked!&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">If&lt;/span> &lt;span class="n">Titles_in_Cit&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">Refs_in_Cit&lt;/span> &lt;span class="n">Then&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">array_RefTitle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Refs_in_Cit&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">array_RefTitle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Titles_in_Cit&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Do&lt;/span> &lt;span class="n">While&lt;/span> &lt;span class="n">Refs_in_Cit&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">Titles_in_Cit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">array_RefTitle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Refs_in_Cit&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Loop&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">If&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;#############&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Make the links&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">For&lt;/span> &lt;span class="n">Refs&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="n">To&lt;/span> &lt;span class="n">Refs_in_Cit&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="n">Step&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">title&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">array_RefTitle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Refs&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">array_RefTitle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Refs&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; make title a valid bookmark name&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">titleAnchor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">title&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">titleAnchor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">MakeValidBMName&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">titleAnchor&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ActiveWindow&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">View&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ShowFieldCodes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">GoTo&lt;/span> &lt;span class="n">What&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wdGoToBookmark&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Zotero_Bibliography&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span> &lt;span class="n">locate&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">corresponding&lt;/span> &lt;span class="n">reference&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">bibliography&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span> &lt;span class="n">by&lt;/span> &lt;span class="n">searching&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">its&lt;/span> &lt;span class="n">title&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Find&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ClearFormatting&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">With&lt;/span> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Find&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Text&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Left&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">255&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Replacement&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Text&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Forward&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Wrap&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wdFindContinue&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Format&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchCase&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchWholeWord&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchWildcards&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchSoundsLike&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchAllWordForms&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">With&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Find&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Execute&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; select the whole caption (for mouseover tooltip)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">MoveStartUntil&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;[&amp;#34;&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">Count&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wdBackward&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">MoveEndUntil&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">vbBack&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lnkcap&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;[&amp;#34;&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Text&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">lnkcap&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Left&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">lnkcap&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">70&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; add bookmark for the reference within the bibliography&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Shrink&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">With&lt;/span> &lt;span class="n">ActiveDocument&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Bookmarks&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Add&lt;/span> &lt;span class="ne">Range&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Range&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">titleAnchor&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">DefaultSorting&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wdSortByName&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">ShowHidden&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">With&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; jump back to the field&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">aField&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Select&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; find and select the numeric part of the field which will become the hyperlink&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Find&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ClearFormatting&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">With&lt;/span> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Find&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Text&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">RefNumber&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Refs&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Replacement&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Text&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Forward&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">True&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Wrap&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wdFindContinue&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Format&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchCase&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchWholeWord&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchWildcards&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchSoundsLike&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">MatchAllWordForms&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">With&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Find&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Execute&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">numOrYear&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Range&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Text&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; store current style这一行如果不注释可能会存在格式变化&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; style = Selection.style&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; Generate the Hyperlink --&amp;gt;Forward!&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ActiveDocument&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Hyperlinks&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Add&lt;/span> &lt;span class="n">anchor&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Range&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Address&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">SubAddress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">titleAnchor&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ScreenTip&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">lnkcap&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">TextToDisplay&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">numOrYear&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; reset the style这一行如果不注释可能会存在格式变化&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; Selection.style = style&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; comment if you want standard link style&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">aField&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Select&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">With&lt;/span> &lt;span class="n">Selection&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Font&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Underline&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wdUnderlineNone&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">Color&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wdColorBlack&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">With&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Next&lt;/span> &lt;span class="n">Refs&lt;/span> &lt;span class="s1">&amp;#39;References in Cit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">If&lt;/span> &lt;span class="s1">&amp;#39;If Zotero-Field&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;#########################&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Next&lt;/span> &lt;span class="n">aField&lt;/span> &lt;span class="s1">&amp;#39; next field&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39; go back to original range selected&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ActiveWindow&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">View&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ShowFieldCodes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">False&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ActiveDocument&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">nStart&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">nEnd&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Select&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">Sub&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Function&lt;/span> &lt;span class="n">MakeValidBMName&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">strIn&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">pFirstChr&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="n">Long&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Dim&lt;/span> &lt;span class="n">tempStr&lt;/span> &lt;span class="n">As&lt;/span> &lt;span class="ne">String&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">strIn&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Trim&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">strIn&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pFirstChr&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Left&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">strIn&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">If&lt;/span> &lt;span class="n">Not&lt;/span> &lt;span class="n">pFirstChr&lt;/span> &lt;span class="n">Like&lt;/span> &lt;span class="s2">&amp;#34;[A-Za-z]&amp;#34;&lt;/span> &lt;span class="n">Then&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">strIn&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;A_&amp;#34;&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">strIn&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">If&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">For&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="n">To&lt;/span> &lt;span class="n">Len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">strIn&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Select&lt;/span> &lt;span class="n">Case&lt;/span> &lt;span class="n">Asc&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Mid&lt;/span>&lt;span class="o">$&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">strIn&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Case&lt;/span> &lt;span class="mi">49&lt;/span> &lt;span class="n">To&lt;/span> &lt;span class="mi">57&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">65&lt;/span> &lt;span class="n">To&lt;/span> &lt;span class="mi">90&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">97&lt;/span> &lt;span class="n">To&lt;/span> &lt;span class="mi">122&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tempStr&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tempStr&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">Mid&lt;/span>&lt;span class="o">$&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">strIn&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Case&lt;/span> &lt;span class="n">Else&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tempStr&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tempStr&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="s2">&amp;#34;_&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">Select&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Next&lt;/span> &lt;span class="n">i&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tempStr&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Replace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tempStr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MakeValidBMName&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Left&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tempStr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">40&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">End&lt;/span> &lt;span class="n">Function&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="4">
&lt;li>Ctrl+s 保存，左下角重命名为 ZoteroLinkCitation，关闭页面，并关闭 Word

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232116706.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232116706.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>重命名宏&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232116706.png" alt="重命名宏" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232116706.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232116706.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232116706.png?size=large 2x" data-title="重命名宏" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">重命名宏&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;li>重新打开 Word -&amp;gt; 视图 -&amp;gt; 宏，选择&lt;code>ZoteroLinkCitation&lt;/code>，点击运行即可

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232119280.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232119280.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>运行宏ZoteroLinkCitation&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232119280.png" alt="运行宏ZoteroLinkCitation" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232119280.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232119280.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202404232119280.png?size=large 2x" data-title="运行宏ZoteroLinkCitation" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">运行宏ZoteroLinkCitation&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ol></description></item><item><title>Ubuntu 22.04 LTS 64位系统安装 clang10 版本</title><link>https://www.haoyep.com/posts/ubuntu22-install-clang10/</link><pubDate>Sun, 07 Jan 2024 15:44:57 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/ubuntu22-install-clang10/</guid><category domain="https://www.haoyep.com/categories/linux/">Linux</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171430419.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>本文记录了Ubuntu 22.04 LTS 64位系统安装 clang10 版本的过程。&lt;/p>
&lt;h2 id="安装-clang10" class="heading-element">&lt;span>1 安装 clang10&lt;/span>
 &lt;a href="#%e5%ae%89%e8%a3%85-clang10" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;ol>
&lt;li>编辑 apt 源文件。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo nano /etc/apt/sources.list&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>添加以下内容：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># clang 9/10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># i386 not available&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">deb&lt;/span> &lt;span class="n">http&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">apt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">llvm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="n">llvm&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">toolchain&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">focal&lt;/span> &lt;span class="n">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">deb&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">src&lt;/span> &lt;span class="n">http&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">apt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">llvm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="n">llvm&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">toolchain&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">focal&lt;/span> &lt;span class="n">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">deb&lt;/span> &lt;span class="n">http&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">apt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">llvm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="n">llvm&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">toolchain&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="n">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">deb&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">src&lt;/span> &lt;span class="n">http&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">apt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">llvm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="n">llvm&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">toolchain&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="n">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">deb&lt;/span> &lt;span class="n">http&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">apt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">llvm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="n">llvm&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">toolchain&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="n">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">deb&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">src&lt;/span> &lt;span class="n">http&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">apt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">llvm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="n">llvm&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">toolchain&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">focal&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="n">main&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171506785.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171506785.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>添加clang9/10源&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171506785.png" alt="添加clang9/10源" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171506785.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171506785.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171506785.png?size=large 2x" data-title="添加clang9/10源" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">添加clang9/10源&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;ol start="2">
&lt;li>安装 clang10&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 先添加key&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key &lt;span class="p">|&lt;/span> sudo apt-key add -
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 更新源&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 安装 clang10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt-get install clang-10 llvm-10-dev llvm-10-tools -y&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="切换默认命令版本" class="heading-element">&lt;span>2 切换默认命令版本&lt;/span>
 &lt;a href="#%e5%88%87%e6%8d%a2%e9%bb%98%e8%ae%a4%e5%91%bd%e4%bb%a4%e7%89%88%e6%9c%ac" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>安装完成后，默认的命令是&lt;code>clang-10&lt;/code>和&lt;code>clang++-10&lt;/code>，需要使用&lt;code>update-alternatives&lt;/code>来设置成&lt;code>clang&lt;/code>和&lt;code>clang++&lt;/code>。&lt;/p>
&lt;p>首先查看当前 clang 默认版本：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">clang --version&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如图，当前版本是 clang14

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507177.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507177.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>clang 默认版本输出&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507177.png" alt="clang 默认版本输出" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507177.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507177.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507177.png?size=large 2x" data-title="clang 默认版本输出" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">clang 默认版本输出&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="切换成-clang10" class="heading-element">&lt;span>2.1 切换成 clang10&lt;/span>
 &lt;a href="#%e5%88%87%e6%8d%a2%e6%88%90-clang10" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-10 &lt;span class="m">1&lt;/span> --slave /usr/bin/clang++ clang++ /usr/bin/clang++-10&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507032.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507032.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>切换成 clang10&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507032.png" alt="切换成 clang10" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507032.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507032.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171507032.png?size=large 2x" data-title="切换成 clang10" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">切换成 clang10&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="恢复原有的-clang-版本" class="heading-element">&lt;span>2.2 恢复原有的 clang 版本&lt;/span>
 &lt;a href="#%e6%81%a2%e5%a4%8d%e5%8e%9f%e6%9c%89%e7%9a%84-clang-%e7%89%88%e6%9c%ac" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>这里也给出切换回 clang14的命令：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 &lt;span class="m">2&lt;/span> --slave /usr/bin/clang++ clang++ /usr/bin/clang++-14&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>zsh 安装与配置，使用 oh-my-zsh 美化终端</title><link>https://www.haoyep.com/posts/zsh-config-oh-my-zsh/</link><pubDate>Tue, 02 Jan 2024 23:30:39 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/zsh-config-oh-my-zsh/</guid><category domain="https://www.haoyep.com/categories/%E6%8A%80%E6%9C%AF/">技术</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171434163.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>传统的 bash 功能比较简陋，且不美观。本文基于 Ubuntu22.04 LTS 系统，安装 zsh，并使用 oh-my-zsh 对终端进行美化。Oh My Zsh 是基于 zsh 命令行的一个扩展工具集，提供了丰富的扩展功能。&lt;/p>
&lt;h2 id="环境配置" class="heading-element">&lt;span>1 环境配置&lt;/span>
 &lt;a href="#%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="安装基本工具" class="heading-element">&lt;span>1.1 安装基本工具&lt;/span>
 &lt;a href="#%e5%ae%89%e8%a3%85%e5%9f%ba%e6%9c%ac%e5%b7%a5%e5%85%b7" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;div class="highlight" title="安装基本工具">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 更新软件源&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt update &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> sudo apt upgrade -y
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 安装 zsh git curl&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt install zsh git curl -y&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>设置默认终端为 zsh（&lt;strong>注意：不要使用 sudo&lt;/strong>）。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">chsh -s /bin/zsh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="安装-oh-my-zsh" class="heading-element">&lt;span>1.2 安装 oh-my-zsh&lt;/span>
 &lt;a href="#%e5%ae%89%e8%a3%85-oh-my-zsh" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>官网：&lt;a href="http://ohmyz.sh/"target="_blank" rel="external nofollow noopener noreferrer">http://ohmyz.sh/&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>。
安装方式任选一个即可。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Method&lt;/th>
 &lt;th style="text-align: left">Command&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>curl&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">&lt;code>sh -c &amp;quot;$(curl -fsSL https://install.ohmyz.sh/)&amp;quot;&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>wget&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">&lt;code>sh -c &amp;quot;$(wget -O- https://install.ohmyz.sh/)&amp;quot;&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>fetch&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">&lt;code>sh -c &amp;quot;$(fetch -o - https://install.ohmyz.sh/)&amp;quot;&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">国内curl&lt;a href="https://gitee.com/pocmon/ohmyzsh"target="_blank" rel="external nofollow noopener noreferrer">镜像&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;code>sh -c &amp;quot;$(curl -fsSL https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)&amp;quot;&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">国内wget&lt;a href="https://gitee.com/pocmon/ohmyzsh"target="_blank" rel="external nofollow noopener noreferrer">镜像&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;code>sh -c &amp;quot;$(wget -O- https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)&amp;quot;&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>注意：同意使用 Oh-my-zsh 的配置模板覆盖已有的 &lt;code>.zshrc&lt;/code>。&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012224221.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012224221.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>安装 oh-my-zsh&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012224221.png" alt="安装 oh-my-zsh" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012224221.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012224221.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012224221.png?size=large 2x" data-title="安装 oh-my-zsh" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">安装 oh-my-zsh&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="从bashrc中迁移配置可选" class="heading-element">&lt;span>1.3 从&lt;code>.bashrc&lt;/code>中迁移配置（可选）&lt;/span>
 &lt;a href="#%e4%bb%8ebashrc%e4%b8%ad%e8%bf%81%e7%a7%bb%e9%85%8d%e7%bd%ae%e5%8f%af%e9%80%89" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>如果之前在使用&lt;code>bash&lt;/code>时自定义了一些环境变量、别名等，那么在切换到&lt;code>zsh&lt;/code>后，你需要手动迁移这些自定义配置。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 查看bash配置文件，并手动复制自定义配置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cat ~/.bashrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 编辑zsh配置文件，并粘贴自定义配置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">nano ~/.zshrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 启动新的zsh配置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> ~/.zshrc&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>root&lt;/code>用户在执行&lt;code>sudo su&lt;/code>命令后，再运行上述代码查看、手动复制、粘贴自定义配置。&lt;/p>
&lt;h2 id="配置主题" class="heading-element">&lt;span>2 配置主题&lt;/span>
 &lt;a href="#%e9%85%8d%e7%bd%ae%e4%b8%bb%e9%a2%98" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="自定义主题" class="heading-element">&lt;span>2.1 自定义主题&lt;/span>
 &lt;a href="#%e8%87%aa%e5%ae%9a%e4%b9%89%e4%b8%bb%e9%a2%98" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo wget -O &lt;span class="nv">$ZSH_CUSTOM&lt;/span>/themes/haoomz.zsh-theme https://cdn.haoyep.com/gh/leegical/Blog_img/zsh/haoomz.zsh-theme&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>编辑 &lt;code>~/.zshrc&lt;/code> 文件，将 &lt;code>ZSH_THEME&lt;/code> 设为 &lt;code>haoomz&lt;/code>。当然你也可以设置为其他主题，例如&lt;code>lukerandall&lt;/code>、&lt;code>robbyrussell&lt;/code>。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">nano ~/.zshrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ZSH_THEME&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;haoomz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> ~/.zshrc&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012235958.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012235958.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>设置ZSH_THEME&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012235958.png" alt="设置ZSH_THEME" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012235958.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012235958.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012235958.png?size=large 2x" data-title="设置ZSH_THEME" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">设置ZSH_THEME&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>效果如下（&lt;code>robbyrussell&lt;/code> → &lt;code>haoomz&lt;/code>）：&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012238625.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012238625.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>haoomz主题&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012238625.png" alt="haoomz主题" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012238625.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012238625.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012238625.png?size=large 2x" data-title="haoomz主题" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">haoomz主题&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="推荐主题" class="heading-element">&lt;span>2.2 推荐主题&lt;/span>
 &lt;a href="#%e6%8e%a8%e8%8d%90%e4%b8%bb%e9%a2%98" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>你可以在&lt;a href="https://github.com/ohmyzsh/ohmyzsh/wiki/Themes"target="_blank" rel="external nofollow noopener noreferrer">内置主题样式截图&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>中查看所有 zsh 内置的主题样式和对应的主题名。这些内置主题已经放在 ～/.oh-my-zsh/themes 目录下，不需要再下载。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ~/.oh-my-zsh/themes &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> ls&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012242407.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012242407.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>zsh 内置的主题样式&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012242407.png" alt="zsh 内置的主题样式" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012242407.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012242407.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012242407.png?size=large 2x" data-title="zsh 内置的主题样式" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">zsh 内置的主题样式&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h4 id="powerlevel10k" class="heading-element">&lt;span>2.2.1 powerlevel10k&lt;/span>
 &lt;a href="#powerlevel10k" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>根据 &lt;a href="https://www.slant.co/topics/7553/~theme-for-oh-my-zsh"target="_blank" rel="external nofollow noopener noreferrer">What&amp;rsquo;s the best theme for Oh My Zsh?&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 中的排名，以及自定义化、美观程度，强烈建议使用 &lt;a href="https://github.com/romkatv/powerlevel10k"target="_blank" rel="external nofollow noopener noreferrer">powerlevel10k&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 主题。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone --depth&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span> https://github.com/romkatv/powerlevel10k.git &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="p">/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/themes/powerlevel10k
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 中国用户可以使用 gitee.com 上的官方镜像加速下载&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone --depth&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span> https://gitee.com/romkatv/powerlevel10k.git &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="nv">$HOME&lt;/span>&lt;span class="p">/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/themes/powerlevel10k&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在 &lt;code>~/.zshrc&lt;/code> 设置 &lt;code>ZSH_THEME=&amp;quot;powerlevel10k/powerlevel10k&amp;quot;&lt;/code>。接下来，终端会自动引导你配置 &lt;code>powerlevel10k&lt;/code>。&lt;/p>
&lt;h2 id="安装插件" class="heading-element">&lt;span>3 安装插件&lt;/span>
 &lt;a href="#%e5%ae%89%e8%a3%85%e6%8f%92%e4%bb%b6" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>&lt;code>oh-my-zsh&lt;/code> 已经内置了 &lt;code>git&lt;/code> 插件，内置插件可以在 &lt;code>～/.oh-my-zsh/plugins&lt;/code> 中查看，下面介绍一下我常用的插件，更多插件可以在 &lt;a href="https://github.com/unixorn/awesome-zsh-plugins"target="_blank" rel="external nofollow noopener noreferrer">awesome-zsh-plugins&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 里查看。&lt;/p>
&lt;h3 id="插件推荐" class="heading-element">&lt;span>3.1 插件推荐&lt;/span>
 &lt;a href="#%e6%8f%92%e4%bb%b6%e6%8e%a8%e8%8d%90" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;h4 id="zsh--autosuggestions" class="heading-element">&lt;span>3.1.1 zsh -autosuggestions&lt;/span>
 &lt;a href="#zsh--autosuggestions" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>&lt;a href="https://github.com/zsh-users/zsh-autosuggestions"target="_blank" rel="external nofollow noopener noreferrer">zsh-autosuggestions&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 是一个命令提示插件，当你输入命令时，会自动推测你可能需要输入的命令，按下右键可以快速采用建议。效果如下：&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012250028.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012250028.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>zsh-autosuggestions自动补全&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012250028.png" alt="zsh-autosuggestions自动补全" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012250028.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012250028.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012250028.png?size=large 2x" data-title="zsh-autosuggestions自动补全" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">zsh-autosuggestions自动补全&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>安装方式：把插件下载到本地的 &lt;code>~/.oh-my-zsh/custom/plugins&lt;/code> 目录。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone https://github.com/zsh-users/zsh-autosuggestions &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="p">~/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/plugins/zsh-autosuggestions
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 中国用户可以使用下面任意一个加速下载&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 加速1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone https://github.moeyy.xyz/https://github.com/zsh-users/zsh-autosuggestions &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="p">~/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/plugins/zsh-autosuggestions
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 加速2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone https://gh.xmly.dev/https://github.com/zsh-users/zsh-autosuggestions &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="p">~/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/plugins/zsh-autosuggestions
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 加速3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone https://gh.api.99988866.xyz/https://github.com/zsh-users/zsh-autosuggestions &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="p">~/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/plugins/zsh-autosuggestions&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="zsh-syntax-highlighting" class="heading-element">&lt;span>3.1.2 zsh-syntax-highlighting&lt;/span>
 &lt;a href="#zsh-syntax-highlighting" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>&lt;a href="https://github.com/zsh-users/zsh-syntax-highlighting"target="_blank" rel="external nofollow noopener noreferrer">zsh-syntax-highlighting&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 是一个命令语法校验插件，在输入命令的过程中，若指令不合法，则指令显示为红色，若指令合法就会显示为绿色。效果如下：&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012252786.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012252786.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>命令语法校验&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012252786.png" alt="命令语法校验" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012252786.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012252786.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012252786.png?size=large 2x" data-title="命令语法校验" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">命令语法校验&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>安装方式：把插件下载到本地的 &lt;code>~/.oh-my-zsh/custom/plugins&lt;/code> 目录。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone https://github.com/zsh-users/zsh-syntax-highlighting.git &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="p">~/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/plugins/zsh-syntax-highlighting
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 中国用户可以使用下面任意一个加速下载&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 加速1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone https://github.moeyy.xyz/https://github.com/zsh-users/zsh-syntax-highlighting.git &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="p">~/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/plugins/zsh-syntax-highlighting
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 加速2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone https://gh.xmly.dev/https://github.com/zsh-users/zsh-syntax-highlighting.git &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="p">~/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/plugins/zsh-syntax-highlighting
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 加速3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone https://gh.api.99988866.xyz/https://github.com/zsh-users/zsh-syntax-highlighting.git &lt;span class="si">${&lt;/span>&lt;span class="nv">ZSH_CUSTOM&lt;/span>&lt;span class="k">:-&lt;/span>&lt;span class="p">~/.oh-my-zsh/custom&lt;/span>&lt;span class="si">}&lt;/span>/plugins/zsh-syntax-highlighting&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="z" class="heading-element">&lt;span>3.1.3 z&lt;/span>
 &lt;a href="#z" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>&lt;code>oh-my-zsh&lt;/code> 内置了 &lt;code>z&lt;/code> 插件。&lt;code>z&lt;/code> 是一个文件夹快捷跳转插件，对于曾经跳转过的目录，只需要输入最终目标文件夹名称，就可以快速跳转，避免再输入长串路径，提高切换文件夹的效率。效果如下：&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012254065.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012254065.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>使用z跳转目录&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012254065.png" alt="使用z跳转目录" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012254065.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012254065.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012254065.png?size=large 2x" data-title="使用z跳转目录" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">使用z跳转目录&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h4 id="extract" class="heading-element">&lt;span>3.1.4 extract&lt;/span>
 &lt;a href="#extract" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>&lt;code>oh-my-zsh&lt;/code> 内置了 &lt;code>extract&lt;/code> 插件。&lt;code>extract&lt;/code> 用于解压任何压缩文件，不必根据压缩文件的后缀名来记忆压缩软件。使用 &lt;code>x&lt;/code> 命令即可解压文件，效果如下：&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012259966.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012259966.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>extract 解压&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012259966.png" alt="extract 解压" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012259966.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012259966.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012259966.png?size=large 2x" data-title="extract 解压" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">extract 解压&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h4 id="web-search" class="heading-element">&lt;span>3.1.5 web-search&lt;/span>
 &lt;a href="#web-search" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>oh-my-zsh 内置了 &lt;code>web-search&lt;/code> 插件。&lt;code>web-search&lt;/code> 能让我们在命令行中使用搜索引擎进行搜索。使用&lt;code>搜索引擎关键字+搜索内容&lt;/code> 即可自动打开浏览器进行搜索。效果如下：&lt;/p>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012302476.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012302476.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>web-search搜索&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012302476.png" alt="web-search搜索" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012302476.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012302476.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012302476.png?size=large 2x" data-title="web-search搜索" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">web-search搜索&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;div class="alert alert-important">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M0 1.75C0 .784.784.0 1.75.0h12.5C15.216.0 16 .784 16 1.75v9.5A1.75 1.75.0 0114.25 13H8.06l-2.573 2.573A1.458 1.458.0 013 14.543V13H1.75A1.75 1.75.0 010 11.25zm1.75-.25a.25.25.0 00-.25.25v9.5c0 .138.112.25.25.25h2a.75.75.0 01.75.75v2.19l2.72-2.72a.749.749.0 01.53-.22h6.5a.25.25.0 00.25-.25v-9.5a.25.25.0 00-.25-.25zm7 2.25v2.5a.75.75.0 01-1.5.0v-2.5a.75.75.0 011.5.0zM9 9A1 1 0 117 9a1 1 0 012 0z"/>&lt;/svg>重要&lt;/p>&lt;p>最后，记得&lt;a href="#%e5%90%af%e7%94%a8%e6%8f%92%e4%bb%b6">启用所有插件&lt;/a>。&lt;/p>
&lt;/div>&lt;h3 id="启用插件" class="heading-element">&lt;span>3.2 启用插件&lt;/span>
 &lt;a href="#%e5%90%af%e7%94%a8%e6%8f%92%e4%bb%b6" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>修改&lt;code>~/.zshrc&lt;/code>中插件列表为：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">plugins&lt;/span>&lt;span class="o">=(&lt;/span>git zsh-autosuggestions zsh-syntax-highlighting z extract web-search&lt;span class="o">)&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012304774.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012304774.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>zsh插件列表&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012304774.png" alt="zsh插件列表" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012304774.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012304774.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012304774.png?size=large 2x" data-title="zsh插件列表" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">zsh插件列表&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;div class="alert alert-tip">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M8 1.5c-2.363.0-4 1.69-4 3.75.0.984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75.0 01-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456.0 00-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863.0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751.0 01-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304.0-2.06-1.637-3.75-4-3.75zM5.75 12h4.5a.75.75.0 010 1.5h-4.5a.75.75.0 010-1.5zM6 15.25a.75.75.0 01.75-.75h2.5a.75.75.0 010 1.5h-2.5A.75.75.0 016 15.25z"/>&lt;/svg>提示&lt;/p>&lt;p>部分插件需要参考&lt;a href="#%e6%8f%92%e4%bb%b6%e4%bb%8b%e7%bb%8d">插件介绍&lt;/a>进行安装。&lt;/p>
&lt;/div>&lt;p>开启新的 Shell 或执行 &lt;code>source ~/.zshrc&lt;/code>，就可以开始体验插件。&lt;/p>
&lt;h2 id="tips" class="heading-element">&lt;span>4 Tips&lt;/span>
 &lt;a href="#tips" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="root-用户" class="heading-element">&lt;span>4.1 root 用户&lt;/span>
 &lt;a href="#root-%e7%94%a8%e6%88%b7" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>当你配置好登陆用户的 zsh 后，如果使用&lt;code>sudo su&lt;/code>命令进入&lt;code>root&lt;/code>用户的终端，发现还是默认的&lt;code>bash&lt;/code>。建议在&lt;code>root&lt;/code>用户的终端下，也安装&lt;code>on my zsh&lt;/code>，设置与普通用户不同的主题以便区分，插件可以使用一样的。
&lt;code>root&lt;/code>用户的&lt;code>~/.zshrc&lt;/code>配置，仅供参考：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ZSH_THEME&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;ys&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">plugins&lt;/span>&lt;span class="o">=(&lt;/span>git zsh-autosuggestions zsh-syntax-highlighting z extract web-search&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 或&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">plugins&lt;/span>&lt;span class="o">=(&lt;/span>git colored-man-pages colorize cp man command-not-found sudo suse ubuntu archlinux zsh-navigation-tools z extract history-substring-search python zsh-autosuggestions zsh-syntax-highlighting&lt;span class="o">)&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="配置本地代理" class="heading-element">&lt;span>4.2 配置本地代理&lt;/span>
 &lt;a href="#%e9%85%8d%e7%bd%ae%e6%9c%ac%e5%9c%b0%e4%bb%a3%e7%90%86" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>如果你配置了本地代理，并希望终端的 git 等命令使用代理，那么可以在&lt;code>~/.zshrc&lt;/code>中添加：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 为 curl wget git 等设置代理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">proxy &lt;span class="o">()&lt;/span> &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">export&lt;/span> &lt;span class="nv">ALL_PROXY&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;socks5://127.0.0.1:1089&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">export&lt;/span> &lt;span class="nv">all_proxy&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;socks5://127.0.0.1:1089&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 取消代理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">unproxy &lt;span class="o">()&lt;/span> &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">unset&lt;/span> ALL_PROXY
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">unset&lt;/span> all_proxy
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="alert alert-tip">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M8 1.5c-2.363.0-4 1.69-4 3.75.0.984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75.0 01-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456.0 00-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863.0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751.0 01-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304.0-2.06-1.637-3.75-4-3.75zM5.75 12h4.5a.75.75.0 010 1.5h-4.5a.75.75.0 010-1.5zM6 15.25a.75.75.0 01.75-.75h2.5a.75.75.0 010 1.5h-2.5A.75.75.0 016 15.25z"/>&lt;/svg>提示&lt;/p>&lt;p>这里假设本地代理的端口是&lt;code>1089&lt;/code>。&lt;/p>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012307093.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012307093.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>使用本地代理命令&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012307093.png" alt="使用本地代理命令" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012307093.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012307093.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401012307093.png?size=large 2x" data-title="使用本地代理命令" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">使用本地代理命令&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>以后在使用 &lt;code>git&lt;/code> 等命令之前，只需要在终端中输入 &lt;code>proxy&lt;/code> 命令，即可使用本地代理。&lt;/p>
&lt;h4 id="wsl-配置本地代理" class="heading-element">&lt;span>4.2.1 WSL 配置本地代理&lt;/span>
 &lt;a href="#wsl-%e9%85%8d%e7%bd%ae%e6%9c%ac%e5%9c%b0%e4%bb%a3%e7%90%86" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-zsh" data-lang="zsh">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">host_ip&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">$(&lt;/span>cat /etc/resolv.conf &lt;span class="p">|&lt;/span>grep &lt;span class="s2">&amp;#34;nameserver&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span>cut -f &lt;span class="m">2&lt;/span> -d &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>&lt;span class="k">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 为 curl wget git npm apt 等设置代理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">proxy &lt;span class="o">()&lt;/span> &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">export&lt;/span> &lt;span class="nv">ALL_PROXY&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;http://&lt;/span>&lt;span class="nv">$host_ip&lt;/span>&lt;span class="s2">:10811&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">export&lt;/span> &lt;span class="nv">all_proxy&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;http://&lt;/span>&lt;span class="nv">$host_ip&lt;/span>&lt;span class="s2">:10811&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># echo -e &amp;#34;Acquire::http::Proxy \&amp;#34;http://$host_ip:10811\&amp;#34;;&amp;#34; | sudo tee -a /etc/apt/apt.conf &amp;gt; /dev/null&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># echo -e &amp;#34;Acquire::https::Proxy \&amp;#34;http://$host_ip:10811\&amp;#34;;&amp;#34; | sudo tee -a /etc/apt/apt.conf &amp;gt; /dev/null&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 取消代理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">unproxy &lt;span class="o">()&lt;/span> &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">unset&lt;/span> ALL_PROXY
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">unset&lt;/span> all_proxy
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># sudo sed -i -e &amp;#39;/Acquire::http::Proxy/d&amp;#39; /etc/apt/apt.conf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># sudo sed -i -e &amp;#39;/Acquire::https::Proxy/d&amp;#39; /etc/apt/apt.conf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="alert alert-note">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M0 8a8 8 0 1116 0A8 8 0 010 8zm8-6.5a6.5 6.5.0 100 13 6.5 6.5.0 000-13zM6.5 7.75A.75.75.0 017.25 7h1a.75.75.0 01.75.75v2.75h.25a.75.75.0 010 1.5h-2a.75.75.0 010-1.5h.25v-2h-.25a.75.75.0 01-.75-.75zM8 6a1 1 0 110-2 1 1 0 010 2z"/>&lt;/svg>注意&lt;/p>&lt;p>这里假设宿主机局域网 http 代理的端口是&lt;code>10811&lt;/code>。&lt;/p>
&lt;/div>&lt;h3 id="卸载-oh-my-zsh" class="heading-element">&lt;span>4.3 卸载 Oh My Zsh&lt;/span>
 &lt;a href="#%e5%8d%b8%e8%bd%bd-oh-my-zsh" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;ul>
&lt;li>终端输入 ：&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">uninstall_oh_my_zsh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Are you sure you want to remove Oh My Zsh? &lt;span class="o">[&lt;/span>y/N&lt;span class="o">]&lt;/span> Y&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>终端提示信息：&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">Removing ~/.oh-my-zsh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Looking &lt;span class="k">for&lt;/span> original zsh config...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Found ~/.zshrc.pre-oh-my-zsh -- Restoring to ~/.zshrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Found ~/.zshrc -- Renaming to ~/.zshrc.omz-uninstalled-20170820200007
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Your original zsh config was restored. Please restart your session.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Thanks &lt;span class="k">for&lt;/span> trying out Oh My Zsh. It&lt;span class="err">&amp;#39;&lt;/span>s been uninstalled.&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="手动更新-oh-my-zsh" class="heading-element">&lt;span>4.4 手动更新 Oh My Zsh&lt;/span>
 &lt;a href="#%e6%89%8b%e5%8a%a8%e6%9b%b4%e6%96%b0-oh-my-zsh" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Oh My Zsh&lt;/strong> 的自动更新提示误触关掉了解决办法&lt;/li>
&lt;li>打开终端输入：&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">upgrade_oh_my_zsh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Ubuntu 22.04 安装 AFL 及 qemu mode 实践</title><link>https://www.haoyep.com/posts/afl-install/</link><pubDate>Mon, 25 Dec 2023 21:24:00 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/afl-install/</guid><category domain="https://www.haoyep.com/categories/%E7%A7%91%E7%A0%94/">科研</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171443369.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>Ubuntu 22.04 LTS 64位系统安装 American Fuzzy Lop (AFL) 2.56b 踩坑记录，使用 QEMU mode 进行简单测试实践。&lt;/p>
&lt;h2 id="安装依赖" class="heading-element">&lt;span>1 安装依赖&lt;/span>
 &lt;a href="#%e5%ae%89%e8%a3%85%e4%be%9d%e8%b5%96" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt-get install -y cargo &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>						python2 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> cmake &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> g++ &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> git &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> bison &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> libz3-dev &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> ninja-build &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> python3-pip &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> zlib1g-dev
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip3 install lit&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="添加环境变量-path" class="heading-element">&lt;span>1.1 添加环境变量 Path&lt;/span>
 &lt;a href="#%e6%b7%bb%e5%8a%a0%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f-path" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>编辑终端配置文件。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"># bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo nano ~/.bashrc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># zsh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo nano ~/zshrc&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>添加环境变量：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">PATH&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">HOME&lt;/span>&lt;span class="si">}&lt;/span>/.local/bin:&lt;span class="si">${&lt;/span>&lt;span class="nv">PATH&lt;/span>&lt;span class="si">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401071608420.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401071608420.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>编辑Path变量&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401071608420.png" alt="编辑Path变量" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401071608420.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401071608420.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401071608420.png?size=large 2x" data-title="编辑Path变量" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">编辑Path变量&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>启用配置文件，&lt;strong>bash&lt;/strong> 使用&lt;code>source ~/.bashrc&lt;/code>；&lt;strong>zsh&lt;/strong> 使用&lt;code>~/.zshrc&lt;/code>。&lt;/p>
&lt;h3 id="设置-python" class="heading-element">&lt;span>1.2 设置 Python&lt;/span>
 &lt;a href="#%e8%ae%be%e7%bd%ae-python" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>AFL 使用的是 Python2，Ubuntu22.04 上没有安装。因此需要安装 Python2并将其设置为默认 Python。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo ln -s /usr/bin/python2 /usr/bin/python&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="安装-clang10" class="heading-element">&lt;span>1.3 安装 clang10&lt;/span>
 &lt;a href="#%e5%ae%89%e8%a3%85-clang10" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>参考此文章安装并设置 &lt;code>clang10&lt;/code> 为默认版本。&lt;/p>
&lt;a href="https://www.haoyep.com/posts/ubuntu22-install-clang10/" title="Ubuntu 22.04 LTS 64位系统安装 clang10 版本"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">Ubuntu 22.04 LTS 64位系统安装 clang10 版本&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://www.haoyep.com/posts/ubuntu22-install-clang10/&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a>
&lt;h2 id="安装-z3" class="heading-element">&lt;span>2 安装 Z3&lt;/span>
 &lt;a href="#%e5%ae%89%e8%a3%85-z3" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>要求版本号大于4.5&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone https://github.com/Z3Prover/z3.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> z3 &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> mkdir build &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> build
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cmake -G &lt;span class="s2">&amp;#34;Ninja&amp;#34;&lt;/span> ../
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ninja&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="details admonition warning open">
 &lt;div class="details-summary admonition-title">&lt;i class="icon fa-fw fa-solid fa-exclamation-triangle" aria-hidden="true">&lt;/i>Git Clone错误解决方案&lt;i class="details-icon fa-solid fa-angle-right fa-fw" aria-hidden="true">&lt;/i>&lt;/div>
 &lt;div class="details-content">
 &lt;div class="admonition-content">&lt;ul>
&lt;li>
&lt;p>&lt;strong>执行 git clone 报错&lt;/strong>：
&lt;code>fatal: unable to access ' https://github.com/Z3Prover/z3/ ': GnuTLS recv error (-110): The TLS connection was non-properly terminated.&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>解决方案&lt;/strong>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt-get update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt-get install gnutls-bin
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git config --global http.sslVerify &lt;span class="nb">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git config --global http.postBuffer &lt;span class="m">1048576000&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>到此问题解决，重新进行&lt;code>git clone&lt;/code>，可以顺畅下载。&lt;/p>
&lt;/div>
 &lt;/div>
&lt;/div>
&lt;h2 id="安装-afl" class="heading-element">&lt;span>3 安装 AFL&lt;/span>
 &lt;a href="#%e5%ae%89%e8%a3%85-afl" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone -b v2.56b https://github.com/google/AFL.git afl
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> afl &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> make&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132214349.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132214349.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>afl工具列表&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132214349.png" alt="afl工具列表" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132214349.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132214349.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132214349.png?size=large 2x" data-title="afl工具列表" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">afl工具列表&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="安装-qemu-模式" class="heading-element">&lt;span>3.1 安装 qemu 模式&lt;/span>
 &lt;a href="#%e5%ae%89%e8%a3%85-qemu-%e6%a8%a1%e5%bc%8f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>编译 qemu，支持二进制文件黑盒分析。&lt;/p>
&lt;h4 id="依赖环境" class="heading-element">&lt;span>3.1.1 依赖环境&lt;/span>
 &lt;a href="#%e4%be%9d%e8%b5%96%e7%8e%af%e5%a2%83" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>安装 libtool 等资源库&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt-get install libtool-bin libgtk2.0-dev -y&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="patch-代码" class="heading-element">&lt;span>3.1.2 patch 代码&lt;/span>
 &lt;a href="#patch-%e4%bb%a3%e7%a0%81" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>为了避免 &lt;a href="https://github.com/google/AFL/issues/41"target="_blank" rel="external nofollow noopener noreferrer">AFL/issues/41&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 中出现的&lt;code>error: ‘SIOCGSTAMP’ undeclared here (not in a function); did you mean ‘SIOCSRARP’?&lt;/code>、&lt;code>error: ‘SIOCGSTAMPNS’ undeclared here (not in a function); did you mean ‘SIOCGSTAMP_OLD’?&lt;/code>，需要修改为 &lt;a href="https://github.com/Mindavi/AFL/blob/6c917e3d63a2a0685d58c3518524f9615b001893/qemu_mode/patches/syscall.diff"target="_blank" rel="external nofollow noopener noreferrer">patch&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 中的文件内容。修改 &lt;code>afl/qemu_mode/patches&lt;/code>目录中的&lt;code>syscall.diff&lt;/code>文件内容如下：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;span class="lnt">82
&lt;/span>&lt;span class="lnt">83
&lt;/span>&lt;span class="lnt">84
&lt;/span>&lt;span class="lnt">85
&lt;/span>&lt;span class="lnt">86
&lt;/span>&lt;span class="lnt">87
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="o">---&lt;/span> &lt;span class="n">qemu&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">2.10&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">clean&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">linux&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">user&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">syscall&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c&lt;/span>	&lt;span class="mi">2020&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">03&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="mi">18&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">47&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mf">47.898592169&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">0100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+++&lt;/span> &lt;span class="n">qemu&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">2.10&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">linux&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">user&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">syscall&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c&lt;/span>	&lt;span class="mi">2020&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">03&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="mi">19&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">16&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mf">41.563074307&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">0100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">@@&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">34&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">34&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="err">@@&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#include &amp;lt;sys/resource.h&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#include &amp;lt;sys/swap.h&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#include &amp;lt;linux/capability.h&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>&lt;span class="c1">#include &amp;lt;linux/sockios.h&amp;gt; // https://lkml.org/lkml/2019/6/3/988&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#include &amp;lt;sched.h&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#include &amp;lt;sys/timex.h&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#ifdef __ia64__&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">@@&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">116&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">117&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="err">@@&lt;/span> &lt;span class="ne">int&lt;/span> &lt;span class="n">__clone2&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="ne">int&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">fn&lt;/span>&lt;span class="p">)(&lt;/span>&lt;span class="n">void&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">void&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">ch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#include &amp;#34;qemu.h&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>&lt;span class="n">extern&lt;/span> &lt;span class="n">unsigned&lt;/span> &lt;span class="ne">int&lt;/span> &lt;span class="n">afl_forksrv_pid&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#ifndef CLONE_IO&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#define CLONE_IO 0x80000000 /* Clone io context */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#endif&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">@@&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">256&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">259&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="err">@@&lt;/span> &lt;span class="k">static&lt;/span> &lt;span class="n">type&lt;/span> &lt;span class="n">name&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">type1&lt;/span> &lt;span class="n">arg1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">type2&lt;/span> &lt;span class="n">arg2&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#endif&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#ifdef __NR_gettid&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span>&lt;span class="n">_syscall0&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="ne">int&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">gettid&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+//&lt;/span> &lt;span class="n">taken&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">patchwork&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">patch&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">10862231&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>&lt;span class="c1">#define __NR_sys_gettid __NR_gettid&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>&lt;span class="n">_syscall0&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="ne">int&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sys_gettid&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#else&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">/*&lt;/span> &lt;span class="n">This&lt;/span> &lt;span class="n">is&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="n">replacement&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">host&lt;/span> &lt;span class="n">gettid&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">must&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="n">host&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">errno&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="o">*/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">@@&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">6219&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">6224&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="err">@@&lt;/span> &lt;span class="k">static&lt;/span> &lt;span class="n">void&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">clone_func&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">void&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">arg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpu&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ENV_GET_CPU&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">thread_cpu&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cpu&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">TaskState&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">cpu&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">opaque&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="n">info&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">tid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">gettid&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="n">taken&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">patchwork&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">patch&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">10862231&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="n">info&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">tid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sys_gettid&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">task_settid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ts&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">info&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">child_tidptr&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">put_user_u32&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">info&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">tid&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">info&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">child_tidptr&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">@@&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">6363&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">6369&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="err">@@&lt;/span> &lt;span class="k">static&lt;/span> &lt;span class="ne">int&lt;/span> &lt;span class="n">do_fork&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">CPUArchState&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">un&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mapping&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="n">We&lt;/span> &lt;span class="n">can&lt;/span>&lt;span class="s1">&amp;#39;t repeat the spinlock hack used above because&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">the&lt;/span> &lt;span class="n">child&lt;/span> &lt;span class="n">process&lt;/span> &lt;span class="n">gets&lt;/span> &lt;span class="n">its&lt;/span> &lt;span class="n">own&lt;/span> &lt;span class="n">copy&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">lock&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="o">*/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">flags&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">CLONE_CHILD_SETTID&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="n">put_user_u32&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">gettid&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="n">child_tidptr&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="n">taken&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">patchwork&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">patch&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">10862231&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="n">put_user_u32&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sys_gettid&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="n">child_tidptr&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">flags&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">CLONE_PARENT_SETTID&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="n">put_user_u32&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">gettid&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="n">parent_tidptr&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="n">taken&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">patchwork&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">patch&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">10862231&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="n">put_user_u32&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sys_gettid&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="n">parent_tidptr&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">TaskState&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">cpu&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">opaque&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">flags&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">CLONE_SETTLS&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpu_set_tls&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">newtls&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">@@&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">11402&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">11410&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="err">@@&lt;/span> &lt;span class="n">abi_long&lt;/span> &lt;span class="n">do_syscall&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">void&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">cpu_env&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="ne">int&lt;/span> &lt;span class="n">n&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#endif&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">case&lt;/span> &lt;span class="n">TARGET_NR_gettid&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="n">ret&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">get_errno&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">gettid&lt;/span>&lt;span class="p">());&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="n">taken&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">patchwork&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">kernel&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">org&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">patch&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">10862231&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="n">ret&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">get_errno&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sys_gettid&lt;/span>&lt;span class="p">());&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#ifdef TARGET_NR_readahead&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">case&lt;/span> &lt;span class="n">TARGET_NR_readahead&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">@@&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">11688&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">11697&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">20&lt;/span> &lt;span class="err">@@&lt;/span> &lt;span class="n">abi_long&lt;/span> &lt;span class="n">do_syscall&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">void&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">cpu_env&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="ne">int&lt;/span> &lt;span class="n">n&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">case&lt;/span> &lt;span class="n">TARGET_NR_tgkill&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="n">ret&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">get_errno&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">safe_tgkill&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="ne">int&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">arg1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ne">int&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">arg2&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="n">target_to_host_signal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">arg3&lt;/span>&lt;span class="p">)));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="ne">int&lt;/span> &lt;span class="n">pid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ne">int&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">arg1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="n">tgid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ne">int&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">arg2&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="n">sig&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ne">int&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">arg3&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="o">/*&lt;/span> &lt;span class="n">Not&lt;/span> &lt;span class="n">entirely&lt;/span> &lt;span class="n">sure&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">below&lt;/span> &lt;span class="n">is&lt;/span> &lt;span class="n">correct&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">all&lt;/span> &lt;span class="n">architectures&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="o">*/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="k">if&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">afl_forksrv_pid&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="n">afl_forksrv_pid&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">pid&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="n">sig&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">SIGABRT&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="n">pid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tgid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">getpid&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="n">ret&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">get_errno&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">safe_tgkill&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pid&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tgid&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target_to_host_signal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sig&lt;/span>&lt;span class="p">)));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#ifdef TARGET_NR_set_robust_list&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132314613.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132314613.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>替换syscall.diff文件内容&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132314613.png" alt="替换syscall.diff文件内容" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132314613.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132314613.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132314613.png?size=large 2x" data-title="替换syscall.diff文件内容" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">替换syscall.diff文件内容&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>在 &lt;code>afl/qemu_mode/patches&lt;/code>目录中新增&lt;code>memfd_create.diff&lt;/code>文件，内容如下：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">diff&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">ru&lt;/span> &lt;span class="n">qemu&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">2.10&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">clean&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">util&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">memfd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c&lt;/span> &lt;span class="n">qemu&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">2.10&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">util&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">memfd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">---&lt;/span> &lt;span class="n">qemu&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">2.10&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">clean&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">util&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">memfd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c&lt;/span> &lt;span class="mi">2018&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">11&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">20&lt;/span> &lt;span class="mi">18&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">11&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mf">00.170271506&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">0100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+++&lt;/span> &lt;span class="n">qemu&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">2.10&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">util&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">memfd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c&lt;/span> &lt;span class="mi">2018&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">11&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">20&lt;/span> &lt;span class="mi">18&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">11&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mf">13.398423613&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">0100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">@@&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">37&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">+&lt;/span>&lt;span class="mi">37&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="err">@@&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#include &amp;lt;sys/syscall.h&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#include &amp;lt;asm/unistd.h&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span>&lt;span class="k">static&lt;/span> &lt;span class="ne">int&lt;/span> &lt;span class="n">memfd_create&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">char&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">unsigned&lt;/span> &lt;span class="ne">int&lt;/span> &lt;span class="n">flags&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">+&lt;/span>&lt;span class="ne">int&lt;/span> &lt;span class="n">memfd_create&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">char&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">unsigned&lt;/span> &lt;span class="ne">int&lt;/span> &lt;span class="n">flags&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#ifdef __NR_memfd_create&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">syscall&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">__NR_memfd_create&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">name&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">flags&lt;/span>&lt;span class="p">);&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132253824.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132253824.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>新增memfd_create.diff文件&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132253824.png" alt="新增memfd_create.diff文件" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132253824.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132253824.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132253824.png?size=large 2x" data-title="新增memfd_create.diff文件" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">新增memfd_create.diff文件&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h4 id="修改脚本" class="heading-element">&lt;span>3.1.3 修改脚本&lt;/span>
 &lt;a href="#%e4%bf%ae%e6%94%b9%e8%84%9a%e6%9c%ac" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>修改&lt;code>build_qemu_support.sh&lt;/code>文件&lt;/p>
&lt;ol>
&lt;li>修改&lt;code>QEMU_URL&lt;/code>为&lt;code>QEMU_URL=&amp;quot;https://download.qemu.org/qemu-${VERSION}.tar.xz&amp;quot;&lt;/code>

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132254858.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132254858.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>修改QEMU_URL&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132254858.png" alt="修改QEMU_URL" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132254858.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132254858.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132254858.png?size=large 2x" data-title="修改QEMU_URL" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">修改QEMU_URL&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;li>在&lt;code>patch -p1 &amp;lt;../patches/syscall.diff || exit 1&lt;/code>的下一行添加&lt;code>patch -p1 &amp;lt;../patches/memfd_create.diff || exit 1&lt;/code>

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132255894.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132255894.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>添加memfd_create.diff patch命令&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132255894.png" alt="添加memfd_create.diff patch命令" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132255894.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132255894.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132255894.png?size=large 2x" data-title="添加memfd_create.diff patch命令" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">添加memfd_create.diff patch命令&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ol>
&lt;h4 id="编译及安装" class="heading-element">&lt;span>3.1.4 编译及安装&lt;/span>
 &lt;a href="#%e7%bc%96%e8%af%91%e5%8f%8a%e5%ae%89%e8%a3%85" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>在 afl 的根目录打开终端执行以下命令：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">cd qemu_mode
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./build_qemu_support.sh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cd ..
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo make install&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132316017.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132316017.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>afl编译成功示例&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132316017.png" alt="afl编译成功示例" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132316017.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132316017.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/md_img202312132316017.png?size=large 2x" data-title="afl编译成功示例" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">afl编译成功示例&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="运行-qemu-mode" class="heading-element">&lt;span>3.2 运行 qemu mode&lt;/span>
 &lt;a href="#%e8%bf%90%e8%a1%8c-qemu-mode" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>假设存在文件目录结构如下。其中&lt;code>in&lt;/code>文件夹中的&lt;code>a.in&lt;/code>文件是输入的初始种子，手动输入一个命令行参数进去即可。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./qemu-test/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── benchmark /* 要测试的程序二进制文件 */
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── in /* 输入文件夹，存储用户自定义的输入种子 */
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── a.in
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── out /* 输出文件夹，存储AFL探索到的测试用例 */&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>则使用以下命令运行 AFL qemu mode。稍等片刻，就可以看到 AFL 运行界面。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">afl-fuzz -i in/ -o out/ -Q ./benchmark&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/run-afl-qemu-mode.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/run-afl-qemu-mode.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>运行 qemu mode&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/run-afl-qemu-mode.png" alt="运行 qemu mode" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/run-afl-qemu-mode.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/run-afl-qemu-mode.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/run-afl-qemu-mode.png?size=large 2x" data-title="运行 qemu mode" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">运行 qemu mode&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h4 id="停止运行" class="heading-element">&lt;span>3.2.1 停止运行&lt;/span>
 &lt;a href="#%e5%81%9c%e6%ad%a2%e8%bf%90%e8%a1%8c" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h4>&lt;p>当&lt;code>cycles done&lt;/code>的数字变成绿色，说明 AFL 已找不到更有价值的路径。此时，就可以按下&lt;code>Ctrl+C&lt;/code>终止 AFL 运行。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312221256348.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312221256348.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>绿色，可以停止运行AFL&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312221256348.png" alt="绿色，可以停止运行AFL" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312221256348.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312221256348.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312221256348.png?size=large 2x" data-title="绿色，可以停止运行AFL" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">绿色，可以停止运行AFL&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="失败报错解决方案" class="heading-element">&lt;span>4 失败报错解决方案&lt;/span>
 &lt;a href="#%e5%a4%b1%e8%b4%a5%e6%8a%a5%e9%94%99%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="core_pattern" class="heading-element">&lt;span>4.1 core_pattern&lt;/span>
 &lt;a href="#core_pattern" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141514236.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141514236.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>core_pattern错误&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141514236.png" alt="core_pattern错误" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141514236.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141514236.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141514236.png?size=large 2x" data-title="core_pattern错误" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">core_pattern错误&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>参考 &lt;a href="https://stackoverflow.com/questions/35441062/afl-fuzzing-without-root-avoid-modifying-proc-sys-kernel-core-pattern"target="_blank" rel="external nofollow noopener noreferrer">AFL fuzzing without root - avoid modifying /proc/sys/kernel/core_pattern&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，这是因为 AFL 希望系统将 coredump 输出到文件，而不是上报给系统的处理程序。报错信息如下：
&lt;div class="details admonition failure open">
 &lt;div class="details-summary admonition-title">&lt;i class="icon fa-fw fa-solid fa-xmark" aria-hidden="true">&lt;/i>core dump报错&lt;i class="details-icon fa-solid fa-angle-right fa-fw" aria-hidden="true">&lt;/i>&lt;/div>
 &lt;div class="details-content">
 &lt;div class="admonition-content">&lt;p>[-] Hmm, your system is configured to send core dump notifications to an
external utility. This will cause issues: there will be an extended delay
between stumbling upon a crash and having this information relayed to the
fuzzer via the standard waitpid() API.&lt;/p>
&lt;pre>&lt;code>To avoid having crashes misinterpreted as timeouts, please log in as root
and temporarily modify /proc/sys/kernel/core_pattern, like so:

echo core &amp;gt;/proc/sys/kernel/core_pattern
&lt;/code>&lt;/pre>
&lt;p>[-] PROGRAM ABORT : Pipe at the beginning of &amp;lsquo;core_pattern&amp;rsquo;
Location : check_crash_handling(), afl-fuzz.c:7314&lt;/p>
&lt;/div>
 &lt;/div>
&lt;/div>&lt;/p>
&lt;p>解决方法有两种：&lt;/p>
&lt;ol>
&lt;li>添加环境变量，参考 &lt;a href="https://groups.google.com/g/afl-users/c/7arn66RyNfg/m/BsnOPViuCAAJ?pli=1"target="_blank" rel="external nofollow noopener noreferrer">Disabling the /proc/sys/kernel/core_pattern check&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="alert alert-note">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M0 8a8 8 0 1116 0A8 8 0 010 8zm8-6.5a6.5 6.5.0 100 13 6.5 6.5.0 000-13zM6.5 7.75A.75.75.0 017.25 7h1a.75.75.0 01.75.75v2.75h.25a.75.75.0 010 1.5h-2a.75.75.0 010-1.5h.25v-2h-.25a.75.75.0 01-.75-.75zM8 6a1 1 0 110-2 1 1 0 010 2z"/>&lt;/svg>注意&lt;/p>&lt;p>按照之前 &lt;a href="https://stackoverflow.com/questions/35441062/afl-fuzzing-without-root-avoid-modifying-proc-sys-kernel-core-pattern"target="_blank" rel="external nofollow noopener noreferrer">stackoverflow问题&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>中的评论，这个环境变量只是抑制了有关它的警告？使用此标志，AFL 将运行并且不会显示警告消息，并&lt;a href="https://github.com/google/fuzzer-test-suite/issues/60"target="_blank" rel="external nofollow noopener noreferrer">可能错过崩溃&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>。&lt;/p>
&lt;/div>&lt;ol start="2">
&lt;li>按照 AFL 提示修改文件&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo su
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> core &amp;gt;/proc/sys/kernel/core_pattern&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="cpu-frequency" class="heading-element">&lt;span>4.2 CPU frequency&lt;/span>
 &lt;a href="#cpu-frequency" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141515270.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141515270.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>CPU frequency错误&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141515270.png" alt="CPU frequency错误" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141515270.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141515270.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141515270.png?size=large 2x" data-title="CPU frequency错误" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">CPU frequency错误&lt;/figcaption>
 &lt;/figure>
报错信息如下：
&lt;div class="details admonition failure open">
 &lt;div class="details-summary admonition-title">&lt;i class="icon fa-fw fa-solid fa-xmark" aria-hidden="true">&lt;/i>core dump报错&lt;i class="details-icon fa-solid fa-angle-right fa-fw" aria-hidden="true">&lt;/i>&lt;/div>
 &lt;div class="details-content">
 &lt;div class="admonition-content">&lt;p>[-] Whoops, your system uses on-demand CPU frequency scaling, adjusted
between 781 and 1660 MHz. Unfortunately, the scaling algorithm in the
kernel is imperfect and can miss the short-lived processes spawned by
afl-fuzz. To keep things moving, run these commands as root:&lt;/p>
&lt;pre>&lt;code>cd /sys/devices/system/cpu
echo performance | tee cpu*/cpufreq/scaling_governor

You can later go back to the original state by replacing 'performance' with
'ondemand'. If you don't want to change the settings, set AFL_SKIP_CPUFREQ
to make afl-fuzz skip this check - but expect some performance drop.
&lt;/code>&lt;/pre>
&lt;p>[-] PROGRAM ABORT : Suboptimal CPU scaling governor
Location : check_cpu_governor(), afl-fuzz.c:7376&lt;/p>
&lt;/div>
 &lt;/div>
&lt;/div>
这是 CPU 频率未固定的错误提示，参考&lt;a href="http://www.cse.psu.edu/~gxt29/teaching/cs447s19/slides/06testingFuzzing.pdf"target="_blank" rel="external nofollow noopener noreferrer">这里&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，解决方案是引入环境变量：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">AFL_SKIP_CPUFREQ&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Github Pages 博客网站访问速度优化</title><link>https://www.haoyep.com/posts/optimize-github-pages-blog-access-speed/</link><pubDate>Sun, 17 Dec 2023 15:00:18 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/optimize-github-pages-blog-access-speed/</guid><category domain="https://www.haoyep.com/categories/blog/">blog</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171452357.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>个人博客访问速度优化记录。使用自定义域名、分流CDN等方法实现加快加载速度。&lt;/p>
&lt;p>使用 Github Pages 可以方便地搭建自己的静态网站，详细过程参考我的这篇文章。
&lt;a href="https://www.haoyep.com/posts/windows-hugo-blog-github/" title="使用 hugo 和 Github Pages 搭建个人博客"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">使用 hugo 和 Github Pages 搭建个人博客&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://www.haoyep.com/posts/windows-hugo-blog-github/&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a>&lt;/p>
&lt;p>但由于众所周知的原因，此方法搭建的博客在国内访问速度不佳。因此考虑采用一些方法来加速访问，主要思路是使用 CDN 加速网站的静态资源。&lt;/p>
&lt;p>对于不同的静态资源，加速方法分别如下：&lt;/p>
&lt;ol>
&lt;li>使用自定义域名，见&lt;a href="https://www.haoyep.com/posts/windows-hugo-blog-github/#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8D%9A%E5%AE%A2%E5%9F%9F%E5%90%8D"target="_blank" rel="external nofollow noopener noreferrer">个人 Github 博客设置自定义域名&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>；&lt;/li>
&lt;li>&lt;code>js/css&lt;/code>文件
&lt;ul>
&lt;li>&lt;del>使用&lt;code>jsdelivr&lt;/code> 和 &lt;code>unpkg&lt;/code> 进行 CDN 加速&lt;/del>，亲测使用自定义域名后，这两个 CDN 反而会降速。因此不需要单独对&lt;code>js/css&lt;/code>文件加速。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>托管在 Github 仓库上的&lt;a href="#%e5%9b%be%e7%89%87%e5%8a%a0%e9%80%9f">图床图片&lt;/a>。
&lt;ul>
&lt;li>本人博客上的图片都是使用 PicGo 上传到图床，图床是用 GitHub 仓库搭建的，见&lt;a href="https://www.haoyep.com/posts/github-graph-beds"target="_blank" rel="external nofollow noopener noreferrer">图床搭建过程&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 。为了加快 GitHub 文件访问速度，参考&lt;a href="https://www.haoyep.com/posts/github-graph-beds-cdn/"target="_blank" rel="external nofollow noopener noreferrer">通过 Cloudflare 和 jsDelivr 免费加速博客 GitHub 图床等静态资源&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>，通过自定义域名区分国内外请求，分配不同的 CDN 资源。最后，替换博客内所有 Github 文件链接即可。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152140943.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152140943.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>替换 Github 文件链接&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152140943.png" alt="替换 Github 文件链接" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152140943.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152140943.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152140943.png?size=large 2x" data-title="替换 Github 文件链接" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">替换 Github 文件链接&lt;/figcaption>
 &lt;/figure>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#%e5%8a%a0%e9%80%9f%e8%b0%b7%e6%ad%8c%e5%ad%97%e4%bd%93">加速谷歌字体&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%e5%8a%a0%e9%80%9f-avatar-%e5%a4%b4%e5%83%8f">加速 avatar 头像&lt;/a>&lt;/li>
&lt;/ol>
&lt;h2 id="图片加速" class="heading-element">&lt;span>1 图片加速&lt;/span>
 &lt;a href="#%e5%9b%be%e7%89%87%e5%8a%a0%e9%80%9f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>首先参考这篇文章，搭建加速域名。
&lt;a href="https://www.haoyep.com/posts/github-graph-beds-cdn/" title="通过 Cloudflare 和 jsDelivr 免费加速博客 GitHub 图床等静态资源"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">通过 Cloudflare 和 jsDelivr 免费加速博客 GitHub 图床等静态资源&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://www.haoyep.com/posts/github-graph-beds-cdn/&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a>&lt;/p>
&lt;p>对于要使用的图片，使用 PicGo 上传到 GitHub 图床，获取 CDN 加速链接。然后在配置文件中使用相应的链接即可。下面介绍几个配置中常见的图片。&lt;/p>
&lt;h3 id="网站图片" class="heading-element">&lt;span>1.1 网站图片&lt;/span>
 &lt;a href="#%e7%bd%91%e7%ab%99%e5%9b%be%e7%89%87" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 网站图片，用于 Open Graph 和 Twitter Cards&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">images&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/weblogo.png&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161421814.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161421814.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>网站图片，用于 Open Graph 和 Twitter Cards&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161421814.png" alt="网站图片，用于 Open Graph 和 Twitter Cards" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161421814.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161421814.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161421814.png?size=large 2x" data-title="网站图片，用于 Open Graph 和 Twitter Cards" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">网站图片，用于 Open Graph 和 Twitter Cards&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="网站图标" class="heading-element">&lt;span>1.2 网站图标&lt;/span>
 &lt;a href="#%e7%bd%91%e7%ab%99%e5%9b%be%e6%a0%87" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>配置：&lt;code>[params]&lt;/code>——&lt;code>[params.app]&lt;/code>。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 应用图标配置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">[&lt;/span>&lt;span class="nx">params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">app&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># 当添加到 iOS 主屏幕或者 Android 启动器时的标题，覆盖默认标题&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">title&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;Leehow&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># 是否隐藏网站图标资源链接&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">noFavicon&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># 更现代的 SVG 网站图标，可替代旧的 .png 和 .ico 文件&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">svgFavicon&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;https://cdn.haoyep.com/gh/leegical/Blog_img/favicon.svg&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161426248.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161426248.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>网站图标&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161426248.png" alt="网站图标" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161426248.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161426248.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161426248.png?size=large 2x" data-title="网站图标" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">网站图标&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="网站-logo" class="heading-element">&lt;span>1.3 网站 logo&lt;/span>
 &lt;a href="#%e7%bd%91%e7%ab%99-logo" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>配置：&lt;code>[params]&lt;/code>——&lt;code>[params.header]&lt;/code>——&lt;code>[params.header.title]&lt;/code>。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 页面头部导航栏标题配置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">[&lt;/span>&lt;span class="nx">params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">header&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">title&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># LOGO 的 URL&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">logo&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/weblogo.png&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161428936.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161428936.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>网站 logo&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161428936.png" alt="网站 logo" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161428936.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161428936.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161428936.png?size=large 2x" data-title="网站 logo" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">网站 logo&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="主页头像" class="heading-element">&lt;span>1.4 主页头像&lt;/span>
 &lt;a href="#%e4%b8%bb%e9%a1%b5%e5%a4%b4%e5%83%8f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>配置：&lt;code>[params]&lt;/code>——&lt;code>[params.home]&lt;/code>——&lt;code>[params.home.profile]&lt;/code>。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 主页个人信息&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">[&lt;/span>&lt;span class="nx">params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">home&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">profile&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">enable&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># Gravatar 邮箱，用于优先在主页显示的头像&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">gravatarEmail&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># 主页显示头像的 URL&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">avatarURL&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/avatar.png&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161433480.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161433480.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>主页头像&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161433480.png" alt="主页头像" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161433480.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161433480.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312161433480.png?size=large 2x" data-title="主页头像" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">主页头像&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="加速谷歌字体" class="heading-element">&lt;span>2 加速谷歌字体&lt;/span>
 &lt;a href="#%e5%8a%a0%e9%80%9f%e8%b0%b7%e6%ad%8c%e5%ad%97%e4%bd%93" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>&lt;a href="https://github.com/hugo-fixit/FixIt"target="_blank" rel="external nofollow noopener noreferrer">&lt;strong>FixIt&lt;/strong> 主题&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>默认使用系统字体作为博客渲染字体，免去了加载字体。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152148953.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152148953.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>Fixit主题全局字体&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152148953.png" alt="Fixit主题全局字体" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152148953.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152148953.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152148953.png?size=large 2x" data-title="Fixit主题全局字体" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">Fixit主题全局字体&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>但是想要为一些特定区域，如 &lt;code>code&lt;/code> 设置特别字体时，就需要用到谷歌字体。这里选择使用 &lt;code>fonts.loli.net&lt;/code> 加速。在 &lt;code>assets/css&lt;/code> 中新建 &lt;code>_override.scss&lt;/code> 文件，内容如下：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-scss" data-lang="scss">&lt;span class="line">&lt;span class="cl">&lt;span class="k">@import&lt;/span> &lt;span class="sx">url(&amp;#39;https://fonts.loli.net/css?family=JetBrains+Mono:400,700&amp;amp;display=swap&amp;amp;subset=latin-ext&amp;#39;)&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$code-font-family&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="n">JetBrains&lt;/span> &lt;span class="n">Mono&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">Fira&lt;/span> &lt;span class="n">Mono&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">Source&lt;/span> &lt;span class="n">Code&lt;/span> &lt;span class="n">Pro&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">Menlo&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">Consolas&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="n">Monaco&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="ni">monospace&lt;/span>&lt;span class="p">;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152151358.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152151358.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>加速code的谷歌字体&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152151358.png" alt="加速code的谷歌字体" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152151358.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152151358.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152151358.png?size=large 2x" data-title="加速code的谷歌字体" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">加速code的谷歌字体&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h2 id="加速-avatar-头像" class="heading-element">&lt;span>3 加速 avatar 头像&lt;/span>
 &lt;a href="#%e5%8a%a0%e9%80%9f-avatar-%e5%a4%b4%e5%83%8f" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>在 &lt;code>hugo.toml&lt;/code> 设置 Gravatar 主机为七牛云地址 &lt;code>dn-qiniu-avatar.qbox.me&lt;/code>：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># FixIt 0.2.14 | NEW Gravatar 设置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">[&lt;/span>&lt;span class="nx">params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">gravatar&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># 取决于作者邮箱，作者邮箱未设置则使用本地头像&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">enable&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># Gravatar 主机，默认：“www.gravatar.com”&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">host&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;dn-qiniu-avatar.qbox.me&amp;#34;&lt;/span> &lt;span class="c"># [&amp;#34;cn.gravatar.com&amp;#34;, &amp;#34;gravatar.loli.net&amp;#34;, ...]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;identicon&amp;#34;&lt;/span> &lt;span class="c"># [&amp;#34;&amp;#34;, &amp;#34;mp&amp;#34;, &amp;#34;identicon&amp;#34;, &amp;#34;monsterid&amp;#34;, &amp;#34;wavatar&amp;#34;, &amp;#34;retro&amp;#34;, &amp;#34;blank&amp;#34;, &amp;#34;robohash&amp;#34;]&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152153926.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152153926.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>设置 Gravatar 主机为七牛云地址&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152153926.png" alt="设置 Gravatar 主机为七牛云地址" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152153926.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152153926.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312152153926.png?size=large 2x" data-title="设置 Gravatar 主机为七牛云地址" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">设置 Gravatar 主机为七牛云地址&lt;/figcaption>
 &lt;/figure>&lt;/p></description></item><item><title>通过 Cloudflare 和 jsDelivr 免费加速博客 GitHub 图床等静态资源</title><link>https://www.haoyep.com/posts/github-graph-beds-cdn/</link><pubDate>Thu, 14 Dec 2023 19:16:31 +0800</pubDate><author>chuxuange@gmail.com (Leehow)</author><guid>https://www.haoyep.com/posts/github-graph-beds-cdn/</guid><category domain="https://www.haoyep.com/categories/blog/">blog</category><category domain="https://www.haoyep.com/categories/markdown/">markdown</category><description>&lt;img src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202401171455676.png" alt="featured image" referrerpolicy="no-referrer">&lt;p>通过 Cloudflare 和 jsDelivr 免费加速博客 GitHub 静态资源(GitHub图床)，自动实现 CDN 资源的海内外分流，加速博客访问速度。&lt;/p>
&lt;h2 id="前言" class="heading-element">&lt;span>1 前言&lt;/span>
 &lt;a href="#%e5%89%8d%e8%a8%80" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>上一篇文章讲述了如何使用 PicGo + GitHub 搭建图床，这样搭建的图床很稳定，但缺点是国内访问速度慢。可以使用 &lt;code>jsDelivr&lt;/code> 对 Github 图床等静态资源进行免费 CDN 加速
&lt;a href="https://www.haoyep.com/posts/github-graph-beds/" title="使用PicGo &amp;#43; GitHub 搭建 Obsidian 图床"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">使用PicGo + GitHub 搭建 Obsidian 图床&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://www.haoyep.com/posts/github-graph-beds/&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a>&lt;/p>
&lt;div class="details admonition question open">
 &lt;div class="details-summary admonition-title">&lt;i class="icon fa-fw fa-regular fa-circle-question" aria-hidden="true">&lt;/i>jsDelivr是什么？&lt;i class="details-icon fa-solid fa-angle-right fa-fw" aria-hidden="true">&lt;/i>&lt;/div>
 &lt;div class="details-content">
 &lt;div class="admonition-content">&lt;code>jsDelivr&lt;/code>是国外的一家优秀的公共 CDN 服务提供商，该平台是首个「打通中国大陆与海外的免费 CDN 服务」，无须担心中国防火墙问题而影响使用。官网：&lt;a href="http://www.jsdelivr.com/"target="_blank" rel="external nofollow noopener noreferrer">http://www.jsdelivr.com/(opens new window)&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a>&lt;/div>
 &lt;/div>
&lt;/div>
&lt;p>但是&lt;code>jsDelivr&lt;/code>因为掉 ICP 等原因，国内速度越来越慢。好在 &lt;a href="https://github.com/54ayao/Chinajsdelivr"target="_blank" rel="external nofollow noopener noreferrer">Chinajsdelivr&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 项目将它在国内“复活”了。&lt;/p>
&lt;p>因此，本文思路是，对于 Github 公开仓库中的静态资源：&lt;/p>
&lt;ul>
&lt;li>如果访问来源是国内，则使用 &lt;a href="https://github.com/54ayao/Chinajsdelivr"target="_blank" rel="external nofollow noopener noreferrer">Chinajsdelivr&lt;i class="fa-solid fa-external-link-alt fa-fw fa-xs ms-1 text-secondary" aria-hidden="true">&lt;/i>&lt;/a> 进行加速，域名为&lt;code>jsd.cdn.zzko.cn&lt;/code>&lt;/li>
&lt;li>如果访问来源是国内，则使用原版 jsDelivr 进行加速，域名为&lt;code>cdn.jsDelivr.net&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>即：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"># 1-1. Github raw 链接
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://raw.githubusercontent.com/leegical/Blog_img/main/md_img202305061640828.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># 1-2. Github 仓库文件链接
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://github.com/leegical/Blog_img/blob/main/md_img202305061640828.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># 国内请求将访问到
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://jsd.cdn.zzko.cn/gh/leegical/Blog_img/md_img202305061640828.png
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># 国外请求将访问到
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://cdn.jsdelivr.net/gh/leegical/Blog_img/md_img202305061640828.png&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>也就是说，我希望对于同一个资源链接，能够根据国内外请求来源自动重定向，使用不同的 CDN 加速链接。这就可以使用 Cloudflare 的重定向规则。&lt;/p>
&lt;h2 id="cloudflare" class="heading-element">&lt;span>2 Cloudflare&lt;/span>
 &lt;a href="#cloudflare" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;h3 id="配置域名" class="heading-element">&lt;span>2.1 配置域名&lt;/span>
 &lt;a href="#%e9%85%8d%e7%bd%ae%e5%9f%9f%e5%90%8d" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>使用 Cloudflare 托管域名，这一点教程很多，跟着做就行，

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141651245.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141651245.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>托管域名&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141651245.png" alt="托管域名" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141651245.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141651245.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141651245.png?size=large 2x" data-title="托管域名" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">托管域名&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;p>在 DNS 配置中，新增一条 CNAME 解析记录，并启用代理。
如图，我这里是将 &lt;code>cdn.haoyep.com&lt;/code> 解析到了 &lt;code>jsd.cdn.zzko.cn&lt;/code>，并使用 Cloudflare 代理（点亮小云朵）。

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141652319.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141652319.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>添加CNAME解析记录&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141652319.png" alt="添加CNAME解析记录" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141652319.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141652319.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141652319.png?size=large 2x" data-title="添加CNAME解析记录" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">添加CNAME解析记录&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;h3 id="配置重定向规则" class="heading-element">&lt;span>2.2 配置重定向规则&lt;/span>
 &lt;a href="#%e9%85%8d%e7%bd%ae%e9%87%8d%e5%ae%9a%e5%90%91%e8%a7%84%e5%88%99" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h3>&lt;p>&lt;strong>目标&lt;/strong>：资源链接都使用 &lt;code>cdn.haoyep.com&lt;/code>，Cloudflare 在代理 &lt;code>cdn.haoyep.com&lt;/code> 时，判断请求来源是国内，则将 &lt;code>cdn.haoyep.com&lt;/code> 重定向到 &lt;code>jsd.cdn.zzko.cn&lt;/code>；国外的请求则重定向到 &lt;code>cdn.jsdelivr.net&lt;/code>。&lt;/p>
&lt;ol>
&lt;li>配置国内重定向
&lt;ul>
&lt;li>规则名称 （必需）：标注国内，方便区分&lt;/li>
&lt;li>自定义筛选表达式：&lt;code>(http.host eq &amp;quot;cdn.haoyep.com&amp;quot; and ip.geoip.country eq &amp;quot;CN&amp;quot;)&lt;/code>&lt;/li>
&lt;li>URL 重定向
&lt;ul>
&lt;li>类型：动态&lt;/li>
&lt;li>表达式：&lt;code>concat(&amp;quot;https://jsd.cdn.zzko.cn&amp;quot;, http.request.uri.path)&lt;/code>&lt;/li>
&lt;li>状态代码：&lt;code>302&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141658616.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141658616.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>国内重定向规则配置&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141658616.png" alt="国内重定向规则配置" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141658616.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141658616.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141658616.png?size=large 2x" data-title="国内重定向规则配置" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">国内重定向规则配置&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;ol start="2">
&lt;li>配置国外重定向
&lt;ul>
&lt;li>规则名称 （必需）：标注国外，方便区分&lt;/li>
&lt;li>自定义筛选表达式：&lt;code>(http.host eq &amp;quot;cdn.haoyep.com&amp;quot; and ip.geoip.country ne &amp;quot;CN&amp;quot;)&lt;/code>&lt;/li>
&lt;li>URL 重定向
&lt;ul>
&lt;li>类型：动态&lt;/li>
&lt;li>表达式：&lt;code>concat(&amp;quot;https://cdn.jsdelivr.net&amp;quot;, http.request.uri.path)&lt;/code>&lt;/li>
&lt;li>状态代码：&lt;code>302&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141700130.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141700130.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>国外重定向规则配置&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141700130.png" alt="国外重定向规则配置" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141700130.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141700130.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141700130.png?size=large 2x" data-title="国外重定向规则配置" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">国外重定向规则配置&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;div class="alert alert-tip">&lt;p class="alert-title">&lt;svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">&lt;path d="M8 1.5c-2.363.0-4 1.69-4 3.75.0.984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75.0 01-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456.0 00-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863.0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751.0 01-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304.0-2.06-1.637-3.75-4-3.75zM5.75 12h4.5a.75.75.0 010 1.5h-4.5a.75.75.0 010-1.5zM6 15.25a.75.75.0 01.75-.75h2.5a.75.75.0 010 1.5h-2.5A.75.75.0 016 15.25z"/>&lt;/svg>提示&lt;/p>&lt;p>HTTP 重定向状态选择302而不是301。虽然两类请求都会被 Cloudflare 缓存，但301理论上是永久跳转而302是临时跳转，因此301可能会导致长时间缓存，不利于今后修改重定向到新地址。&lt;/p>
&lt;/div>&lt;h2 id="picgo-设置" class="heading-element">&lt;span>3 PicGo 设置&lt;/span>
 &lt;a href="#picgo-%e8%ae%be%e7%bd%ae" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;p>为了让上传的图片自动生成 CDN 链接，还需要配置 PicGo：

&lt;figure>&lt;a class="lightgallery" href="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141324478.png?size=large" data-thumbnail="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141324478.png?size=small" data-sub-html="&lt;h2> &lt;/h2>&lt;p>PicGo Github 图床设置&lt;/p>">&lt;img loading="lazy" src="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141324478.png" alt="PicGo Github 图床设置" srcset="https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141324478.png?size=small, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141324478.png?size=medium 1.5x, https://cdn.haoyep.com/gh/leegical/Blog_img/cdnimg/202312141324478.png?size=large 2x" data-title="PicGo Github 图床设置" style="background: url(/images/loading.min.svg) no-repeat center;" onload="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}this.dataset.lazyloaded='';" onerror="this.title=this.dataset.title;for(const i of ['style', 'data-title','onerror','onload']){this.removeAttribute(i);}"/>&lt;/a>&lt;figcaption class="image-caption">PicGo Github 图床设置&lt;/figcaption>
 &lt;/figure>&lt;/p>
&lt;ul>
&lt;li>设定存储路径：可以不填，也可以填仓库的某个文件夹&lt;/li>
&lt;li>自定义域名： 改为&lt;code>https://&amp;lt;cdn加速链接&amp;gt;/gh/&amp;lt;用户名&amp;gt;/&amp;lt;图床仓库名&amp;gt;&lt;/code>，如图我这里改成 &lt;code>https://cdn.haoyep.com/gh/leegical/Blog_img&lt;/code> 即可。&lt;/li>
&lt;/ul>
&lt;p>对于之前文章中的 Github raw 或文件链接，替换成 CDN 链接即可。本文只需要进行以下替换：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl"># 要替换的
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://raw.githubusercontent.com/leegical/Blog_img/main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://github.com/leegical/Blog_img/blob/main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># 替换为
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">https://cdn.haoyep.com/gh/leegical/Blog_img&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="参考文章" class="heading-element">&lt;span>4 参考文章&lt;/span>
 &lt;a href="#%e5%8f%82%e8%80%83%e6%96%87%e7%ab%a0" class="heading-mark">
 &lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z">&lt;/path>&lt;/svg>
 &lt;/a>
&lt;/h2>&lt;a href="https://github.com/54ayao/Chinajsdelivr?tab=readme-ov-file" title="Chinajsdelivr简介"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">Chinajsdelivr简介&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://github.com/54ayao/Chinajsdelivr?tab=readme-ov-file&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a>
&lt;a href="https://upup.dev/posts/cloudflare-country-based-cdn-redirect/" title="利用 Cloudflare 重定向规则实现 CDN 资源的海内外分流"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">利用 Cloudflare 重定向规则实现 CDN 资源的海内外分流&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://upup.dev/posts/cloudflare-country-based-cdn-redirect/&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a>
&lt;a href="https://irithys.com/p/%E4%BD%BF%E7%94%A8npm%E5%8A%A0%E9%80%9F%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90/" title="使用npm加速静态资源"target="_blank" rel="external nofollow noopener noreferrer" class="card-link">&lt;span class="cl-backdrop" style="--cl-bg-url: url(/images/fixit.min.svg);">&lt;/span>
 &lt;span class="cl-content">
 &lt;span class="cl-text">
 &lt;span class="cl-title">使用npm加速静态资源&lt;/span>
 &lt;span class="cl-meta">
 &lt;svg class="cl-icon-link" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16">&lt;path d="M574 665.4c-3.1-3.1-8.2-3.1-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8c-3.1-3.1-8.2-3.1-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zM832.6 191.4c-84.6-84.6-221.5-84.6-306 0L410.3 307.6c-3.1 3.1-3.1 8.2 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6c-3.1 3.1-3.1 8.2 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1z" fill="#a9a9b3">&lt;/path>&lt;path d="M610.1 372.3c-3.1-3.1-8.2-3.1-11.3 0L372.3 598.7c-3.1 3.1-3.1 8.2 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z" fill="#a9a9b3">&lt;/path>&lt;/svg>
 &lt;span class="cl-url">https://irithys.com/p/%E4%BD%BF%E7%94%A8npm%E5%8A%A0%E9%80%9F%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90/&lt;/span>
 &lt;/span>
 &lt;/span>&lt;svg class="cl-shortcut-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="64" height="64">&lt;path d="M960 512c0 249.408-203.2 448-448 448-244.778667 0-448-198.592-448-448S262.592 64 512 64s448 198.592 448 448" fill="#2196F3">&lt;/path>&lt;path d="M507.52 718.08c0-8.96-4.48-13.44-13.44-17.92-26.88-8.96-53.76-8.96-76.16-31.381333-4.48-8.96-4.48-17.92-8.96-26.88-8.96-8.96-31.36-13.44-44.8-17.92h-89.6c-13.44-4.48-22.4-22.4-31.36-35.84 0-4.48 0-13.461333-8.96-13.461334-8.96-4.458667-17.92 4.501333-26.88 0-4.48-4.458667-4.48-8.96-4.48-13.418666 0-13.461333 8.96-26.901333 17.92-35.861334 13.44-8.96 26.88 4.48 40.32 4.48 4.48 0 4.48 0 8.96 4.48 13.44 4.48 17.92 22.4 17.92 35.861334v8.96c0 4.48 4.48 4.48 8.96 4.48 4.48-22.4 4.48-44.821333 8.96-67.2 0-26.88 26.88-53.781333 49.28-62.72 8.96-4.458667 13.44 4.501333 22.4 0 26.88-8.96 94.08-35.84 80.64-71.658667-8.96-31.381333-35.84-62.698667-71.68-58.24-8.96 4.501333-13.44 8.96-22.4 13.461333-13.44 8.96-40.32 35.84-53.76 35.84-22.4-4.48-22.4-35.84-17.92-49.301333 4.48-17.92 44.8-76.138667 71.68-67.178667l17.92 17.92c8.96 4.48 22.4 4.48 35.84 4.48 4.48 0 8.96 0 13.44-4.48 4.48-4.48 4.48-4.48 4.48-8.96 0-13.44-13.44-26.901333-22.4-35.861333s-22.4-17.92-35.84-22.378667c-44.8-13.461333-116.48 4.458667-152.32 35.84-35.84 31.36-62.72 85.12-80.64 129.92-8.96 26.88-17.92 62.698667-22.4 94.08-4.48 22.4-8.96 40.32 4.48 62.698667 13.44 26.88 40.32 53.781333 67.2 71.68 17.92 13.44 53.76 13.44 71.68 35.84 13.44 17.941333 8.96 40.32 8.96 62.72 0 26.88 17.92 49.28 26.88 71.658667 4.48 13.461333 8.96 31.381333 13.44 44.821333 0 4.48 4.48 31.36 4.48 35.84 26.88 13.44 49.28 26.901333 80.64 35.861333 4.48 0 22.4-26.901333 22.4-31.381333 13.44-13.44 22.4-31.36 35.84-40.32 8.96-4.48 17.92-8.96 26.88-17.941333 8.96-8.96 13.44-26.88 17.92-40.32 4.48-8.938667 8.96-26.858667 4.48-40.298667M516.48 305.92c4.48 0 8.96-4.48 17.92-8.96 13.44-8.96 26.901333-22.4 40.32-31.36 13.461333-8.96 26.901333-22.4 35.861333-31.36 13.44-8.96 22.4-26.88 26.88-40.341333 4.48-8.96 17.941333-26.88 13.44-40.32-4.48-8.96-26.88-13.44-35.84-17.92C579.2 126.698667 547.84 122.24 512 122.24c-13.44 0-31.36 4.458667-35.84 17.92-4.48 22.4 13.44 17.92 31.36 22.4 0 0 4.48 35.84 4.48 40.32 4.48 22.421333-8.96 35.84-8.96 58.24 0 13.44 0 35.84 8.96 44.8h4.48zM892.8 619.52c4.501333-8.96 4.501333-22.4 8.96-31.36 4.501333-22.421333 4.501333-44.8 4.501333-67.2 0-44.8-4.501333-89.578667-17.92-129.92-8.96-13.44-13.461333-26.88-17.941333-40.341333-8.96-22.378667-22.4-44.8-40.32-62.698667-17.92-22.4-40.341333-85.12-80.64-67.2-13.44 4.501333-22.4 22.421333-31.36 31.381333l-26.88 40.32c-4.501333 4.48-8.96 13.44-4.501333 17.92 0 4.48 4.501333 4.48 8.96 4.48 8.96 4.501333 13.461333 4.501333 22.421333 8.96 4.48 0 8.96 4.501333 4.48 8.96 0 0 0 4.501333-4.48 4.501334-22.421333 22.4-44.8 40.32-67.2 62.698666-4.48 4.48-8.96 13.44-8.96 17.92s4.48 4.48 4.48 8.96c0 4.501333-4.48 4.501333-8.96 8.96-8.96 4.501333-17.92 8.96-22.4 13.461334-4.48 8.96 0 22.4-4.48 31.36-4.48 22.4-17.941333 40.32-26.901333 62.72-8.96 13.418667-13.418667 26.88-22.378667 40.32 0 17.92-4.501333 31.36 4.458667 44.8 22.421333 31.36 62.72 13.44 94.08 26.901333 8.96 4.458667 17.92 4.458667 22.421333 13.418667 13.418667 13.461333 13.418667 35.861333 17.92 49.301333 4.458667 17.92 8.96 35.84 17.92 53.76 4.48 22.421333 13.44 44.821333 17.92 62.72 40.341333-31.36 76.16-67.178667 103.04-112 26.88-31.424 40.341333-67.242667 53.76-103.104" fill="#CDDC39">&lt;/path>&lt;/svg>&lt;/span>&lt;/a></description></item></channel></rss>