抖音APP数据python爬虫——个人粉丝视频

抖音APP数据python爬虫——个人粉丝视频

学习分享,勿触底线。

最近有改进了,之前获取_signature参数的方式有点low。现在用pm2部署一下node接口美滋滋。

代码就不放了,可以去最后的测试地址玩一玩,手下留情。

爬虫分为三个部分:

1、个人数据:利用分享页,获取id,粉丝数,点赞数等信息

2、粉丝数据:利用模拟器 + appium + mitmdump,自动化获取粉丝数据

3、视频数据:逆向破解关键参数,获取视频数据

运行环境

Windows10

Python3.7,pycharm

fiddler, MongoDB,SDK

夜神模拟器 + appium + mitmdump

一、获取个人数据

分享页入口:https://www.iesdouyin.com/share/user/分享id

关键反爬:TTF字体混淆

抖音APP数据python爬虫——个人粉丝视频_第1张图片

解决措施:最笨的方法,字典映射:

regex_list = [
    {'name': ['  ', '  ', '  '], 'value': 0},
    {'name': ['  ', '  ', '  '], 'value': 1},
    {'name': ['  ', '  ', '  '], 'value': 2},
    {'name': ['  ', '  ', '  '], 'value': 3},
    {'name': ['  ', '  ', '  '], 'value': 4},
    {'name': ['  ', '  ', '  '], 'value': 5},
    {'name': ['  ', '  ', '  '], 'value': 6},
    {'name': ['  ', '  ', '  '], 'value': 7},
    {'name': ['  ', '  ', '  '], 'value': 8},
    {'name': ['  ', '  ', '  '], 'value': 9},
]

数据保存

抖音APP数据python爬虫——个人粉丝视频_第2张图片

二、获取粉丝数据

appium模拟滑动,mitmdump解析数据

模拟器下载安卓5版本,安装抖音

配置appium:

desired_caps = {
    'platformName': 'Android',
    'deviceName': '127.0.0.1:62025',  # adb devices获取
    'platformVersion': '5.1.1',
    'appPackage': 'com.ss.android.ugc.aweme',
    'appActivity': 'com.ss.android.ugc.aweme.splash.SplashActivity',
    'noReset': True,
    'unicodeKeyboard': True,
    'resetKeyboard': True
}

获取appPackage和appActivity

# 获取方式一: aapt.exe dump badging apk包
# 获取方式二:adb shell进入命令行,logcat | grep cmp=

编写mitmdump解析脚本:

# 获取share_id数据
def response(flow):
    if 'aweme/v1/user/follower/list/' in flow.request.url:
        for user in json.loads(flow.response.text)['followers']:
            douyin_info = dict()
            douyin_info['share_id'] = user['uid']
            if user['short_id'] == '0':
                douyin_info['douyin_id'] = user['unique_id']
            else:
                douyin_info['douyin_id'] = user['short_id']
            douyin_info['nick_name'] = user['nickname']
            save_task(douyin_info)  # 保存到MongoDB
            print(douyin_info)

手机端配置好mitm.it证书,先运行appium,然后运行mitmdump脚本:

mitmdump -s mitm_get_id.py -p 8080

手动滑动,获取数据成功,保存到数据库,开始编写自动化代码。

配合appium获取元素参数,边写边调试代码:

def handle_douyin(driver, douyin_id):
    # 点击搜索
    try:
        driver.tap([(1040, 80), (1040, 100)], 500)
        time.sleep(1)
    except Exception as e:
        print('未找到搜索', e)
        pass
    while True:
        try:
            # 定位搜索框
            if WebDriverWait(driver, 3).until(lambda x: x.find_element_by_id("com.ss.android.ugc.aweme:id/ahz")):
                # 获取douyin_id进行搜索
                driver.find_element_by_id("com.ss.android.ugc.aweme:id/ahz").click()
                driver.find_element_by_id("com.ss.android.ugc.aweme:id/ahz").send_keys('{}'.format(douyin_id))  # 输入搜索id

            # 点击搜索

            # 点击用户标签

            # 点击头像

            # 点击粉丝按钮

                # 向上滑动

                # 返回到搜索,并清除搜索内容

        except Exception as e:
            print(e)

最后,先运行appium,然后运行mitmdump脚本,再运行上面编写的自动化代码。

完成自动获取粉丝数据,主要是获取分享ID,方便构造分享页,获取个人数据。

抖音APP数据python爬虫——个人粉丝视频_第3张图片

三、获取视频数据

关键参数:_signature破解

通过分析js代码,找到几个关键位置

抖音APP数据python爬虫——个人粉丝视频_第4张图片
抖音APP数据python爬虫——个人粉丝视频_第5张图片
抖音APP数据python爬虫——个人粉丝视频_第6张图片
抖音APP数据python爬虫——个人粉丝视频_第7张图片
抖音APP数据python爬虫——个人粉丝视频_第8张图片

包括分享页源代码里面tac参数,拼接HTML文件,获取渲染后的_signature参数

def get_signature(self, tac):  # 拼接js构建HTML,获取signature参数
    with open(r'html_head', 'r') as f1:
        f1_read = f1.read()

    with open(r'html_foot', 'r') as f2:
        f2_read = f2.read().replace('&&&', self.share_id)

    with open(r'result.html', 'w') as f3:
        f3.write(f1_read + '\n' + tac + '\n' + f2_read)
    
    。。。
    
def parse_xhr(self, signature, dytk):  # 获取异步数据

    xhr_url = f"https://www.iesdouyin.com/web/api/v2/aweme/post/?user_id={self.share_id}&sec_uid=&count=21" \
              f"&max_cursor=0&aid=1128&_signature={signature}&dytk={dytk}"

    response = requests.get(url=xhr_url, headers=self.pc_headers)
    
    。。。

抖音APP数据python爬虫——个人粉丝视频_第9张图片
抖音APP数据python爬虫——个人粉丝视频_第10张图片

可能遇到的问题

如果遇到打开抖音,没有获取视频数据,需要安装Xposed和JustTrustMe关闭SSL证书验证:

Xposed安装器下载地址:https://repo.xposed.info/module/de.robv.android.xposed.installer

JustTrustMe下载地址:https://github.com/Fuzion24/JustTrustMe/releases

最后&测试地址

GitHub:

在线测试地址:https://www.downdawn.com/blog/dy_video/

抖音APP数据python爬虫——个人粉丝视频_第11张图片
抖音APP数据python爬虫——个人粉丝视频_第12张图片
小服务器经不起爬虫,如果服务器崩了,就会把该页面关了,毕竟这个域名是我的博客地址。。谢谢!

如果有违反相关规定和限制,请联系我,马上删除。

你可能感兴趣的:(爬虫与逆向)