python3APP爬虫--爬取x音用户信息(附源码)

第一次发博客,有什么不足欢迎各位大佬指正。

文章目录

  • 一. 准备工作:
    • 1.抓包工具:
  • 二. 整体思路:
    • (一)使用fiddler抓包工具
    • 2.配置fiddler自动保存json:
    • (二)使用mitmproxy 的mitmdump抓包
  • 三.得到json文件:
  • 四.解析、保存数据

一. 准备工作:

1.抓包工具:

(1) fiddler抓包工具(v5.0.20202.18177)(安装地址:https://www.telerik.com/download/fiddler)| mitmproxy(安装、配置方法见下文)
抖音,xposed框架(官方地址)(安装xposed框架+justtrustme模块(官方地址) 用于禁止ssl证书验证,需要在root下操作)
相关APK我放在了这里
(2)夜神模拟器(7.0.0.6)
2.解析工具:
(1)Python3.6 JetBrains PyCharm 2018.2.2 x64
3.存储工具
(1)csv文件存储

二. 整体思路:

整体框架

(一)使用fiddler抓包工具

1.设置fiddler代理 配置夜神模拟器
打开fiddler 点击Tools进入Options,按照图中勾选后点击Actions
在这里插入图片描述

配置远程链接:

选择允许监控远程链接,端口可以随意设置,只要别重复就行,默认8888
在这里插入图片描述

重启fiddler,使配置结果生效。

2.配置fiddler自动保存json:

点击右边Inspectors 点击OnBeforeResponse 按箭头指示操作即可。
在这里插入图片描述

加入我们的脚本,用于保存响应体中的json文件。

    static function OnBeforeResponse(oSession: Session) {
        if (m_Hide304s &&  oSession.responseCode == 304){
            oSession["ui-hide"]="true";
        }
        //1.保存用户信息脚本
        if (oSession.uriContains("https://aweme-eagle.snssdk.com/aweme/v1/user")){
            var strBody=oSession.GetResponseBodyAsString();
            var sps = oSession.PathAndQuery.slice(-58,);
            //FiddlerObject.alert(sps)
            //根据自己情况修改路径
            var filename = "路径" + "/" + 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();  
        }
    }

(二)使用mitmproxy 的mitmdump抓包

1.mitmproxy中mitmdump可与python互联 安装方法详见
将mitmproxy与模拟器链接好之后,编写python 脚本

import os
import mitmproxy.http
from mitmproxy import ctx

def response(flow:mitmproxy.http.HTTPFlow):
    #选择本地文件路径
    path='E:/dy_project/dy_data_mitmdump'
    try:
        os.mkdir(path)
    except:
        pass
    aim_url='https://aweme-eagle.snssdk.com/aweme/v1/user'
    #捕捉所有目标url开头的url
    if flow.request.url.startswith(aim_url):
        #将响应体赋值到json_data中
        json_data=flow.response.content
        #定义文件名:‘dy_user_data_’+时间戳
        filename='dy_u_data'+flow.request.url.split('&ts=')[-1].split('&as=')[0]
        with open(path+'/'+filename+'.json','wb')as f:
            #以二进制的格式将json文件保存到本地
            f.write(json_data)
            ctx.log.info(f'**********{filename}.json下载了**********')

此脚本会为我们保存响应体中的json到本地(我这里制定了格式:dy_u_data+时间戳,保证文件的唯一性)。

启动模拟器 开启脚本:

mitmdump -q -s save_data_to_json.py

可以将启动脚本写为.bat文件,方便启动。

cd E:\dy_project
e:
mitmdump -q -s save_data_to_json.py
#说明
-q 屏蔽 mitmdump 默认的控制台日志,只显示自己脚本中的
-s 入口脚本文件
–set body-size-limit=10k 只处理小于 10k 的请求
“~m post” 只处理 post 方法的请求

控制台输出
在这里插入图片描述

ps:可以通过 夜神模拟器—操作录制 实现视频的自动滑动。

2.使用python处理响应体

三.得到json文件:

在这里插入图片描述
)
json在手,解析不愁。

四.解析、保存数据



import os
import json
#解析json主函数
def parse(self,_json):
     file=open(_json,'r',encoding='utf8')
     for line in file.readlines():
         json_data=json.loads(line)
         user=json_data.get('user')
         user_name=user.get('nickname')#用户名
         user_uid=user.get('uid')#个人id
         user_id=user.get('unique_id')#唯一id
         user_gender=user.get('gender')#性别
         user_country=user.get('country')#国家
         user_city=user.get('city')#城市
         user_province=user.get('province')#省
         user_school_name=user.get('school_name')#学校名
         user_birthday=user.get('birthday')#生日
         user_verify=user.get('custom_verify')#认证
         user_aweme_count=user.get('aweme_count')#作品数
         user_favorite=user.get('favoriting_count')#ta喜欢数
         user_signature=user.get('signature')#个人签名
         user_focus=user.get('following_count')#关注数
         user_appreciate=user.get('total_favorited')#点赞数
         user_fans=user.get('mplatform_followers_count')#粉丝数


当然,您也可以选择边抓包边解析边存储,只需要将启动mitmdump时带上自己的脚本即可。

解析出的结果可自行选择保存方式,我保存到了csv文件中。
dy_user_data

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值