PageSourceSearch

https://meilbn.com/2024/09/19/how-can-i-get-ipa-of-any-app-which-is-available-on-app-store/

html meilbn.com collected 2026-10-02 16:02:42 UTC 25,400 bytes, 450 lines download raw bytes

1<!DOCTYPE html>
2<html lang="zh-CN">
3<head>
4  <meta charset="UTF-8">
5<meta name="viewport" content="width=device-width">
6<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 6.3.0">
7
8  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
9  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.ico">
10  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.ico">
11  <link rel="mask-icon" href="/images/logo.svg" color="#222">
12
13<link rel="stylesheet" href="/css/main.css">
14
15<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic%7CSource+Code+Pro:300,300italic,400,400italic,700,700italic&display=swap&subset=latin,latin-ext">
16
17<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" integrity="sha256-AbA177XfpSnFEvgpYu1jMygiLabzPCJCRIBtR5jGc0k=" crossorigin="anonymous">
18  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">
19  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/themes/blue/pace-theme-minimal.css">
20  
20<script src="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/pace.min.js" integrity="sha256-gqd7YTjg/BtfqWSwsJOvndl0Bxc8gFImLEkXQT8+qj0=" crossorigin="anonymous"></script>
20
21
22<script class="next-config" data-name="main" type="application/json">{"hostname":"meilbn.com","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.13.2","exturl":false,"sidebar":{"position":"right","display":"post","padding":18,"offset":12},"copycode":{"enable":true,"style":"mac"},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":true,"lazyload":true,"pangu":true,"comments":{"style":"tabs","active":"disqus | disqusjs","storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false}}</script>
22<script src="/js/config.js"></script>
22
23
24    <meta name="description" content="0x00 前言经常抄(啊呸,借鉴)别人 App 设计(或功能)的同学,肯定经常要分析其他人的 App,UI 的话,我一般都是搭配 Reveal 来窥探,看看那些 App 的 UI 结构,因为可以看出一个视图的类名,如果是用了第三方库的话,就能根据这个类名,找到对应的库,就可以直接拿来用,实现几乎一样的效果。 但是如果是功能性的,没有 UI 界面的,这个时候 Reveal 就无能为力了。此时,我们就">
25<meta property="og:type" content="article">
26<meta property="og:title" content="如何获取 App Store 上任意一个 iOS app 的安装包">
27<meta property="og:url" content="https://meilbn.com/2024/09/19/how-can-i-get-ipa-of-any-app-which-is-available-on-app-store/index.html">
28<meta property="og:site_name" content="Happy Hacking">
29<meta property="og:description" content="0x00 前言经常抄(啊呸,借鉴)别人 App 设计(或功能)的同学,肯定经常要分析其他人的 App,UI 的话,我一般都是搭配 Reveal 来窥探,看看那些 App 的 UI 结构,因为可以看出一个视图的类名,如果是用了第三方库的话,就能根据这个类名,找到对应的库,就可以直接拿来用,实现几乎一样的效果。 但是如果是功能性的,没有 UI 界面的,这个时候 Reveal 就无能为力了。此时,我们就">
30<meta property="og:locale" content="zh_CN">
31<meta property="og:image" content="https://s2.loli.net/2024/09/19/w9tdyEgf74Y1mex.png">
32<meta property="og:image" content="https://s2.loli.net/2024/09/19/Q1aBY4fRwxhTvcF.png">
33<meta property="og:image" content="https://s2.loli.net/2024/09/19/BEyx5svOnPlDYXU.png">
34<meta property="og:image" content="https://s2.loli.net/2024/09/19/N9DjpmuTsiAZXvx.png">
35<meta property="og:image" content="https://s2.loli.net/2024/09/19/xJ4wdfGAuWC2sPS.png">
36<meta property="og:image" content="https://s2.loli.net/2024/09/19/3ZGmCFyzWeJrHgb.png">
37<meta property="og:image" content="https://s2.loli.net/2024/09/19/vSkY27MnxeOTAg9.png">
38<meta property="og:image" content="https://s2.loli.net/2024/09/19/D7wz2xAJgthXRQH.png">
39<meta property="og:image" content="https://s2.loli.net/2024/09/19/J6sF27HOdUVYKAa.png">
40<meta property="og:image" content="https://s2.loli.net/2024/09/19/PnO5kLDC3HSsrY6.png">
41<meta property="article:published_time" content="2024-09-19T01:45:14.000Z">
42<meta property="article:modified_time" content="2024-09-19T03:12:32.782Z">
43<meta property="article:author" content="我的眼里只有代码">
44<meta property="article:tag" content="iOS">
45<meta name="twitter:card" content="summary">
46<meta name="twitter:image" content="https://s2.loli.net/2024/09/19/w9tdyEgf74Y1mex.png">
47
48
49<link rel="canonical" href="https://meilbn.com/2024/09/19/how-can-i-get-ipa-of-any-app-which-is-available-on-app-store/">
50
51
52
53<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"https://meilbn.com/2024/09/19/how-can-i-get-ipa-of-any-app-which-is-available-on-app-store/","path":"2024/09/19/how-can-i-get-ipa-of-any-app-which-is-available-on-app-store/","title":"如何获取 App Store 上任意一个 iOS app 的安装包"}</script>
53
54
55<script class="next-config" data-name="calendar" type="application/json">""</script>
55
56<title>如何获取 App Store 上任意一个 iOS app 的安装包 | Happy Hacking</title>
vendor: 71 bytes, lines 56-58
56
57  
58    <script async src="https://www.googletagmanager.com/gtag/js?id=
58UA-69209675-1
vendor: 14 bytes, lines 58-59
58"></script>
59  
59<script class="next-config" data-name="google_analytics" type="application/json">{"tracking_id":"UA-69209675-1","only_pageview":false}</script>
59
60  
60<script src="/js/third-party/analytics/google-analytics.js"></script>
60
61
62
63
64
65
66
67  
67<script async defer data-website-id="" src=""></script>
67
68
69  
69<script defer data-domain="" src=""></script>
69
70
71  <noscript>
72    <link rel="stylesheet" href="/css/noscript.css">
73  </noscript>
74</head>
75
76
77
78<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
79  <div class="headband"></div>
80
81  <main class="main">
82    <div class="column">
83      <header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
84  <div class="site-nav-toggle">
85    <div class="toggle" aria-label="切换导航栏" role="button">
86        <span class="toggle-line"></span>
87        <span class="toggle-line"></span>
88        <span class="toggle-line"></span>
89    </div>
90  </div>
91
92  <div class="site-meta">
93
94    <a href="/" class="brand" rel="start">
95      <i class="logo-line"></i>
96      <p class="site-title">Happy Hacking</p>
97      <i class="logo-line"></i>
98    </a>
99      <p class="site-subtitle" itemprop="description">我的眼里只有代码</p>
100  </div>
101
102  <div class="site-nav-right">
103    <div class="toggle popup-trigger" aria-label="搜索" role="button">
104        <i class="fa fa-search fa-fw fa-lg"></i>
105    </div>
106  </div>
107</div>
108
109
110
111<nav class="site-nav">
112  <ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档<span class="badge">56</span></a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类<span class="badge">12</span></a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签<span class="badge">68</span></a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li>
113      <li class="menu-item menu-item-search">
114        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
115        </a>
116      </li>
117  </ul>
118</nav>
119
120
121
122  <div class="search-pop-overlay">
123    <div class="popup search-popup"><div class="search-header">
124  <span class="search-icon">
125    <i class="fa fa-search"></i>
126  </span>
127  <div class="search-input-container">
128    <input autocomplete="off" autocapitalize="off" maxlength="80"
129           placeholder="搜索..." spellcheck="false"
130           type="search" class="search-input">
131  </div>
132  <span class="popup-btn-close" role="button">
133    <i class="fa fa-times-circle"></i>
134  </span>
135</div>
136<div class="search-result-container no-result">
137  <div class="search-result-icon">
138    <i class="fa fa-spinner fa-pulse fa-5x"></i>
139  </div>
140</div>
141
142    </div>
143  </div>
144
145</header>
146        
147  
148  <aside class="sidebar">
149
150    <div class="sidebar-inner sidebar-nav-active sidebar-toc-active">
151      <ul class="sidebar-nav">
152        <li class="sidebar-nav-toc">
153          文章目录
154        </li>
155        <li class="sidebar-nav-overview">
156          站点概览
157        </li>
158      </ul>
159
160      <div class="sidebar-panel-container">
161        <!--noindex-->
162        <div class="post-toc-wrap sidebar-panel">
163            <div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#0x00-%E5%89%8D%E8%A8%80"><span class="nav-number">1.</span> <span class="nav-text">0x00 前言</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#0x01-%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C"><span class="nav-number">2.</span> <span class="nav-text">0x01 准备工作</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#0x02-%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%8F%AF%E8%83%BD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98"><span class="nav-number">3.</span> <span class="nav-text">0x02 过程中可能遇到的问题</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#0x03-%E5%AF%BC%E5%87%BA-Assets-car"><span class="nav-number">4.</span> <span class="nav-text">0x03 导出 Assets.car</span></a></li></ol></div>
164        </div>
165        <!--/noindex-->
166
167        <div class="site-overview-wrap sidebar-panel">
168          <div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
169    <img class="site-author-image" itemprop="image" alt="我的眼里只有代码"
170      src="/images/avatar.jpg">
171  <p class="site-author-name" itemprop="name">我的眼里只有代码</p>
172  <div class="site-description" itemprop="description">You are the code of my eye.<br>'Cause you are the apple of my eye.</div>
173</div>
174<div class="site-state-wrap animated">
175  <nav class="site-state">
176      <div class="site-state-item site-state-posts">
177        <a href="/archives/">
178          <span class="site-state-item-count">56</span>
179          <span class="site-state-item-name">日志</span>
180        </a>
181      </div>
182      <div class="site-state-item site-state-categories">
183          <a href="/categories/">
184        <span class="site-state-item-count">12</span>
185        <span class="site-state-item-name">分类</span></a>
186      </div>
187      <div class="site-state-item site-state-tags">
188          <a href="/tags/">
189        <span class="site-state-item-count">68</span>
190        <span class="site-state-item-name">标签</span></a>
191      </div>
192  </nav>
193</div>
194  <div class="links-of-author animated">
195      <span class="links-of-author-item">
196        <a href="https://github.com/meilbn" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;meilbn" rel="noopener" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
197      </span>
198      <span class="links-of-author-item">
199        <a href="https://weibo.com/fuckingcode" title="Weibo → https:&#x2F;&#x2F;weibo.com&#x2F;fuckingcode" rel="noopener" target="_blank"><i class="fab fa-weibo fa-fw"></i>Weibo</a>
200      </span>
201      <span class="links-of-author-item">
202        <a href="https://twitter.com/meilbn" title="Twitter → https:&#x2F;&#x2F;twitter.com&#x2F;meilbn" rel="noopener" target="_blank"><i class="fab fa-twitter fa-fw"></i>Twitter</a>
203      </span>
204      <span class="links-of-author-item">
205        <a href="https://www.facebook.com/meilbn" title="FB Page → https:&#x2F;&#x2F;www.facebook.com&#x2F;meilbn" rel="noopener" target="_blank"><i class="fab fa-facebook fa-fw"></i>FB Page</a>
206      </span>
207      <span class="links-of-author-item">
208        <a href="https://stackoverflow.com/users/4318339/meilbn" title="StackOverflow → https:&#x2F;&#x2F;stackoverflow.com&#x2F;users&#x2F;4318339&#x2F;meilbn" rel="noopener" target="_blank"><i class="fab fa-stack-overflow fa-fw"></i>StackOverflow</a>
209      </span>
210      <span class="links-of-author-item">
211        <a href="https://instagram.com/meilbn" title="Instagram → https:&#x2F;&#x2F;instagram.com&#x2F;meilbn" rel="noopener" target="_blank"><i class="fab fa-instagram fa-fw"></i>Instagram</a>
212      </span>
213  </div>
214
215        </div>
216      </div>
217    </div>
218
219    
220  </aside>
221
222
223    </div>
224
225    <div class="main-inner post posts-expand">
226
227
228  
229
230
231<div class="post-block">
232  
233  
234
235  <article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN">
236    <link itemprop="mainEntityOfPage" href="https://meilbn.com/2024/09/19/how-can-i-get-ipa-of-any-app-which-is-available-on-app-store/">
237
238    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
239      <meta itemprop="image" content="/images/avatar.jpg">
240      <meta itemprop="name" content="我的眼里只有代码">
241    </span>
242
243    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
244      <meta itemprop="name" content="Happy Hacking">
245      <meta itemprop="description" content="You are the code of my eye.<br>'Cause you are the apple of my eye.">
246    </span>
247
248    <span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
249      <meta itemprop="name" content="如何获取 App Store 上任意一个 iOS app 的安装包 | Happy Hacking">
250      <meta itemprop="description" content="">
251    </span>
252      <header class="post-header">
253        <h1 class="post-title" itemprop="name headline">
254          如何获取 App Store 上任意一个 iOS app 的安装包
255        </h1>
256
257        <div class="post-meta-container">
258          <div class="post-meta">
259    <span class="post-meta-item">
260      <span class="post-meta-item-icon">
261        <i class="far fa-calendar"></i>
262      </span>
263      <span class="post-meta-item-text">发表于</span>
264      
265
266      <time title="创建时间:2024-09-19 09:45:14 / 修改时间:11:12:32" itemprop="dateCreated datePublished" datetime="2024-09-19T09:45:14+08:00">2024-09-19</time>
267    </span>
268    <span class="post-meta-item">
269      <span class="post-meta-item-icon">
270        <i class="far fa-folder"></i>
271      </span>
272      <span class="post-meta-item-text">分类于</span>
273        <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
274          <a href="/categories/iOS/" itemprop="url" rel="index"><span itemprop="name">iOS</span></a>
275        </span>
276    </span>
277
278  
279    <span id="/2024/09/19/how-can-i-get-ipa-of-any-app-which-is-available-on-app-store/" class="post-meta-item leancloud_visitors" data-flag-title="如何获取 App Store 上任意一个 iOS app 的安装包" title="阅读次数">
280      <span class="post-meta-item-icon">
281        <i class="far fa-eye"></i>
282      </span>
283      <span class="post-meta-item-text">阅读次数:</span>
284      <span class="leancloud-visitors-count"></span>
285    </span>
286</div>
287
288        </div>
289      </header>
290
291    
292    
293    
294    <div class="post-body" itemprop="articleBody">
295        <h1 id="0x00-前言"><a href="#0x00-前言" class="headerlink" title="0x00 前言"></a>0x00 前言</h1><p>经常抄(啊呸,借鉴)别人 App 设计(或功能)的同学,肯定经常要分析其他人的 App,UI 的话,我一般都是搭配 <code>Reveal</code> 来窥探,看看那些 App 的 UI 结构,因为可以看出一个视图的类名,如果是用了第三方库的话,就能根据这个类名,找到对应的库,就可以直接拿来用,实现几乎一样的效果。</p>
296<p>但是如果是功能性的,没有 UI 界面的,这个时候 <code>Reveal</code> 就无能为力了。此时,我们就需要获取这个 App 的安装包,查看里面集成了哪些 SDK。</p>
297<p>这时候,我们有几个办法。</p>
298<ol>
299<li><p>通过一个已经越狱了的手机,下载安装目标 App,然后根据我之前写过的<a href="https://meilbn.com/2015/08/19/iosre-find-app-installation-and-sandbox-directory/">这个文章</a>来导出已解密的 App。</p>
300</li>
301<li><p>如果手上没有合适的已越狱的手机,那么就祭出 Apple 官方提供的 <code>Apple Configurator</code>,下载地址在<a target="_blank" rel="noopener" href="https://apps.apple.com/app/id1037126344">这里</a>。</p>
302</li>
303</ol>
304<span id="more"></span>
305
306<h1 id="0x01-准备工作"><a href="#0x01-准备工作" class="headerlink" title="0x01 准备工作"></a>0x01 准备工作</h1><ol>
307<li><p>下载安装 <code>Apple Configurator</code></p>
308</li>
309<li><p>将手机与 Mac 通过数据线连接,打开 <code>Apple Configurator</code>,会显示连接的手机<br><img data-src="https://s2.loli.net/2024/09/19/w9tdyEgf74Y1mex.png" alt="00"></p>
310</li>
311<li><p>双击手机进入,还需要先登录你的苹果账号<br><img data-src="https://s2.loli.net/2024/09/19/Q1aBY4fRwxhTvcF.png" alt="01"></p>
312</li>
313<li><p>点击 <code>+ 号</code>,选择 <code>Apps</code><br><img data-src="https://s2.loli.net/2024/09/19/BEyx5svOnPlDYXU.png" alt="02"></p>
314</li>
315<li><p>搜索你的目标 App(这里为了演示,我选择了一个安装包比较小的 ONE),然后选中目标 App 之后点击右下角的 <code>Add</code><br><img data-src="https://s2.loli.net/2024/09/19/N9DjpmuTsiAZXvx.png" alt="03"></p>
316</li>
317<li><p>等待 IPA 下载完毕,出现这个弹窗时,不要点击任何按钮(_注意,实测手机上也需要安装相同版本的目标 App,才会出现这个弹窗,否则可能会直接更新手机上的 App 到 App Store 最新版,弹窗不出现_)<br><img data-src="https://s2.loli.net/2024/09/19/xJ4wdfGAuWC2sPS.png" alt="04"><br><img data-src="https://s2.loli.net/2024/09/19/3ZGmCFyzWeJrHgb.png" alt="05"></p>
318</li>
319<li><p>Finder 进入如下目录:<br><code>~/Library/Group Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps/</code><br>可以找到刚下载的这个 App<br><img data-src="https://s2.loli.net/2024/09/19/vSkY27MnxeOTAg9.png" alt="06"></p>
320</li>
321<li><p>将其移动或复制到其他方便操作的目录,修改其扩展名为 <code>.zip</code>,然后解压,就可以看到里面的 <code>.app</code> 文件了,然后右键菜单选择 <code>显示包内容</code>,进入 App 文件,就可以查看里面的各种文件了。</p>
322</li>
323</ol>
324<h1 id="0x02-过程中可能遇到的问题"><a href="#0x02-过程中可能遇到的问题" class="headerlink" title="0x02 过程中可能遇到的问题"></a>0x02 过程中可能遇到的问题</h1><p>我之前在 <code>
324Apple Configurator</code> 里面已经登录过苹果账号了,这次演示的时候,打开发现报错,不能显示和搜索 App 了:<br><img data-src="https://s2.loli.net/2024/09/19/D7wz2xAJgthXRQH.png" alt="07"></p>
325<p>根据提示文字,可能是登录过期了,然后就在顶部菜单栏中点击 <code>Account</code>,选择 <code>Sign Out...</code>,然后重新登录即可。<br><img data-src="https://s2.loli.net/2024/09/19/J6sF27HOdUVYKAa.png" alt="08"><br><img data-src="https://s2.loli.net/2024/09/19/PnO5kLDC3HSsrY6.png" alt="09"></p>
326<h1 id="0x03-导出-Assets-car"><a href="#0x03-导出-Assets-car" class="headerlink" title="0x03 导出 Assets.car"></a>0x03 导出 Assets.car</h1><p>如果是对 App 内的图片资源文件感兴趣,除了包内可以直接拿到的图片文件,还有大部分图片是在 <code>Assets.car</code> 文件里面的,可以使用开源的 <code>Asset Catalog Tinkerer</code> 来导出这些图片资源,下载地址在<a target="_blank" rel="noopener" href="https://github.com/insidegui/AssetCatalogTinkerer">这里</a>。</p>
327
328    </div>
329
330    
331    
332    
333
334    <footer class="post-footer">
335          <div class="post-tags">
336              <a href="/tags/iOS/" rel="tag"># iOS</a>
337          </div>
338
339        
340
341          <div class="post-nav">
342            <div class="post-nav-item">
343                <a href="/2023/12/27/app-everything-tips/" rel="prev" title="EveryThing 使用小技巧">
344                  <i class="fa fa-chevron-left"></i> EveryThing 使用小技巧
345                </a>
346            </div>
347            <div class="post-nav-item">
348            </div>
349          </div>
350    </footer>
351  </article>
352</div>
353
354
355
356
357
358
359    
360  <div class="comments disqusjs">
361    <noscript>Please enable JavaScript to view the comments powered by Disqus.</noscript>
362  </div>
363  
364</div>
365  </main>
366
367  <footer class="footer">
368    <div class="footer-inner">
369
370
371<div class="copyright">
372  &copy; 2015 – 
373  <span itemprop="copyrightYear">2024</span>
374  <span class="with-love">
375    <i class="fa fa-heart"></i>
376  </span>
377  <span class="author" itemprop="copyrightHolder">我的眼里只有代码</span>
378</div>
379<div class="busuanzi-count">
380    <span class="post-meta-item" id="busuanzi_container_site_uv">
381      <span class="post-meta-item-icon">
382        <i class="fa fa-user"></i>
383      </span>
384      <span class="site-uv" title="总访客量">
385        <span id="busuanzi_value_site_uv"></span>
386      </span>
387    </span>
388    <span class="post-meta-item" id="busuanzi_container_site_pv">
389      <span class="post-meta-item-icon">
390        <i class="fa fa-eye"></i>
391      </span>
392      <span class="site-pv" title="总访问量">
393        <span id="busuanzi_value_site_pv"></span>
394      </span>
395    </span>
396</div>
397  <div class="powered-by">由 <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/muse/" rel="noopener" target="_blank">NexT.Muse</a> 强力驱动
398  </div>
399
400    </div>
401  </footer>
402
403  
404  <div class="toggle sidebar-toggle" role="button">
405    <span class="toggle-line"></span>
406    <span class="toggle-line"></span>
407    <span class="toggle-line"></span>
408  </div>
409  <div class="sidebar-dimmer"></div>
410  <div class="back-to-top" role="button" aria-label="返回顶部">
411    <i class="fa fa-arrow-up fa-lg"></i>
412    <span>0%</span>
413  </div>
414  <div class="reading-progress-bar"></div>
415
416<noscript>
417  <div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
418</noscript>
419
420
421  
422  
422<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous"></script>
422
423  
423<script src="https://cdnjs.cloudflare.com/ajax/libs/medium-zoom/1.0.6/medium-zoom.min.js" integrity="sha256-EdPgYcPk/IIrw7FYeuJQexva49pVRZNmt3LculEr7zM=" crossorigin="anonymous"></script>
423
424  
424<script src="https://cdnjs.cloudflare.com/ajax/libs/lozad.js/1.16.0/lozad.min.js" integrity="sha256-mOFREFhqmHeQbXpK2lp4nA3qooVgACfh88fpJftLBbc=" crossorigin="anonymous"></script>
424
425  
425<script src="https://cdnjs.cloudflare.com/ajax/libs/pangu/4.0.7/pangu.min.js" integrity="sha256-j+yj56cdEY2CwkVtGyz18fNybFGpMGJ8JxG3GSyO2+I=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 425
425
426<script src="/js/comments.js"></script>
426<script src="/js/utils.js"></script>
426<script src="/js/motion.js"></script>
426<script src="/js/schemes/muse.js"></script>
426<script src="/js/next-boot.js"></script>
426
427
428  
428<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.4.1/search.js" integrity="sha256-1kfA5uHPf65M5cphT2dvymhkuyHPQp5A53EGZOnOLmc=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 428
428
429<script src="/js/third-party/search/local-search.js"></script>
429
430
431
432
433
434  
434<script src="/js/third-party/pace.js"></script>
434
435
436  
437  
437<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
437
438
439
440  
440<script class="next-config" data-name="leancloud_visitors" type="application/json">{"enable":true,"app_id":"dFo2NvCcL1s5zeJtuvzonGrj-gzGzoHsz","app_key":"3gyJUovHABTEqJVyX08exA3z","server_url":"https://dfo2nvcc.lc-cn-n1-shared.com","security":true,"betterPerformance":true}</script>
440
441  
441<script src="/js/third-party/statistics/lean-analytics.js"></script>
441
442
443
444<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/disqusjs/3.0.2/styles/disqusjs.css" integrity="sha256-71XarXwNr1Td27HmZI9zjY+rMzRdush6/glo6VFXp7o=" crossorigin="anonymous">
445
446<script class="next-config" data-name="disqusjs" type="application/json">{"enable":true,"api":"https://disqus.skk.moe/disqus/","apikey":"uj8xezGVZDTcz9VxvSxN8dCZF9vA2FgKyRXo2Bxfz3sAOc64cyH6GboKmy4KeAlZ","shortname":"ihappyhacking","js":{"url":"https://cdnjs.cloudflare.com/ajax/libs/disqusjs/3.0.2/disqusjs.es2015.umd.min.js","integrity":"sha256-okP99ZQKVpIy7+NogAMpGlIQzJa9XKXhIJcFgdju5bU="}}</script>
vendor: 1 bytes, line 446
446
447<script src="/js/third-party/comments/disqusjs.js"></script>
447
448
449</body>
450</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.