Add files via upload

pull/70/head
肥羊 2 years ago committed by GitHub
parent aa471df025
commit eaadf221e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 101
      PHP/douyin.php

@ -1,6 +1,8 @@
<?php
$liveid = $_GET['rid'] ?? null;
$rid = empty($_GET['id']) ? "37917621268" : trim($_GET['id']);
$stream = empty($_GET['media']) ? "flv" : trim($_GET['media']);
function mk_dir($newdir)
{
$dir = $newdir;
@ -11,44 +13,63 @@ function mk_dir($newdir)
return $dir;
}
}
$liveurl = "https://live.douyin.com/$liveid";
function getDouYinUrl($rid, $stream,$cookietext)
{
$liveurl = "https://live.douyin.com/" . $rid;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $liveurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookietext);
$response = curl_exec($ch);
preg_match('/__ac_nonce=(.*?);/', $response, $matches);
$ac_nonce = $matches[1];
curl_setopt($ch, CURLOPT_URL, $liveurl);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: __ac_nonce=" . $ac_nonce));
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookietext);
$response = curl_exec($ch);
preg_match('/ttwid=.*?;/', $response, $matches);
$ttwid = $matches[0];
$url = "https://live.douyin.com/webcast/room/web/enter/?aid=6383&app_name=douyin_web&live_id=1&device_platform=web&language=zh-CN&enter_from=web_live&cookie_enabled=true&screen_width=1728&screen_height=1117&browser_language=zh-CN&browser_platform=MacIntel&browser_name=Chrome&browser_version=116.0.0.0&web_rid=" . $rid;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
"Cookie: " . $ttwid,
"Accept: */*",
"Host: live.douyin.com",
"Connection: keep-alive"
));
$response = curl_exec($ch);
curl_close($ch);
$json = json_decode($response, true);
$status = $json['data']['data'][0]['status'];
if ($status != 2) {
return null;
}
$value = json_decode($json['data']['data'][0]['stream_url']['live_core_sdk_data']['pull_data']['stream_data'],true);
$realurl = "";
foreach ($value as $key => $val) {
if (array_key_exists('origin',$val)){
if ($stream == "flv") {
$realurl = $val['origin']['main']['flv'];
} elseif ($stream == "hls") {
$realurl = $val['data']['origin']['main']['hls'];
}
}
}
return $realurl;
}
$cookietext = './' . mk_dir('cookies/') . md5(microtime()) . '.' . 'txt';
$headers = array(
'upgrade-insecure-requests: 1',
'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $liveurl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookietext);
$mcontent = curl_exec($ch);
curl_close($ch);
preg_match('/Set-Cookie:(.*);/iU', $mcontent, $str);
$realstr = $str[1];
$newheader = array(
"cookie:$realstr",
'upgrade-insecure-requests: 1',
'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $liveurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $newheader);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$data = curl_exec($ch);
curl_close($ch);
$realdata = urldecode($data);
$mediaurl = getDouYinUrl($rid, $stream,$cookietext);
unlink($cookietext);
$reg = "/\"roomid\"\:\"([0-9]+)\"/i";
preg_match($reg, $realdata, $roomid);
$nnreg = "/\"id_str\":\"{$roomid[1]}\"[\s\S]*?\"hls_pull_url\"/i";
preg_match($nnreg,$realdata,$newcontent);
$nnnreg = "/\"hls_pull_url_map\"[\s\S]*?}/i";
preg_match($nnnreg,$newcontent[0],$finalstr);
$mediaArr = json_decode('{' . $finalstr[0] . '}',true);
$hls_url = $mediaArr['hls_pull_url_map']['FULL_HD1'];
header('location:' . $hls_url);
if ($mediaurl!=null){
header('location:' . $mediaurl);
exit();
}
Loading…
Cancel
Save