安卓模拟器抓包工具 Fiddler 配置教程及注意事项

[复制链接]
查看402 | 回复0 | 2024-6-28 22:20:53 | 显示全部楼层 |阅读模式
本文仅供参考学习,严禁用于任何方式的商业用途,违者自行承当责任。

打算工作:

(1)、手机(安卓、ios都可以)/安卓模拟器,明天主要以安卓模拟器为主,操作过程一致。

(2)、抓包工具:Fiddel下载地址:()

(3)、编程工具:pycharm

(4)、安卓模拟器上安装(逍遥安装模拟器)

一、fiddler配置

在tools中的options中,根据图中勾选后点击Actions,选择TrustRootCertificate。

配置远程链接:

选择容许监控远程链接,端口可以随便设置,只要别重复就行,默认8888

之后:重启fiddler!!!这样配置就能生效。

二、安卓模拟器/手机配置

首先查看本机的IP:在cmd中输入ipconfig,记住这个IP

手机确保和笔记本在同一局域网下。

手机配置:配置已联接的WiFi,代理选择自动,之后输入上图ip端标语为8888

模拟器配置:设置中长按已联接wifi,代理选择自动,之后输入上图ip端标语为8888

代理设置好后,在浏览器中输入你设置的ip:端口,比如10.10.16.194:8888,才会打开fiddler的页面。之后点击fiddlerRootcertificate安装证书,要不手机会觉得环境不安全。

证书名称随意设,可能还须要设置一个屏保密码。

接出来就可以在fiddler中抓到手机/模拟器软件的包了。

三、抓包

打开app,之后观察fiddler中所有的包

其中有个包,包类型为json(json就是网页返回的数据,具体百度),主机地址如图,包大小通常不小,这个就是视频包。

点击这个json包,在fidder一侧,点击解码,我们将视频包的json解码

解码后:点击aweme_list,其中每位大括弧代表一个视频,每次加载一点下来,等你看完预加载的,再重新加载一些。

Json是一个字典,我们的视频链接在:aweme_list中,每位视频下的video下的play_addr下的url_list中,一共有6个url,是完全一样的视频,可能是为了应付不同环境,而且通常第3或4个链接的视频不容易出问题,复制链接,浏览器中粘贴能够看见视频了。

接出来解决几个问题,

1、视频数目,每位包中只有如此几个视频,那怎么抓取更多呢?

这时侯须要利用模拟器的模拟键盘翻页,让模拟器仍然翻页,这样就不断会出现json包了。

2、如何json保存在本地使用

一种方式可以自动复制粘贴,然而这样很low。

所以我们使用fidder自带的脚本,在上面添加规则,当视频json包刷下来后手动保存json包。

自定义规则包:

提取码:7z0l

<p><pre>    <code>if (oSession.uriContains("https://api-eagle.amemv.com/aweme/v1/feed/")){
           var strBody=oSession.GetResponseBodyAsString();
           var sps = oSession.PathAndQuery.slice(-58,);
           //FiddlerObject.alert(sps)
           var filename = "C:/Users/HEXU/Desktop/数据爬取/爬取资料/raw_data" + "/" + sps + ".json";  
           var curDate = new Date();   
           var sw : System.IO.StreamWriter;  
           if (System.IO.File.Exists(filename)){  
               sw = System.IO.File.AppendText(filename);  
               sw.Write(strBody);  
           }  
           else{  
               sw = System.IO.File.CreateText(filename);  
               sw.Write(strBody);  
           }  
            
           sw.Close();  
           sw.Dispose();  
       }
</code></pre></p>


点击规则脚本,之后将自定义规则置于如图所示位置:

这个脚本有两点须要更改的:

(1)第一行的网址:

这个是从视频包的url中摘下来的,某音会经常更新这个url,所以不能用了也要去更新:

例如现今的早已和今天不同了,记着更改。

(2)路径,哪个是我设置json包保存的地址,自己一定要去更改,并创建文件夹,更改完记着点保存。

打开设置好模拟器和脚本后,等待一会,就可以看见文件夹中保存的包了:

四、爬虫脚本

接出来在pycharm中写脚本获取json包里的视频链接:

导包:

importos,json,requests

伪装头:

headers={‘User-Agent’:‘Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/72.0.3626.119Safari/537.36’}

逻辑代码:

疗效:

源码:

<p><pre>    <code class="prism language-python"><span class="token keyword">import</span> os<span class="token punctuation">,</span>json<span class="token punctuation">,</span>requests
<span class="token comment">#伪装头</span>
headers <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">&#39;User-Agent&#39;</span><span class="token punctuation">:</span> <span class="token string">&#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36&#39;</span><span class="token punctuation">}</span>
videos_list <span class="token operator">=</span> os<span class="token punctuation">.</span>listdir<span class="token punctuation">(</span><span class="token string">&#39;C:/Users/HEXU/Desktop/数据爬取/爬取资料/raw_data/&#39;</span><span class="token punctuation">)</span>  <span class="token comment">#获取文件夹内所有json包名</span>
count <span class="token operator">=</span> <span class="token number">1</span>  <span class="token comment">#计数,用来作为视频名字</span>
<span class="token keyword">for</span> videos <span class="token keyword">in</span> videos_list<span class="token punctuation">:</span>  <span class="token comment">#循环json列表,对每个json包进行操作</span>
    a <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">&#39;./爬取资料/raw_data/{}&#39;</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>videos<span class="token punctuation">)</span><span class="token punctuation">,</span>encoding<span class="token operator">=</span><span class="token string">&#39;utf-8&#39;</span><span class="token punctuation">)</span>  <span class="token comment">#打开json包</span>
    content <span class="token operator">=</span> json<span class="token punctuation">.</span>load<span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token string">&#39;aweme_list&#39;</span><span class="token punctuation">]</span> <span class="token comment">#取出json包中所有视频</span>
    <span class="token keyword">for</span> video <span class="token keyword">in</span> content<span class="token punctuation">:</span>  <span class="token comment">#循环视频列表,选取每个视频</span>
        video_url <span class="token operator">=</span> video<span class="token punctuation">[</span><span class="token string">&#39;video&#39;</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">&#39;play_addr&#39;</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">&#39;url_list&#39;</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">]</span> <span class="token comment">#获取视频url,每个视频有6个url,我选的第5个</span>
        videoMp4 <span class="token operator">=</span>  requests<span class="token punctuation">.</span>request<span class="token punctuation">(</span><span class="token string">&#39;get&#39;</span><span class="token punctuation">,</span>video_url<span class="token punctuation">,</span>headers<span class="token operator">=</span>headers<span class="token punctuation">)</span><span class="token punctuation">.</span>content <span class="token comment">#获取视频二进制代码</span>
        <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">&#39;./爬取资料/VIDEO/{}.mp4&#39;</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>count<span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token string">&#39;wb&#39;</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span> <span class="token comment">#以二进制方式写入路径,记住要先创建路径</span>
            f<span class="token punctuation">.</span>write<span class="token punctuation">(</span>videoMp4<span class="token punctuation">)</span>  <span class="token comment">#写入</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">&#39;视频{}下载完成&#39;</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>count<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">#下载提示</span>
        count <span class="token operator">+=</span> <span class="token number">1</span> <span class="token comment">#计数+1</span>
</code></pre></p>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则