可以直接获取flv和m3u8的直播源链接 需要输入直播链接或者直播房间号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 import reimport sysimport requestsDEBUG = False headers = { 'authority' : 'v.douyin.com' , 'user-agent' : 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1' , } url = input ('请输入抖音直播链接或19位room_id:' ) if re.match (r'\d{19}' , url): room_id = url else : try : url = re.search(r'(https.*)' , url).group(1 ) response = requests.head(url, headers=headers) url = response.headers['location' ] room_id = re.search(r'\d{19}' , url).group(0 ) except Exception as e: if DEBUG: print (e) print ('获取room_id失败' ) sys.exit(1 ) print ('room_id' , room_id)try : headers.update({ 'authority' : 'webcast.amemv.com' , 'cookie' : '_tea_utm_cache_1128={%22utm_source%22:%22copy%22%2C%22utm_medium%22:%22android%22%2C%22utm_campaign%22:%22client_share%22}' , }) response = requests.get('https://webcast.amemv.com/webcast/room/reflow/info/?verifyFp=&type_id=0&live_id=1&room_id={}&sec_user_id=&app_id=1128&msToken=&X-Bogus=' .format (room_id), headers=headers,).json() print (response) rtmp_pull_url = response['data' ]['room' ]['stream_url' ]['rtmp_pull_url' ] hls_pull_url = response['data' ]['room' ]['stream_url' ]['hls_pull_url' ] print (rtmp_pull_url) print (hls_pull_url) except Exception as e: if DEBUG: print (e) print ('获取real url失败' )