PageSourceSearch

https://zhangslob.github.io/2020/05/19/AutoJs-mitmproxy-App%E7%88%AC%E8%99%AB/

html zhangslob.github.io collected 2026-10-03 10:14:28 UTC 35,974 bytes, 1,029 lines download raw bytes

1<!doctype html>
2
3
4
5  
6
7<!-- Google AdSense start -->
8<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
vendor: 1 bytes, line 8
8
9<script>
10  (adsbygoogle = window.adsbygoogle || []).push({
11    google_ad_client: "ca-pub-9028627160282216",
12    enable_page_level_ads: true
13  });
14</script>
14
15
16<!-- Google AdSense end -->
17<html class="theme-next pisces use-motion" lang="zh-Hans">
18<head>
19  <meta charset="UTF-8"/>
20<meta http-equiv="X-UA-Compatible" content="IE=edge" />
21<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
22
23
24
25<meta http-equiv="Cache-Control" content="no-transform" />
26<meta http-equiv="Cache-Control" content="no-siteapp" />
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42  
43  
44  <link href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />
45
46
47
48
49  
50  
51  
52  
53
54  
55    
56    
57  
58
59  
60
61  
62
63  
64
65  
66
67  
68    
69    
70    <link href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
71  
72
73
74
75
76
77
78<link href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css" />
79
80<link href="/css/main.css?v=5.1.0" rel="stylesheet" type="text/css" />
81
82
83  <meta name="keywords" content="Hexo, NexT" />
84
85
86
87
88
89  <link rel="alternate" href="/atom.xml" title="小歪的博客" type="application/atom+xml" />
90
91
92
93
94  <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?v=5.1.0" />
95
96
97
98
99
100
101<meta name="description" content="1这是崔斯特的第一百二十一篇原创文章
102App爬虫  (๑• . •๑)">
103<meta property="og:type" content="article">
104<meta property="og:title" content="AutoJs+mitmproxy App爬虫">
105<meta property="og:url" content="https://zhangslob.github.io/2020/05/19/AutoJs-mitmproxy-App爬虫/index.html">
106<meta property="og:site_name" content="小歪的博客">
107<meta property="og:description" content="1这是崔斯特的第一百二十一篇原创文章
108App爬虫  (๑• . •๑)">
109<meta property="og:image" content="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/AvLewa.png">
110<meta property="og:image" content="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/3GXey8.png">
111<meta property="og:image" content="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/lV5Mco.jpg">
112<meta property="og:image" content="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/mwo1cW.jpg">
113<meta property="og:image" content="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/hRDvgZ.jpg">
114<meta property="og:image" content="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/3AD4iU.jpg">
115<meta property="og:updated_time" content="2020-05-19T13:51:40.995Z">
116<meta name="twitter:card" content="summary">
117<meta name="twitter:title" content="AutoJs+mitmproxy App爬虫">
118<meta name="twitter:description" content="1这是崔斯特的第一百二十一篇原创文章
119App爬虫  (๑• . •๑)">
120<meta name="twitter:image" content="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/AvLewa.png">
121
122
123
124<script type="text/javascript" id="hexo.configurations">
125  var NexT = window.NexT || {};
126  var CONFIG = {
127    root: '/',
128    scheme: 'Pisces',
129    sidebar: {"position":"left","display":"post","offset":12,"offset_float":0,"b2t":false,"scrollpercent":false},
130    fancybox: true,
131    motion: true,
132    duoshuo: {
133      userId: 'undefined',
134      author: '博主'
135    },
136    algolia: {
137      applicationID: '',
138      apiKey: '',
139      indexName: '',
140      hits: {"per_page":10},
141      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
142    }
143  };
144</script>
144
145
146
147
148  <link rel="canonical" href="https://zhangslob.github.io/2020/05/19/AutoJs-mitmproxy-App爬虫/"/>
149
150
151
152
153
154  <title> AutoJs+mitmproxy App爬虫 | 小歪的博客 </title>
155</head>
156
157
158
159<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">
160
161  
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176  
177  
178    
179  
180
181  <div class="container one-collumn sidebar-position-left page-post-detail ">
182    <div class="headband"></div>
183    <!-- <a href="https://github.com/zhangslob"><img style="position: absolute; top: 0; left: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_left_darkblue_121621.png" alt="Fork me on GitHub"></a> -->
184    <a target="_blank" href="https://github.com/zhangslob"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"></a>
185
186    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
187      <div class="header-inner"><div class="site-brand-wrapper">
188  <div class="site-meta ">
189    
190
191    <div class="custom-logo-site-title">
192      <a href="/"  class="brand" rel="start">
193        <span class="logo-line-before"><i></i></span>
194        <span class="site-title">小歪的博客</span>
195        <span class="logo-line-after"><i></i></span>
196      </a>
197    </div>
198      
199        <p class="site-subtitle">人生苦短,我学Python</p>
200      
201  </div>
202
203  <div class="site-nav-toggle">
204    <button>
205      <span class="btn-bar"></span>
206      <span class="btn-bar"></span>
207      <span class="btn-bar"></span>
208    </button>
209  </div>
210</div>
211
212<nav class="site-nav">
213  
214
215  
216    <ul id="menu" class="menu">
217      
218        
219        <li class="menu-item menu-item-home">
220          <a href="/" rel="section">
221            
222              <i class="menu-item-icon fa fa-fw fa-home"></i> <br />
223            
224            首页
225          </a>
226        </li>
227      
228        
229        <li class="menu-item menu-item-categories">
230          <a href="/categories" rel="section">
231            
232              <i class="menu-item-icon fa fa-fw fa-th"></i> <br />
233            
234            分类
235          </a>
236        </li>
237      
238        
239        <li class="menu-item menu-item-about">
240          <a href="/about" rel="section">
241            
242              <i class="menu-item-icon fa fa-fw fa-user"></i> <br />
243            
244            关于
245          </a>
246        </li>
247      
248        
249        <li class="menu-item menu-item-archives">
250          <a href="/archives" rel="section">
251            
252              <i class="menu-item-icon fa fa-fw fa-archive"></i> <br />
253            
254            归档
255          </a>
256        </li>
257      
258        
259        <li class="menu-item menu-item-tags">
260          <a href="/tags" rel="section">
261            
262              <i class="menu-item-icon fa fa-fw fa-tags"></i> <br />
263            
264            标签
265          </a>
266        </li>
267      
268        
269        <li class="menu-item menu-item-leetcode">
270          <a href="/leetcode/" rel="section">
271            
272              <i class="menu-item-icon fa fa-fw fa-calendar"></i> <br />
273            
274            menu.leetcode
275          </a>
276        </li>
277      
278
279      
280        <li class="menu-item menu-item-search">
281          
282            <a href="javascript:;" class="popup-trigger">
283          
284            
285              <i class="menu-item-icon fa fa-search fa-fw"></i> <br />
286            
287            搜索
288          </a>
289        </li>
290      
291    </ul>
292  
293
294  
295    <div class="site-search">
296      
297  <div class="popup local-search-popup">
298  <div class="local-search-header clearfix">
299    <span class="search-icon">
300      <i class="fa fa-search"></i>
301    </span>
302    <span class="popup-btn-close">
303      <i class="fa fa-times-circle"></i>
304    </span>
305    <div class="local-search-input-wrapper">
306      <input autocapitalize="off" autocomplete="off" autocorrect="off" placeholder="搜索..." spellcheck="false" type="text" id="local-search-input">
307    </div>
308  </div>
309  <div id="local-search-result"></div>
310</div>
311
312
313
314    </div>
315  
316</nav>
317
318
319
320 </div>
321    </header>
322
323    <main id="main" class="main">
324      <div class="main-inner">
325        <div class="content-wrap">
326          <div id="content" class="content">
327            
328
329  <div id="posts" class="posts-expand">
330    
331
332  
333
334  
335  
336  
337
338  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
339    <link itemprop="mainEntityOfPage" href="https://zhangslob.github.io/2020/05/19/AutoJs-mitmproxy-App爬虫/">
340
341    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
342      <meta itemprop="name" content="崔斯特">
343      <meta itemprop="description" content="">
344      <meta itemprop="image" content="https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1488291259&di=9b54b1ab9a4a02ec51e4344e960692d6&src=http://ni.ppsrc.com/aR24MryiGC7HFCEJTB-wgQ@640w_640h_75Q.jpeg">
345    </span>
346
347    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
348      <meta itemprop="name" content="小歪的博客">
349    </span>
350
351    
352      <header class="post-header">
353
354        
355        
356          <h1 class="post-title" itemprop="name headline">
357            
358            
359              
360                AutoJs+mitmproxy App爬虫
361              
362            
363          </h1>
364        
365
366        <div class="post-meta">
367          <span class="post-time">
368            
369              <span class="post-meta-item-icon">
370                <i class="fa fa-calendar-o"></i>
371              </span>
372              
373                <span class="post-meta-item-text">发表于</span>
374              
375              <time title="创建于" itemprop="dateCreated datePublished" datetime="2020-05-19T20:39:34+08:00">
376                2020-05-19
377              </time>
378            
379
380            
381
382            
383          </span>
384
385          
386            <span class="post-category" >
387            
388              <span class="post-meta-divider">|</span>
389            
390              <span class="post-meta-item-icon">
391                <i class="fa fa-folder-o"></i>
392              </span>
393              
394                <span class="post-meta-item-text">分类于</span>
395              
396              
397                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
398                  <a href="/categories/爬虫/" itemprop="url" rel="index">
399                    <span itemprop="name">爬虫</span>
400                  </a>
401                </span>
402
403                
404                
405              
406            </span>
407          
408
409          
410            
411          
412
413          
414          
415
416          
417
418          
419
420          
421
422        </div>
423      </header>
424    
425
426
427    <div class="post-body" itemprop="articleBody">
428
429      
430      
431
432      
433        <p><img src="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/AvLewa.png" alt="AvLewa"></p>
434<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">这是崔斯特的第一百二十一篇原创文章</div></pre></td></tr></table></figure>
435<p>App爬虫  (๑• . •๑)</p>
436<a id="more"></a>
437<p>#AutoJs</p>
438<h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>官方文档:<a href="https://hyb1996.github.io/AutoJs-Docs/#/" target="_blank" rel="external">https://hyb1996.github.io/AutoJs-Docs/#/</a></p>
439<p>Github:<a href="https://github.com/hyb1996/Auto.js" target="_blank" rel="external">https://github.com/hyb1996/Auto.js</a></p>
440<p>官方论坛:<a href="https://www.autojs.org/" target="_blank" rel="external">https://www.autojs.org/</a></p>
441<p>非官方文档:<a href="https://easydoc.xyz/doc/25791054/uw2FUUiw/3bEzXb4y" target="_blank" rel="external">https://easydoc.xyz/doc/25791054/uw2FUUiw/3bEzXb4y</a></p>
442<p>AutoJs是一款不需要Root权限的JavaScript自动化软件,简单来说就是手机上的“脚本精灵”。</p>
443<p>现在官方已经不在提供下载途径了,具体原因可以去这里参观:<a href="https://github.com/hyb1996/Auto.js/issues/500" target="_blank" rel="external">貌似Auto.js在酷安中已经被下架了</a></p>
444<p><img src="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/3GXey8.png" alt="3GXey8"></p>
445<blockquote>
446<p>非官方文档中有下载地址</p>
447</blockquote>
448<h2 id="使用">
448<a href="#使用" class="headerlink" title="使用"></a>使用</h2><p>推荐使用AutoJsPro,本教程基于AutoJsPro</p>
449<p>下载安装之后,需要打开几个权限:</p>
450<ol>
451<li>无障碍</li>
452<li>悬浮窗</li>
453<li>远程调试</li>
454</ol>
455<p>环境配置参考:<a href="https://easydoc.xyz/doc/25791054/uw2FUUiw/F30Lmx8U" target="_blank" rel="external">https://easydoc.xyz/doc/25791054/uw2FUUiw/F30Lmx8U</a></p>
456<p>远程链接参考:<a href="https://www.autojs.org/topic/3551/auto-js-pro如何连接vs-code插件" target="_blank" rel="external">Auto.js Pro如何连接VS Code插件</a></p>
457<h2 id="基础操作"><a href="#基础操作" class="headerlink" title="基础操作"></a>基础操作</h2><h3 id="打开应用"><a href="#打开应用" class="headerlink" title="打开应用"></a>打开应用</h3><figure class="highlight javascript"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line"><span class="comment">//启动APP</span></div><div class="line"><span class="keyword">if</span> (currentPackage() != <span class="string">"com.chaoxing.mobile"</span>) &#123;</div><div class="line">    toast(<span class="string">"即将打开超星!"</span>);</div><div class="line">    <span class="comment">//直接打开学习通</span></div><div class="line">    app.launchApp(<span class="string">"学习通"</span>);</div><div class="line">&#125; <span class="keyword">else</span> &#123;</div><div class="line">    toast(<span class="string">"已经在学习通中,即将开始进行下一步操作!"</span>);</div><div class="line">&#125;;</div></pre></td></tr></table></figure>
458<p>获取当前activity方法,支付为例,<code>com.zhihu.android</code>就是currentPackage</p>
459<figure class="highlight cmd"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">➜  ~ adb shell dumpsys window | grep mCurrent</div><div class="line">    mCurrentAppOrientation=SCREEN_ORIENTATION_PORTRAIT</div><div class="line">      mCurrentRotation=ROTATION_0</div><div class="line">        mCurrentUserId=<span class="number">0</span></div><div class="line">      mCurrentUserId=<span class="number">0</span></div><div class="line">    mCurrent=[<span class="number">0</span>,<span class="number">72</span>][<span class="number">1080</span>,<span class="number">1920</span>]</div><div class="line">  mCurrentFocus=Window&#123;<span class="number">38</span>aea79 u0 com.zhihu.android/com.zhihu.android.app.ui.activity.MainActivity&#125;</div></pre></td></tr></table></figure>
460<h3 id="点击按钮"><a href="#点击按钮" class="headerlink" title="点击按钮"></a>点击按钮</h3><p>打开悬浮窗的第三个按钮</p>
461<p><img src="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/lV5Mco.jpg" alt="lV5Mco"></p>
462<p><img src="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/mwo1cW.jpg" alt="mwo1cW"></p>
463<p>比如我们现在点击发现按钮,会有弹窗,点击生成代码,如下图</p>
464<p><img src="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/hRDvgZ.jpg" alt="hRDvgZ"></p>
465<p>就有代码了,可以直接拷贝到电脑中,所以如果你是在手机上编辑,会要命的。一定要把VSCode环境安装好。</p>
466<p>如果你发现某个按钮是可以找到的,但是执行了<code>id(&quot;hello&quot;).findOne().click()</code>后,并没有点击动作,你可以实时这种方法,需要安卓7以上才行</p>
467<p>如果一个控件本身无法通过<code>click()</code>点击,那么我们可以利用<code>bounds()</code>函数获取其坐标,再利用坐标点击。例如:</p>
468<figure class="highlight javascript"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">var</span> b = desc(<span class="string">"打开侧拉菜单"</span>).findOne().bounds();</div><div class="line">click(b.centerX(), b.centerY());</div><div class="line"><span class="comment">// 如果使用root权限,则用 Tap(b.centerX(), b.centerY());
468</span></div></pre></td></tr></table></figure>
469<p>有一些APP的组件,它们的id、text、desc等节点值是空值。className值又不是页面上唯一的。<br>还有的组件id是动态变化的。可以尝试下面几种方法:</p>
470<ul>
471<li>寻找父组件。如果该组件的父组件,或者爷组件存在固定的id、text、desc,就先定位到父组件,然后使用find()函数遍历父组件的子组件。最后通过className、depth、组件的索引等来判断是否为指定的组件。</li>
472<li>寻找子组件。如果该组件的子组件,或者孙组件存在固定的id、text、desc,就先定位到子组件,然后使用parent()函数获取父组件对象。最后通过className、depth、组件的索引等来判断是否为指定的组件。</li>
473<li>寻找兄弟组件。如果该组件的兄弟组件存在固定的id、text、desc,就先定位到兄弟组件,然后使用parent()函数获取父组件对象。接下来使用find()函数遍历父组件的子组件。最后通过className、depth、组件的索引等来判断是否为指定的组件。</li>
474</ul>
475<h1 id="mitmproxy"><a href="#mitmproxy" class="headerlink" title="mitmproxy"></a>mitmproxy</h1><p>使用AutoJs自动化操作后,是可以让手机自动化了,但是怎么抓取数据呢,这里使用mitmproxy是最快的。</p>
476<h2 id="环境配置"><a href="#环境配置" class="headerlink" title="环境配置"></a>环境配置</h2><p>安装:<code>pip3 install mitmproxy</code></p>
477<p>终端输入 <code>mitmproxy</code>后</p>
478<p><img src="https://raw.githubusercontent.com/zhangslob/oss/master/uPic/3AD4iU.jpg" alt="3AD4iU"></p>
479<figure class="highlight cmd"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">➜  ~ <span class="built_in">cd</span> ~/.mitmproxy</div><div class="line">➜  .mitmproxy ls</div><div class="line">config.yaml           mitmproxy-ca-cert.pem mitmproxy-dhparam.pem</div><div class="line">mitmproxy-ca-cert.cer mitmproxy-ca.p12</div><div class="line">mitmproxy-ca-cert.p12 mitmproxy-ca.pem</div></pre></td></tr></table></figure>
480<p>可以在如下位置找到证书,然后安装。</p>
481<p>手机在wifi处配置完成后打开<code>mitm.it</code>,下载安装信任证书即可。</p>
482<h2 id="数据获取"><a href="#数据获取" class="headerlink" title="数据获取"></a>数据获取</h2><p>编写脚本<code>script.py</code></p>
483<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">import json</div><div class="line">import os</div><div class="line"></div><div class="line">from mitmproxy.http import flow</div><div class="line"></div><div class="line">def response(flow: flow):</div><div class="line">    print(flow.request.url, flow.response.text)</div><div class="line"></div><div class="line">if __name__ == &apos;__main__&apos;:</div><div class="line">    os.system(&quot;mitmdump -s script.py&quot;)</div></pre></td></tr></table></figure>
484<h2 id="安卓7问题"><a href="#安卓7问题" class="headerlink" title="安卓7问题"></a>安卓7问题</h2><p>出于网络安全的角度考虑,默认情况下,面向 Android 7.0 的应用开始只信任系统提供的证书(system),且不再信任用户添加的证书(user)。</p>
485<p>为了解决这个问题,需要Xposed+JustTrustMe去解决,否则网络不同。所以手机必须root。</p>
486<p>详细教程,参考<a href="https://crifan.github.io/app_capture_package_tool_charles/website/how_capture_app/complex_https/https_ssl_pinning/root_android_xposed_justtrustme.html" target="_blank" rel="external">已root的安卓+XPosed+JustTrustMe破解ssl pinning</a></p>
487
488      
489    </div>
490
491    <div>
492      
493        
494
495      
496    </div>
497
498    <div>
499      
500        
501
502      
503    </div>
504
505
506    <footer class="post-footer">
507      
508
509      
510        
511      
512
513      
514        <div class="post-nav">
515          <div class="post-nav-next post-nav-item">
516            
517              <a href="/2020/04/19/数组知识/" rel="next" title="数组知识">
518                <i class="fa fa-chevron-left"></i> 数组知识
519              </a>
520            
521          </div>
522
523          <span class="post-nav-divider"></span>
524
525          <div class="post-nav-prev post-nav-item">
526            
527          </div>
528        </div>
529      
530
531      
532      
533    </footer>
534  </article>
535
536
537
538    <div class="post-spread">
539      
540    </div>
541  </div>
542  <!-- 下一行是要添加的代码 start  -->
543  <!-- Link Gitalk 的支持文件  -->
544    <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
545    
545<script src="https://unpkg.com/gitalk@latest/dist/gitalk.min.js"></script>
545 
546    
546<script src="/js/src/md5.min.js"></script>
546
547    <div id="gitalk-container"></div>     
547<script type="text/javascript">
548    var gitalk = new Gitalk({
549
550    // gitalk的主要参数
551        clientID: '5ec2f8855d35458a8251',
552        clientSecret: 'bba153b77a0beb4c104a1eefc4132cf2b794f44f',
553        repo: 'zhangslob.github.io',
554        owner: 'zhangslob',
555        admin: ['zhangslob'],
556        id: md5(location.pathname),
557
558    });
559    gitalk.render('gitalk-container');
560  </script>
560 
561  <!-- Gitalk end -->
562  <!-- 到一上行结束 end  -->
563          
564          </div>
565          
566
567
568          
569  <div class="comments" id="comments">
570    
571      <div id="gitalk-container"></div>
572      <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
573    
574  </div>
575
576        </div>
577        
578          
579  
580  <div class="sidebar-toggle">
581    <div class="sidebar-toggle-line-wrap">
582      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
583      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
584      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
585    </div>
586  </div>
587
588  <aside id="sidebar" class="sidebar">
589    <div class="sidebar-inner">
590
591      
592
593      
594        <ul class="sidebar-nav motion-element">
595          <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap" >
596            文章目录
597          </li>
598          <li class="sidebar-nav-overview" data-target="site-overview">
599            站点概览
600          </li>
601        </ul>
602      
603
604      <section class="site-overview sidebar-panel">
605        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
606          <img class="site-author-image" itemprop="image"
607               src="https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1488291259&di=9b54b1ab9a4a02ec51e4344e960692d6&src=http://ni.ppsrc.com/aR24MryiGC7HFCEJTB-wgQ@640w_640h_75Q.jpeg"
608               alt="崔斯特" />
609          <p class="site-author-name" itemprop="name">崔斯特</p>
610           
611              <p class="site-description motion-element" itemprop="description">数据采集、数据处理、机器学习。</p>
612          
613        </div>
614        <nav class="site-state motion-element">
615        
616          
617            <div class="site-state-item site-state-posts">
618              <a href="/archives">
619                <span class="site-state-item-count">126</span>
620                <span class="site-state-item-name">日志</span>
621              </a>
622            </div>
623          
624
625          
626            <div class="site-state-item site-state-categories">
627              <a href="/categories">
628                <span class="site-state-item-count">41</span>
629                <span class="site-state-item-name">分类</span>
630              </a>
631            </div>
632          
633
634          
635            <div class="site-state-item site-state-tags">
636              <a href="/tags">
637                <span class="site-state-item-count">84</span>
638                <span class="site-state-item-name">标签</span>
639              </a>
640            </div>
641          
642
643        </nav>
644
645        
646          <div class="feed-link motion-element">
647            <a href="/atom.xml" rel="alternate">
648              <i class="fa fa-rss"></i>
649              RSS
650            </a>
651          </div>
652        
653
654        <div class="links-of-author motion-element">
655          
656            
657              <span class="links-of-author-item">
658                <a href="https://github.com/zhangslob" target="_blank" title="GitHub">
659                  
660                    <i class="fa fa-fw fa-github"></i>
661                  
662                  GitHub
663                </a>
664              </span>
665            
666              <span class="links-of-author-item">
667                <a href="mailto:[email protected]" target="_blank" title="E-Mail">
668                  
669                    <i class="fa fa-fw fa-globe"></i>
670                  
671                  E-Mail
672                </a>
673              </span>
674            
675              <span class="links-of-author-item">
676                <a href="https://www.zhihu.com/people/cuishite" target="_blank" title="知乎">
677                  
678                    <i class="fa fa-fw fa-globe"></i>
679                  
680                  知乎
681                </a>
682              </span>
683            
684              <span class="links-of-author-item">
685                <a href="https://www.quora.com/profile/Zhangslob" target="_blank" title="Quora">
686                  
687                    <i class="fa fa-fw fa-globe"></i>
688                  
689                  Quora
690                </a>
691              </span>
692            
693          
694        </div>
695
696        
697        
698
699        
700        
701
702        
703
704
705      </section>
706
707      
708      <!--noindex-->
709        <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
710          <div class="post-toc">
711
712            
713              
714            
715
716            
717              <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#介绍"><span class="nav-number">1.</span> <span class="nav-text">介绍</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#使用"><span class="nav-number">2.</span> <span class="nav-text">使用</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#基础操作"><span class="nav-number">3.</span> <span class="nav-text">基础操作</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#打开应用"><span class="nav-number">3.1.</span> <span class="nav-text">打开应用</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#点击按钮"><span class="nav-number">3.2.</span> <span class="nav-text">点击按钮</span></a></li></ol></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#mitmproxy"><span class="nav-number"></span> <span class="nav-text">mitmproxy</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#环境配置"><span class="nav-number">1.</span> <span class="nav-text">环境配置</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#数据获取"><span class="nav-number">2.</span> <span class="nav-text">数据获取</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#安卓7问题"><span class="nav-number">3.</span> <span class="nav-text">安卓7问题</span></a></li></ol></div>
718            
719
720          </div>
721        </section>
722      <!--/noindex-->
723      
724
725      
726
727    </div>
728  </aside>
729
730
731        
732      </div>
733    </main>
734
735    <footer id="footer" class="footer">
736      <div class="footer-inner">
737        
737<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js">
738</script>
738
739
740一共来了 <span id="busuanzi_value_site_pv"></span> 位朋友啦~
741您是崔斯特的第<span id="busuanzi_value_site_uv"></span>个小伙伴(๑• . •๑)
742
743<div class="copyright" >
744  
745  &copy;  2016 - 
746  <span itemprop="copyrightYear">2020</span>
747  <span class="with-love">
748    <i class="fa fa-heart"></i>
749  </span>
750  <span class="author" itemprop="copyrightHolder">崔斯特</span>
751</div>
752
753
754<div class="powered-by">
755  由 <a class="theme-link" href="https://hexo.io">Hexo</a> 强力驱动
756</div>
757
758<div class="theme-info">
759  主题 -
760  <a class="theme-link" href="https://github.com/iissnan/hexo-theme-next">
761    NexT.Pisces
762  </a>
763</div>
764
765
766
767<span id="busuanzi_container_site_pv">
768    本站总访问量<span id="busuanzi_value_site_pv"></span>次
769</span>
770
771
772        
773
774        
775      </div>
776    </footer>
777
778    
779      <div class="back-to-top">
780        <i class="fa fa-arrow-up"></i>
781        
782      </div>
783    
784    
785  </div>
786
787  
788
789<script type="text/javascript">
790  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
791    window.Promise = null;
792  }
793</script>
793
794
795
796
797
798
799
800
801
802
803  
804
805
806
807
808  
809  
809<script type="text/javascript" src="/lib/jquery/index.js?v=2.1.3"></script>
809
810
811  
812  
812<script type="text/javascript" src="/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>
812
813
814  
815  
815<script type="text/javascript" src="/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>
815
816
817  
818  
818<script type="text/javascript" src="/lib/velocity/velocity.min.js?v=1.2.1"></script>
818
819
820  
821  
821<script type="text/javascript" src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
821
822
823  
824  
824<script type="text/javascript" src="/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
824
825
826
827  
828
829
830  
830<script type="text/javascript" src="/js/src/utils.js?v=5.1.0"></script>
830
831
832  
832<script type="text/javascript" src="/js/src/motion.js?v=5.1.0"></script>
832
833
834
835
836  
837  
838
839
840  
840<script type="text/javascript" src="/js/src/affix.js?v=5.1.0"></script>
840
841
842  
842<script type="text/javascript" src="/js/src/schemes/pisces.js?v=5.1.0"></script>
842
843
844
845
846  
847  
847<script type="text/javascript" src="/js/src/scrollspy.js?v=5.1.0"></script>
vendor: 1 bytes, line 847
847
848<script type="text/javascript" src="/js/src/post-details.js?v=5.1.0"></script>
848
849
850
851
852  
853
854
855  
855<script type="text/javascript" src="/js/src/bootstrap.js?v=5.1.0"></script>
855
856
857
858
859  
860
861
862
863  
864
865
866
867
868	
869
870
871
872
873
874  
875
876
877
878
879
880  
881
882
883
884
885
886  
887
888
889
890  
891  
892  
892<script type="text/javascript">
893    // Popup Window;
894    var isfetched = false;
895    // Search DB path;
896    var search_path = "search.xml";
897    if (search_path.length == 0) {
898      search_path = "search.xml";
899    }
900    var path = "/" + search_path;
901    // monitor main search box;
902
903    function proceedsearch() {
904      $("body").append('<div class="local-search-pop-overlay">').css('overflow', 'hidden');
905      $('.popup').toggle();
906    }
907    // search function;
908    var searchFunc = function(path, search_id, content_id) {
909      'use strict';
910      $.ajax({
911        url: path,
912        dataType: "xml",
913        async: true,
914        success: function( xmlResponse ) {
915          // get the contents from search data
916          isfetched = true;
917          $('.popup').detach().appendTo('.header-inner');
918          var datas = $( "entry", xmlResponse ).map(function() {
919            return {
920              title: $( "title", this ).text(),
921              content: $("content",this).text(),
922              url: $( "url" , this).text()
923            };
924          }).get();
925          var $input = document.getElementById(search_id);
926          var $resultContent = document.getElementById(content_id);
927          $input.addEventListener('input', function(){
928            var matchcounts = 0;
929            var str='<ul class=\"search-result-list\">';
930            var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/);
931            $resultContent.innerHTML = "";
932            if (this.value.trim().length > 1) {
933              // perform local searching
934              datas.forEach(function(data) {
935                var isMatch = false;
936                var content_index = [];
937                var data_title = data.title.trim().toLowerCase();
938                var data_content = data.content.trim().replace(/<[^>]+>/g,"").toLowerCase();
939                var data_url = decodeURIComponent(data.url);
940                var index_title = -1;
941                var index_content = -1;
942                var first_occur = -1;
943                // only match artiles with not empty titles and contents
944                if(data_title != '') {
945                  keywords.forEach(function(keyword, i) {
946                    index_title = data_title.indexOf(keyword);
947                    index_content = data_content.indexOf(keyword);
948                    if( index_title >= 0 || index_content >= 0 ){
949                      isMatch = true;
950                      if (i == 0) {
951                        first_occur = index_content;
952                      }
953                    }
954
955                  });
956                }
957                // show search results
958                if (isMatch) {
959                  matchcounts += 1;
960                  str += "<li><a href='"+ data_url +"' class='search-result-title'>"+ data_title +"</a>";
961                  var content = data.content.trim().replace(/<[^>]+>/g,"");
962                  if (first_occur >= 0) {
963                    // cut out 100 characters
964                    var start = first_occur - 20;
965                    var end = first_occur + 80;
966                    if(start < 0){
967                      start = 0;
968                    }
969                    if(start == 0){
970                      end = 50;
971                    }
972                    if(end > content.length){
973                      end = content.length;
974                    }
975                    var match_content = content.substring(start, end);
976                    // highlight all keywords
977                    keywords.forEach(function(keyword){
978                      var regS = new RegExp(keyword, "gi");
979                      match_content = match_content.replace(regS, "<b class=\"search-keyword\">"+keyword+"</b>");
980                    });
981
982                    str += "<p class=\"search-result\">" + match_content +"...</p>"
983                  }
984                  str += "</li>";
985                }
986              })};
987            str += "</ul>";
988            if (matchcounts == 0) { str = '<div id="no-result"><i class="fa fa-frown-o fa-5x" /></div>' }
989            if (keywords == "") { str = '<div id="no-result"><i class="fa fa-search fa-5x" /></div>' }
990            $resultContent.innerHTML = str;
991          });
992          proceedsearch();
993        }
994      });}
995
996    // handle and trigger popup window;
997    $('.popup-trigger').click(function(e) {
998      e.stopPropagation();
999      if (isfetched == false) {
1000        searchFunc(path, 'local-search-input', 'local-search-result');
1001      } else {
1002        proceedsearch();
1003      };
1004    });
1005
1006    $('.popup-btn-close').click(function(e){
1007      $('.popup').hide();
1008      $(".local-search-pop-overlay").remove();
1009      $('body').css('overflow', '');
1010    });
1011    $('.popup').click(function(e){
1012      e.stopPropagation();
1013    });
1014  </script>
1014
1015
1016
1017  
1018
1019  
1020
1021  
1022
1023  
1024
1025
1026  
1027
1028<script src="/live2dw/lib/L2Dwidget.min.js?0c58a1486de42ac6cc1c59c7d98ae887"></script>
1028<script>L2Dwidget.init({"log":false,"pluginJsPath":"lib/","pluginModelPath":"assets/","pluginRootPath":"live2dw/","tagMode":false});</script>
1028</body>
1029</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.