mac下使用pyhon+mimtdump 爬取m3u8

流过昼夜 提交于 2020-01-31 15:29:59

pyhon代码

test.py文件

# -*- coding: utf-8 -*-
import json
import threading

import requests
import subprocess, sys, os


def check_json_format(raw_msg):
    """
    用于判断一个字符串是否符合Json格式
    :param self:
    :return:
    """
    if isinstance(raw_msg, str):  # 首先判断变量是否为字符串
        try:
            json.loads(raw_msg, encoding='utf-8')
        except ValueError:
            return False
        return True
    else:
        return False


def response(flow):
	#例如:
    # https://open.com/43567890/TYUI678/678iu.m3u8
    # http://abc.com/api/play/5678?uuid=tyu567tyu789&device=0

    url = 'api/play'
    if url in flow.request.url:
        text = flow.response.text
        if check_json_format(text):
            data_json = json.loads(text)
            if data_json and data_json.get('resp').get('path'): #判断json中有这些节点
                rescont = data_json.get('resp')
                videopath = rescont.get('path')
                title = rescont.get('title')
                print(videopath)
                filename = title + '.mp4'
                print(filename)
                t = threading.Thread(target=exec_cmd(videopath, filename))  # 创建一个线程
                t.start()  # 启动线程
                print( filename,'下载完成')


def exec_cmd(videopath, filename):
    cmd = 'ffmpeg -i ' + videopath + ' -c copy ' + filename
    print(cmd)
    cmd = cmd.encode(sys.getfilesystemencoding())
    print(cmd)
    subprocess.call(cmd, shell=True)

MAC下准备工作

  • 安装m3u8合成工具
    brew install ffmpeg
  • 安装代理工具
    brew install mitmproxy

使用方法

  • 在bash下运行:
    mitmdump -s test.py -p 8888
  • 连代理
    把手机wifi连到电脑上(查电脑ip,如192.168.0.xxx),端口8888
    1.修改网络
    2.显示高级选项
    3.选代理、手动,填ip、端口

关于ssl(报错问题)

连上代理后,手机浏览器打开http://mitm.it/按页面说明步骤操作(ios,android各不同)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!