PageSourceSearch

https://kekkj123.github.io/posts/Tools/LSPatch-demo/

html kekkj123.github.io collected 2026-10-03 09:27:08 UTC 31,899 bytes, 1,031 lines download raw bytes

1
2
3<!DOCTYPE html>
4<html lang="zh-CN" data-default-color-scheme=dark>
5
6
7
8<head>
9  <meta charset="UTF-8">
10
11  <link rel="apple-touch-icon" sizes="76x76" href="/img/Blog_Saturn.png">
12  <link rel="icon" href="/img/Blog_Saturn.png">
13  
14    <link rel="canonical" href="https://kekkj123.github.io/posts/Tools/LSPatch-demo/"/>
15  
16
17  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
18  <meta http-equiv="x-ua-compatible" content="ie=edge">
19  
20    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
21  
22  <meta name="theme-color" content="#2f4154">
23  <meta name="author" content="KEKKJ">
24  <meta name="keywords" content="KEKKJ">
25  
26    <meta name="description" content="受不了部分软件广告满天飞? 苦于不能 Root 无法安装 LSPosed? 现在我们有免 Root 的 LSPatch! 本教程将以 QQ 为例,演示安装模块的方法!  注意:QQ 有风控机制,在尝试前请自行评估,数据无价!  零、安装前须知 只有 .apk 格式的模块可以被集成进目标软件。 无论是哪种修补模式,安装包都与原先的签名不同,故必须卸载原先的软件。 由于必须卸载后安装,请注意备份数据">
27  
28  
29  
30  <title>LSPatch 免 Root 安装模块 - KEKKJ BLOG - 小世界的一瞥</title>
31
32  <link  rel="stylesheet" href="https://lib.baomitu.com/twitter-bootstrap/4.6.1/css/bootstrap.min.css" />
33
34
35
36  <link  rel="stylesheet" href="https://lib.baomitu.com/github-markdown-css/4.0.0/github-markdown.min.css" />
37
38  <link  rel="stylesheet" href="https://lib.baomitu.com/hint.css/2.7.0/hint.min.css" />
39
40  <link  rel="stylesheet" href="https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.css" />
41
42
43
44<!-- 主题依赖的图标库,不要自行修改 -->
45<!-- Do not modify the link that theme dependent icons -->
46
47<link rel="stylesheet" href="//at.alicdn.com/t/c/font_1749284_5i9bdhy70f8.css">
48
49
50
51<link rel="stylesheet" href="//at.alicdn.com/t/c/font_1736178_k526ubmyhba.css">
52
53
54<link  rel="stylesheet" href="/css/main.css" />
55
56
57  <link id="highlight-css" rel="stylesheet" href="/css/highlight.css" />
58  
59    <link id="highlight-css-dark" rel="stylesheet" href="/css/highlight-dark.css" />
60  
61
62
63
64  
65<link rel="stylesheet" href="/icon-font-css/travelling/iconfont.css">
66
67
68
69  
69<script id="fluid-configs">
70    var Fluid = window.Fluid || {};
71    Fluid.ctx = Object.assign({}, Fluid.ctx)
72    var CONFIG = {"hostname":"kekkj123.github.io","root":"/","version":"1.9.8","typing":{"enable":true,"typeSpeed":50,"cursorChar":"_","loop":false,"scope":"home"},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"left","visible":"hover","icon":"#"},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"code_language":{"enable":true,"default":"TEXT"},"copy_btn":true,"image_caption":{"enable":true},"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"placement":"right","headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":1},"lazyload":{"enable":true,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":true,"follow_dnt":true,"baidu":null,"google":{"measurement_id":"G-9E1Z9RDTPM"},"tencent":{"sid":null,"cid":null},"leancloud":{"app_id":"ZQprfmfI0LYS9JMbW9dfSh7S-gzGzoHsz","app_key":"LPar9cIawJj3p5BljrrEYtOC","server_url":"https://zqprfmfi.lc-cn-n1-shared.com","path":"window.location.pathname","ignore_local":true},"umami":{"src":null,"website_id":null,"domains":null,"start_time":"2024-08-12T00:00:00.000Z","token":null,"api_server":null}},"search_path":"/local-search.xml","include_content_in_search":true};
73
74    if (CONFIG.web_analytics.follow_dnt) {
75      var dntVal = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
76      Fluid.ctx.dnt = dntVal && (dntVal.startsWith('1') || dntVal.startsWith('yes') || dntVal.startsWith('on'));
77    }
78  </script>
78
79  
79<script  src="/js/utils.js" ></script>
79
80  
80<script  src="/js/color-schema.js" ></script>
80
81  
82
83  
84
85  
86    <!-- Google tag (gtag.js) -->
87    
87<script async>
88      if (!Fluid.ctx.dnt) {
89        Fluid.utils.createScript("https://www.googletagmanager.com/gtag/js?id=G-9E1Z9RDTPM", function() {
90          
vendor: 182 bytes, lines 90-95
90window.dataLayer = window.dataLayer || [];
91          function gtag() {
92            dataLayer.push(arguments);
93          }
94          gtag('js', new Date());
95          gtag('config', '
95G-9E1Z9RDTPM
vendor: 12 bytes, lines 95-96
95');
96        
96});
97      }
98    </script>
98
99  
100
101  
102
103  
104
105  
106    
107  
108
109
110
111  
112<meta name="generator" content="Hexo 7.3.0"><link rel="alternate" href="/RSS_atom.xml" title="KEKKJ BLOG - 小世界的一瞥" type="application/atom+xml">
113</head>
114
115
116<body>
117  
118
119  <header>
120    
121
122<div class="header-inner" style="height: 70vh;">
123  <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
124  <div class="container">
125    <a class="navbar-brand" href="/">
126      <strong>KEKKJ BLOG</strong>
127    </a>
128
129    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
130            data-target="#navbarSupportedContent"
131            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
132      <div class="animated-icon"><span></span><span></span><span></span></div>
133    </button>
134
135    <!-- Collapsible content -->
136    <div class="collapse navbar-collapse" id="navbarSupportedContent">
137      <ul class="navbar-nav ml-auto text-center">
138        
139          
140          
141          
142          
143            <li class="nav-item">
144              <a class="nav-link" href="/categories/%E9%9A%8F%E7%BC%98%E6%89%8B%E8%AE%B0/" target="_self">
145                <i class="iconfont icon-home-fill"></i>
146                <span>手记</span>
147              </a>
148            </li>
149          
150        
151          
152          
153          
154          
155            <li class="nav-item dropdown">
156              <a class="nav-link dropdown-toggle" target="_self" href="javascript:;" role="button"
157                 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
158                <i class="iconfont icon-books"></i>
159                <span>目录</span>
160              </a>
161              <div class="dropdown-menu" aria-labelledby="navbarDropdown">
162                
163                  
164                  
165                  
166                  <a class="dropdown-item" href="/archives/" target="_self">
167                    <i class="iconfont icon-archive-fill"></i>
168                    <span>归档</span>
169                  </a>
170                
171                  
172                  
173                  
174                  <a class="dropdown-item" href="/categories/" target="_self">
175                    <i class="iconfont icon-category-fill"></i>
176                    <span>分类</span>
177                  </a>
178                
179                  
180                  
181                  
182                  <a class="dropdown-item" href="/Temporary_Storage/" target="_self">
183                    <i class="iconfont icon-bookmark"></i>
184                    <span>书签</span>
185                  </a>
186                
187              </div>
188            </li>
189          
190        
191          
192          
193          
194          
195            <li class="nav-item">
196              <a class="nav-link" href="/links/" target="_self">
197                <i class="iconfont icon-link-fill"></i>
198                <span>友链</span>
199              </a>
200            </li>
201          
202        
203          
204          
205          
206          
207            <li class="nav-item">
208              <a class="nav-link" href="https://www.travellings.cn/go.html" target="_self">
209                <i class="iconfont icon-travelling"></i>
210                <span>开往</span>
211              </a>
212            </li>
213          
214        
215          
216          
217          
218          
219            <li class="nav-item">
220              <a class="nav-link" href="/about/" target="_self">
221                <i class="iconfont icon-user-fill"></i>
222                <span>关于</span>
223              </a>
224            </li>
225          
226        
227          
228          
229          
230          
231            <li class="nav-item">
232              <a class="nav-link" href="/RSS_atom.xml" target="_self">
233                <i class="iconfont icon-rss-fill"></i>
234                <span></span>
235              </a>
236            </li>
237          
238        
239        
240          <li class="nav-item" id="search-btn">
241            <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
242              <i class="iconfont icon-search"></i>
243            </a>
244          </li>
245          
246        
247        
248          <li class="nav-item" id="color-toggle-btn">
249            <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">
250              <i class="iconfont icon-dark" id="color-toggle-icon"></i>
251            </a>
252          </li>
253        
254      </ul>
255    </div>
256  </div>
257</nav>
258
259  
260
261<div id="banner" class="banner" parallax=true
262     style="background: url('/img/ApolloSoyuz.png') no-repeat center center; background-size: cover;">
263  <div class="full-bg-img">
264    <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
265      <div class="banner-text text-center fade-in-up">
266        <div class="h2">
267          
268            <span id="subtitle">LSPatch 免 Root 安装模块</span>
269          
270        </div>
271
272        
273          
274  <div class="mt-3">
275    
276      <span class="post-meta mr-2">
277        <i class="iconfont icon-author" aria-hidden="true"></i>
278        KEKKJ
279      </span>
280    
281    
282      <span class="post-meta">
283        <i class="iconfont icon-date-fill" aria-hidden="true"></i>
284        <time datetime="2026-09-25 14:59" pubdate>
285          2026年9月25日 下午
286        </time>
287      </span>
288    
289  </div>
290
291  <div class="mt-1">
292    
293      <span class="post-meta mr-2">
294        <i class="iconfont icon-chart"></i>
295        
296          829 字
297        
298      </span>
299    
300
301    
302      <span class="post-meta mr-2">
303        <i class="iconfont icon-clock-fill"></i>
304        
305        
306        
307          6 分钟
308        
309      </span>
310    
311
312    
313    
314      
315        <span id="leancloud-page-views-container" class="post-meta" style="display: none">
316          <i class="iconfont icon-eye" aria-hidden="true"></i>
317          <span id="leancloud-page-views"></span> 阅读
318        </span>
319        
320      
321      
322    
323  </div>
324
325
326        
327      </div>
328
329      
330    </div>
331  </div>
332</div>
333
334</div>
335
336  </header>
337
338  <main>
339    
340      
341
342<div class="container-fluid nopadding-x">
343  <div class="row nomargin-x">
344    <div class="side-col d-none d-lg-block col-lg-2">
345      
346  <aside class="sidebar category-bar" style="margin-right: -1rem">
347    
348
349
350
351
352
353<div class="category-list">
354  
355  
356    
357    
358    
359    <div class="category row nomargin-x">
360      <a class="category-item 
361          list-group-item category-item-action col-10 col-md-11 col-xm-11" title="Tool"
362        id="heading-d421fd439cd14456726791338b3b397e" role="tab" data-toggle="collapse" href="#collapse-d421fd439cd14456726791338b3b397e"
363        aria-expanded="true"
364      >
365        Tool
366        <span class="list-group-count">(7)</span>
367        <i class="iconfont icon-arrowright"></i>
368      </a>
369      
370      <div class="category-collapse collapse show" id="collapse-d421fd439cd14456726791338b3b397e"
371           role="tabpanel" aria-labelledby="heading-d421fd439cd14456726791338b3b397e">
372        
373        
374          
375  <div class="category-post-list">
376    
377    
378      
379      
380        <a href="/posts/webs/" title="实用网站及工具自存"
381           class="list-group-item list-group-item-action
382           ">
383          <span class="category-post">实用网站及工具自存</span>
384        </a>
385      
386    
387      
388      
389        <a href="/posts/Tools/skipad/" title="跳广告软件推荐"
390           class="list-group-item list-group-item-action
391           ">
392          <span class="category-post">跳广告软件推荐</span>
393        </a>
394      
395    
396      
397      
398        <a href="/posts/Tools/remove-winntsetup-cmd-context-menu/" title="回退 WinNTSetup 修改 cmd 右键菜单"
399           class="list-group-item list-group-item-action
400           ">
401          <span class="category-post">回退 WinNTSetup 修改 cmd 右键菜单</span>
402        </a>
403      
404    
405      
406      
407        <a href="/posts/Tools/android-app-version-rollback/" title="安卓软件降级指南"
408           class="list-group-item list-group-item-action
409           ">
410          <span class="category-post">安卓软件降级指南</span>
411        </a>
412      
413    
414      
415      
416        <a href="/posts/Tools/bite-sized-tweaks/" title="短平快的设置优化合集"
417           class="list-group-item list-group-item-action
418           ">
419          <span class="category-post">短平快的设置优化合集</span>
420        </a>
421      
422    
423      
424      
425        <a href="/posts/Tools/k60pro-devlog/" title="K60P 搞机日志"
426           class="list-group-item list-group-item-action
427           ">
428          <span class="category-post">K60P 搞机日志</span>
429        </a>
430      
431    
432      
433      
434        <a href="/posts/Tools/LSPatch-demo/" title="LSPatch 免 Root 安装模块"
435           class="list-group-item list-group-item-action
436           active">
437          <span class="category-post">LSPatch 免 Root 安装模块</span>
438        </a>
439      
440    
441  </div>
442
443        
444      </div>
445    </div>
446  
447</div>
448
449
450  </aside>
451
452
453    </div>
454
455    <div class="col-lg-8 nopadding-x-md">
456      <div class="container nopadding-x-md" id="board-ctn">
457        <div id="board">
458          <article class="post-content mx-auto">
459            <h1 id="seo-header">LSPatch 免 Root 安装模块</h1>
460            
461              <p id="updated-time" class="note note-info" style="display: none">
462                
463                  
464                    本文最后更新于 2026-09-25T15:07:00+08
464:00
465                  
466                  
467
468                
469              </p>
470            
471            
472              <div class="markdown-body">
473                
474                <blockquote>
475<p>受不了部分软件广告满天飞?</p>
476<p>苦于不能 Root 无法安装 LSPosed?</p>
477<p>现在我们有免 Root 的 LSPatch!</p>
478<p>本教程将以 QQ 为例,演示安装模块的方法!</p>
479</blockquote>
480<p>注意:QQ 有风控机制,在尝试前请自行评估,数据无价!</p>
481<hr>
482<h2 id="零、安装前须知"><a href="#零、安装前须知" class="headerlink" title="零、安装前须知"></a>零、安装前须知</h2><ul>
483<li>只有 <code>.apk</code> 格式的模块可以被集成进目标软件。</li>
484<li>无论是哪种修补模式,安装包都与原先的签名不同,故必须卸载原先的软件。</li>
485<li>由于必须卸载后安装,请注意备份数据!</li>
486<li><em>HarmonyOS NEXT</em> 和 <em>iOS</em> 系统无法运行 <code>.apk</code>,故不兼容,不在此篇讨论范围内。</li>
487<li>
487兼容安卓的鸿蒙版本理论可行,尚未测试。</li>
488<li>Shizuku 为可选组件,用于安装 apk。</li>
489</ul>
490<h2 id="一、下载与安装"><a href="#一、下载与安装" class="headerlink" title="一、下载与安装"></a>一、下载与安装</h2><p>下载并安装 <a target="_blank" rel="noopener" href="https://github.com/JingMatrix/LSPatch/releases/latest">LSPatch</a>、<a target="_blank" rel="noopener" href="https://github.com/cinit/QAuxiliary/releases/latest">QAuxiliary</a>,准备 QQ 安装包。这里作者选择了 QQ 9.1.50 版本。</p>
491<p>打开 LSPatch,点击<strong>新建修补</strong>,选择<strong>要修补的应用</strong>,点击右上角的文件图标,选择 QQ 安装包。</p>
492<p>若已安装 QQ,则在<strong>要修补的应用</strong>选择 QQ。</p>
493<h2 id="二、修补模式"><a href="#二、修补模式" class="headerlink" title="二、修补模式"></a>二、修补模式</h2><p>本地(推荐):类似 LSPosed 的设置,多个 Xposed 模块可以作用在同一个软件上。</p>
494<p>
494集成:将模块集成至 <code>.apk</code>,可以分发,隐藏效果也相对更好。</p>
495<h3 id="本地模式(管理器模式)"><a href="#本地模式(管理器模式)" class="headerlink" title="本地模式(管理器模式)"></a>本地模式(管理器模式)</h3><ol>
496<li>修补模式选择<strong>本地</strong>。无需修改任何配置。</li>
497<li>进行修补,等待输出文件。</li>
498<li>导出 apk。选择一个能记住的位置。</li>
499<li>选择导出后的文件,安装。<em>注意:部分手机会报毒,放心安装即可。</em></li>
500<li>安装成功后,重启 LSPatch。</li>
501<li>再次打开 LSPatch,此时可以看到应用栏显示 QQ 的图标。</li>
502<li>选择 QQ,勾选 QAuxiliary,应用修改。</li>
503<li>强制停止 QQ,重新打开后模块才会被加载。</li>
504</ol>
505<h3 id="集成模式(嵌入-便携模式)"><a href="#集成模式(嵌入-便携模式)" class="headerlink" title="集成模式(嵌入&#x2F;便携模式)"></a>集成模式(嵌入&#x2F;便携模式)</h3><ol>
506<li>修补模式选择<strong>集成</strong>。无需修改任何配置。</li>
507<li><strong>嵌入模块</strong>栏选择 QAuxiliary,添加方式随安装情况而定。</li>
508<li>进行修补,等待输出文件。</li>
509<li>导出 apk。选择一个能记住的位置。</li>
510<li>选择导出后的文件,安装。</li>
511</ol>
512<h3 id="验证模块生效"><a href="#验证模块生效" class="headerlink" title="验证模块生效"></a>验证模块生效</h3><p>QQ 版本 ≥ 9.1.50 时,QQ 自带<strong>设置</strong>页里会出现 QAuxiliary 入口。</p>
513<h2 id="三、本地模式与集成模式的区别"><a href="#三、本地模式与集成模式的区别" class="headerlink" title="三、本地模式与集成模式的区别"></a>三、本地模式与集成模式的区别</h2><table>
514<thead>
515<tr>
516<th></th>
517<th>本地模式(管理器模式)</th>
518<th>集成模式(嵌入&#x2F;便携模式)</th>
519</tr>
520</thead>
521<tbody><tr>
522<td>模块位置</td>
523<td>模块作为普通 App 单独安装(不能卸载)</td>
524<td>模块嵌入修补后的软件</td>
525</tr>
526<tr>
527<td>依赖管理器(LSPatch)</td>
528<td>是(卸载&#x2F;冻结管理器会导致模块失效)</td>
529<td>否</td>
530</tr>
531<tr>
532<td>更改模块</td>
533<td>LSP 内修改,无需重新修补</td>
534<td>必须重新修补和重装</td>
535</tr>
536<tr>
537<td>升级模块</td>
538<td>直接覆盖安装新版模块,软件无需修改</td>
539<td>每次都要重新修补软件</td>
540</tr>
541<tr>
542<td>排查问题</td>
543<td>有,LSP 的框架日志</td>
544<td>无</td>
545</tr>
546<tr>
547<td>模块设置入口</td>
548<td>模块软件内(因为保留了其本体)</td>
549<td>只能在软件内进</td>
550</tr>
551<tr>
552<td>应用列表里有无模块包名</td>
553<td>有(多一个暴露面)</td>
554<td>无(但运行时 hook 仍可能被检测)</td>
555</tr>
556<tr>
557<td>分发给别人</td>
558<td>否</td>
559<td>是</td>
560</tr>
561</tbody></table>
562<p>若不打算更新模块,或只安装单模块,并且追求高隐藏效果,建议使用<strong>集成模式</strong>。</p>
563<p>如果经常更新模块,且在一个软件内安装了多个模块,则建议使用<strong>本地模式</strong>。</p>
564
565                
566              </div>
567            
568            <hr/>
569            <div>
570              <div class="post-metas my-3">
571  
572    <div class="post-meta mr-3 d-flex align-items-center">
573      <i class="iconfont icon-category"></i>
574      
575
576<span class="category-chains">
577  
578  
579    
580      <span class="category-chain">
581        
582  <a href="/categories/Tool/" class="category-chain-item">Tool</a>
583  
584  
585
586      </span>
587    
588  
589</span>
590
591    </div>
592  
593  
594    <div class="post-meta">
595      <i class="iconfont icon-tags"></i>
596      
597        <a href="/tags/Tutorial/" class="print-no-link">#Tutorial</a>
598      
599        <a href="/tags/Android/" class="print-no-link">#Android</a>
600      
601        <a href="/tags/Shizuku/" class="print-no-link">#Shizuku</a>
602      
603    </div>
604  
605</div>
606
607
608              
609  
610
611  <div class="license-box my-3">
612    <div class="license-title">
613      <div>LSPatch 免 Root 安装模块</div>
614      <div>https://kekkj123.github.io/posts/Tools/LSPatch-demo/</div>
615    </div>
616    <div class="license-meta">
617      
618        <div class="license-meta-item">
619          <div>作者</div>
620          <div>KEKKJ</div>
621        </div>
622      
623      
624        <div class="license-meta-item license-meta-date">
625          <div>发布于</div>
626          <div>2026年9月25日</div>
627        </div>
628      
629      
630      
631        <div class="license-meta-item">
632          <div>许可协议</div>
633          <div>
634            
635              
636              
637                <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">
638                  <span class="hint--top hint--rounded" aria-label="BY - 署名">
639                    <i class="iconfont icon-cc-by"></i>
640                  </span>
641                </a>
642              
643                <a class="print-no-link" target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">
644                  <span class="hint--top hint--rounded" aria-label="SA - 相同方式共享">
645                    <i class="iconfont icon-cc-sa"></i>
646                  </span>
647                </a>
648              
649            
650          </div>
651        </div>
652      
653    </div>
654    <div class="license-icon iconfont"></div>
655  </div>
656
657
658
659              
660                <div class="post-prevnext my-3">
661                  <article class="post-prev col-6">
662                    
663                    
664                      <a href="/posts/suiyuan/20260928/" title="旅行与梦 - P31">
665                        <i class="iconfont icon-arrowleft"></i>
666                        <span class="hidden-mobile">旅行与梦 - P31</span>
667                        <span class="visible-mobile">上一篇</span>
668                      </a>
669                    
670                  </article>
671                  <article class="post-next col-6">
672                    
673                    
674                      <a href="/posts/LifeEpisode/20260921_2/" title="告别">
675                        <span class="hidden-mobile">告别</span>
676                        <span class="visible-mobile">下一篇</span>
677                        <i class="iconfont icon-arrowright"></i>
678                      </a>
679                    
680                  </article>
681                </div>
682              
683            </div>
684
685            
686  
687  
688    <article id="comments" lazyload>
689      
690    <div id="giscus" class="giscus"></div>
691    
691<script type="text/javascript">
692      Fluid.utils.loadComments('#giscus', function() {
693        var options = {"repo":"KEKKJ123/KEKKJ123.github.io","repo-id":"R_kgDOMihuAQ","category":"Announcements","category-id":"DIC_kwDOMihuAc4ChlYD","theme-light":"light","theme-dark":"dark","mapping":"pathname","reactions-enabled":1,"emit-metadata":0,"input-position":"top","lang":"zh-CN"};
694        var attributes = {};
695        for (let option in options) {
696          if (!option.startsWith('theme-')) {
697            var key = option.startsWith('data-') ? option : 'data-' + option;
698            attributes[key] = options[option];
699          }
700        }
701        var light = 'light';
702        var dark = 'dark';
703        window.GiscusThemeLight = light;
704        window.GiscusThemeDark = dark;
705        attributes['data-theme'] = document.documentElement.getAttribute('data-user-color-scheme') === 'dark' ? dark : light;
706        for (let attribute in attributes) {
707          var value = attributes[attribute];
708          if (value === undefined || value === null || value === '') {
709            delete attributes[attribute];
710          }
711        }
712        var s = document.createElement('script');
713        s.setAttribute('src', 'https://giscus.app/client.js');
714        s.setAttribute('crossorigin', 'anonymous');
715        for (let attribute in attributes) {
716          s.setAttribute(attribute, attributes[attribute]);
717        }
718        var ss = document.getElementsByTagName('script');
719        var e = ss.length > 0 ? ss[ss.length - 1] : document.head || document.documentElement;
720        e.parentNode.insertBefore(s, e.nextSibling);
721      });
722    </script>
722
723    <noscript>Please enable JavaScript to view the comments</noscript>
724
725
726    </article>
727  
728
729
730          </article>
731        </div>
732      </div>
733    </div>
734
735    <div class="side-col d-none d-lg-block col-lg-2">
736      
737  <aside class="sidebar" style="margin-left: -1rem">
738    <div id="toc">
739  <p class="toc-header">
740    <i class="iconfont icon-list"></i>
741    <span>目录</span>
742  </p>
743  <div class="toc-body" id="toc-body"></div>
744</div>
745
746
747
748  </aside>
749
750
751    </div>
752  </div>
753</div>
754
755
756
757
758
759  
760
761
762
763  
764
765
766
767  
768
769
770
771  
772
773
774
775  
776
777
778
779
780
781
782
783    
784
785    
786      <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
787        <i class="iconfont icon-arrowup" aria-hidden="true"></i>
788      </a>
789    
790
791    
792      <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
793     aria-hidden="true">
794  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
795    <div class="modal-content">
796      <div class="modal-header text-center">
797        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
798        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
799          <span aria-hidden="true">&times;</span>
800        </button>
801      </div>
802      <div class="modal-body mx-3">
803        <div class="md-form mb-5">
804          <input type="text" id="local-search-input" class="form-control validate">
805          <label data-error="x" data-success="v" for="local-search-input">关键词</label>
806        </div>
807        <div class="list-group" id="local-search-result"></div>
808      </div>
809    </div>
810  </div>
811</div>
812
813    
814
815    
816  </main>
817
818  <footer>
819    <div class="footer-inner">
820  
821    <div class="footer-content">
822       <i class="iconfont icon-love"></i> <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo Blog</span></a> <span>|</span> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid Theme</span></a> <span>|</span> <a href="https://github.com/KEKKJ123/KEKKJ123.github.io" target="_blank" rel="nofollow noopener"><span>KEKKJ Storge</span></a> <i class="iconfont icon-love"></i> <div style="font-size: 0.85rem"> <span id="timeDate">载入天数...</span> <span id="times">载入时分秒...</span> 
822<script src="/scripts/running_time.js"></script>
822 </div> 
823    </div>
824  
825  
826    <div class="statistics">
827  
828  
829
830  
831    
832      <span id="leancloud-site-pv-container" style="display: none">
833        总访问量 
834        <span id="leancloud-site-pv"></span>
835         次
836      </span>
837    
838    
839      <span id="leancloud-site-uv-container" style="display: none">
840        总访客数 
841        <span id="leancloud-site-uv"></span>
842         人
843      </span>
844    
845    
846
847  
848
849</div>
850
851  
852  
853  <!-- 此处格式同步 footer 参数 -->
854  <div style="font-size: 0.85rem">
855    <span id="g-post-count-id">载入字数...</span>
856  </div>
857</div>
858  </footer>
859
860  <!-- Scripts -->
861  
862  
862<script  src="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.js" ></script>
862
863  <link  rel="stylesheet" href="https://lib.baomitu.com/nprogress/0.2.0/nprogress.min.css" />
864
865  
865<script>
866    NProgress.configure({"showSpinner":false,"trickleSpeed":100})
867    NProgress.start()
868    window.addEventListener('load', function() {
869      NProgress.done();
870    })
871  </script>
871
872
873
874<script  src="https://lib.baomitu.com/jquery/3.6.4/jquery.min.js" ></script>
vendor: 1 bytes, line 874
874
875<script  src="https://lib.baomitu.com/twitter-bootstrap/4.6.1/js/bootstrap.min.js" ></script>
vendor: 1 bytes, line 875
875
876<script  src="/js/events.js" ></script>
vendor: 1 bytes, line 876
876
877<script  src="/js/plugins.js" ></script>
877
878
879
880
881
882
883  
884    
884<script  src="/js/img-lazyload.js" ></script>
884
885  
886
887
888
889
890  
891<script>
892  var relativeDate = function() {
893    var updatedTime = document.getElementById('updated-time');
894    if (updatedTime) {
895      var text = updatedTime.textContent;
896      var reg = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|[+-]\d{2}:\d{2})/;
897      var matchs = text.match(reg);
898      if (matchs) {
899        var relativeTime = moment(matchs[0]).fromNow();
900        updatedTime.textContent = text.replace(reg, relativeTime);
901      }
902      updatedTime.style.display = '';
903    }
904  };
905  Fluid.utils.createScript('https://lib.baomitu.com/moment.js/2.29.4/moment.min.js', function() {
906    if (!'zh-cn'.startsWith('en')) {
907      Fluid.utils.createScript('https://lib.baomitu.com/moment.js/2.29.4/locale/zh-cn.min.js', function() {
908        relativeDate();
909      });
910    } else {
911      relativeDate();
912    }
913  });
914</script>
914
915
916
917  
918<script>
919  Fluid.utils.createScript('https://lib.baomitu.com/tocbot/4.20.1/tocbot.min.js', function() {
920    var toc = jQuery('#toc');
921    if (toc.length === 0 || !window.tocbot) { return; }
922    var boardCtn = jQuery('#board-ctn');
923    var boardTop = boardCtn.offset().top;
924
925    window.tocbot.init(Object.assign({
926      tocSelector     : '#toc-body',
927      contentSelector : '.markdown-body',
928      linkClass       : 'tocbot-link',
929      activeLinkClass : 'tocbot-active-link',
930      listClass       : 'tocbot-list',
931      isCollapsedClass: 'tocbot-is-collapsed',
932      collapsibleClass: 'tocbot-is-collapsible',
933      scrollSmooth    : true,
934      includeTitleTags: true,
935      headingsOffset  : -boardTop,
936    }, CONFIG.toc));
937    if (toc.find('.toc-list-item').length > 0) {
938      toc.css('visibility', 'visible');
939    }
940
941    Fluid.events.registerRefreshCallback(function() {
942      if ('tocbot' in window) {
943        tocbot.refresh();
944        var toc = jQuery('#toc');
945        if (toc.length === 0 || !tocbot) {
946          return;
947        }
948        if (toc.find('.toc-list-item').length > 0) {
949          toc.css('visibility', 'visible');
950        }
951      }
952    });
953  });
954</script>
954
955
956
957  
957<script src=https://lib.baomitu.com/clipboard.js/2.0.11/clipboard.min.js></script>
957
958
959  
959<script>Fluid.plugins.codeWidget();</script>
959
960
961
962  
963<script>
964  Fluid.utils.createScript('https://lib.baomitu.com/anchor-js/5.0.0/anchor.min.js', function() {
965    window.anchors.options = {
966      placement: CONFIG.anchorjs.placement,
967      visible  : CONFIG.anchorjs.visible
968    };
969    if (CONFIG.anchorjs.icon) {
970      window.anchors.options.icon = CONFIG.anchorjs.icon;
971    }
972    var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
973    var res = [];
974    for (var item of el) {
975      res.push('.markdown-body > ' + item.trim());
976    }
977    if (CONFIG.anchorjs.placement === 'left') {
978      window.anchors.options.class = 'anchorjs-link-left';
979    }
980    window.anchors.add(res.join(', '));
981
982    Fluid.events.registerRefreshCallback(function() {
983      if ('anchors' in window) {
984        anchors.removeAll();
985        var el = (CONFIG.anchorjs.element || 'h1,h2,h3,h4,h5,h6').split(',');
986        var res = [];
987        for (var item of el) {
988          res.push('.markdown-body > ' + item.trim());
989        }
990        if (CONFIG.anchorjs.placement === 'left') {
991          anchors.options.class = 'anchorjs-link-left';
992        }
993        anchors.add(res.join(', '));
994      }
995    });
996  });
997</script>
997
998
999
1000  
1001<script>
1002  Fluid.utils.createScript('https://lib.baomitu.com/fancybox/3.5.7/jquery.fancybox.min.js', function() {
1003    Fluid.plugins.fancyBox();
1004  });
1005</script>
1005
1006
1007
1008  
1008<script>Fluid.plugins.imageCaption();</script>
1008
1009
1010  
1010<script defer src="/js/leancloud.js" ></script>
1010
1011
1012  
1012<script  src="/js/local-search.js" ></script>
1012
1013
1014
1015
1016
1017
1018<!-- 主题的启动项,将它保持在最底部 -->
1019<!-- the boot of the theme, keep it at the bottom -->
1020<script  src="/js/boot.js" ></script>
1020
1021
1022
1023  
1023<script type="text/javascript">
1024    document.getElementById("g-post-count-id").innerHTML = "小世界总字数 73k";
1025</script>
1025
1026
1027  <noscript>
1028    <div class="noscript-warning">博客在允许 JavaScript 运行的环境下浏览效果更佳</div>
1029  </noscript>
1030</body>
1031</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.