批量校验m3u8内全部分片的md5值

背景:

客户端上报md5校验失败,想复现,但是又不能一条一条的手工验证cdn资源

目标:

给定m3u8文件地址,自动下载与校验全部分片的md5

代码:

# coding=utf-8

import sys
import requests
import hashlib

def checkCdnFile(url):
    """
    检测一个segment
    """
    # url = 'http://valipl.cp31.ott.cibntv.net/67756D6080932713CFC02204E/03000500005DBC8F1334A405C99AC17FE460FC-F6E0-4DC0-8AE4-579B006E3EC6-00143.ts?ccode=01010201&duration=2647&expire=18000&psid=56bfdf60419bdb7f42e668114df58a1341cb3&ups_client_netip=ddc2f33f&ups_ts=1593570410&ups_userid=&utid=WkJ1nK5mJecDAE9Wggk%2FsUOv&vid=XMjQyODU1MDMy&sm=1&operate_type=1&dre=u29&si=79&eo=1&dst=1&iv=0&s=cbffd1c2962411de83b1&type=flvhdv3&bc=2&vkey=Bc2a976f747039b61fc2b55a717af1867'
    requestHeaders = {'User-Agent': 'Android'}
    response = requests.get(url)

    headers = response.headers

    md5 = headers.get('ETag')
    md5 = md5[1: (len(md5) - 1)]
    md5 = md5.lower()

    print("headerMd5:" + md5)

    with open('temp.ts', 'wb') as tempTs:
        tempTs.write(response.content)

    with open('temp.ts', 'rb') as tempTs:
        data = tempTs.read()
        realMd5 = hashlib.md5(data).hexdigest()
        print("realMd5:" + realMd5)
        if (md5 == realMd5):
            print("correct_segment")
        else:
            print("error_segment:" + url)
            print("error_header_md5" + md5)
            print("error_real_md5" + realMd5)
            sys.exit(1)


# checkCdnFile('http://m-vali.cp31.ott.cibntv.net/6581031CC4F03E719C05A73654/03000C14125CF5672A664BC457BC38537F0F2F-887E-447C-9791-5CA361FBA9C8.mp4?ccode=01010201&duration=131&expire=18000&psid=37ccbe5449a577cf9e11a940f90cdd1f41cb3&ups_client_netip=758850ca&ups_ts=1593577163&ups_userid=1865339496&utid=WNdzjS7%2Bx8oDAJ2fy%2F0l6haR&vid=XNDIxNjUyNDQ4OA&vkey=Babcac71d12d0f156b6435e8ad9b1eb49&iv=1&eo=0&bc=2&dre=u13&si=43&dst=1')

# 根据url下载m3u8文件.当然也可以注释掉这个下载
m3u8_url = 'http://valipl.cp31.ott.cibntv.net/657227C075630713D75A441E8/05000A00005EBBBA588BB780000000690827C6-432D-4F9E-855E-A710EB3F0518.m3u8?ccode=01010201&duration=2744&expire=18000&psid=4b9f64c3c529489de9dbf10de7cc77bb41cb3&ups_client_netip=df659a7b&ups_ts=1593576619&ups_userid=1434082693&utid=XjtxFE23ve8DAF7F2Cm1G2Yf&vid=XNDU0MTc1ODE0NA&vkey=B9b36304de1830bfadec05c7525f1cded&sm=1&operate_type=1&dre=u29&si=79&eo=1&dst=1&iv=0&s=e585299e47d911e6abda&type=mp5hd2v3&bc=2'
response = requests.get(m3u8_url)
with open('youku.m3u8', 'wb') as tempTs:
    tempTs.write(response.content)

# 读取m3u8每行文本
with open('youku.m3u8', 'r') as m3u8:
    segmentCount = 0
    for line in m3u8:
        line = line.strip('\n')
        if line.startswith("http"):
            segmentCount += 1
            print('no:%d'%(segmentCount))
            checkCdnFile(line)

效果:

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342