Heim >Backend-Entwicklung >PHP-Tutorial >Holen Sie sich den Quellcode – So erhalten Sie die Quelladresse von Douyu TV mit PHP
Ich habe viele Informationen im Internet ausprobiert, aber es funktioniert nicht. Das Problem, auf das ich jetzt stoße, ist, wie man die Parameterwerte in den Schnittstellenadressparametern generiert
http://live.qq .com/swf_api/ro...
Dies ist die Schnittstellenadresse. Jedes Mal, wenn die t- und sign-Parameter aktualisiert werden, ändern sie sich bitte, wie ich diese Parameter erhalten oder generieren kann
Das in Python geschriebene geldgierige Programm, das ich zuvor im Internet gefunden habe, wurde in PHP geändert, und die generierte Adresszugriffsschnittstelle löste einen Fehler aus
<code>function getmd5($str){ $m=md5($str); return $m; } function l_request($action){ $baseUrl = "http://www.douyutv.com/api/v1/room/"; $midReq = "?aid=android&cdn=ws&client_sys=android&time="; $t=time(); $md5_url= $action . $t . 1231; //$auth = getmd5($md5_url); $requrl= $baseUrl . $action . $midReq . $t . "&auth=" . getmd5($md5_url); return $requrl; } echo (l_request(10000346));</code>
Ich habe viele Informationen im Internet ausprobiert, aber es funktioniert nicht. Das Problem, auf das ich jetzt stoße, ist, wie man die Parameterwerte in den Schnittstellenadressparametern generiert
http://live.qq .com/swf_api/ro...
Dies ist die Schnittstellenadresse. Jedes Mal, wenn die t- und sign-Parameter aktualisiert werden, ändern sie sich bitte, wie ich diese Parameter erhalten oder generieren kann
Das in Python geschriebene geldgierige Programm, das ich zuvor im Internet gefunden habe, wurde in PHP geändert, und die generierte Adresszugriffsschnittstelle löste einen Fehler aus
<code>function getmd5($str){ $m=md5($str); return $m; } function l_request($action){ $baseUrl = "http://www.douyutv.com/api/v1/room/"; $midReq = "?aid=android&cdn=ws&client_sys=android&time="; $t=time(); $md5_url= $action . $t . 1231; //$auth = getmd5($md5_url); $requrl= $baseUrl . $action . $midReq . $t . "&auth=" . getmd5($md5_url); return $requrl; } echo (l_request(10000346));</code>
https://github.com/soimort/yo...
Dies ist die Python-Version, die Sie selbst ändern können
php:
<code><?php function curl($url,$cat='get',$post_data=''){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if($cat=='post') curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // curl_setopt($ch, CURLOPT_USERAGENT, "Python-urllib/3.5"); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"); $data = curl_exec($ch); curl_close($ch); return $data; } $room_id = 55955; $url = "https://m.douyu.com/html5/live?roomId=" . $room_id ; $ret = curl($url); $ret = json_decode($ret,1); //print_r($ret); if($ret['msg'] != 'OK' || $ret['data']['show_status'] != 1){ echo "直播未开播";exit; } $tt = time()/60; $did = md5(uniqid()); $sign = md5("{$room_id}{$did}A12Svb&%1UUmf@hC{$tt}"); $d = ['cdn'=>'ws', 'rate'=> '0', 'tt'=> $tt, 'did'=> $did, 'sign'=> $sign]; $api_url = "http://www.douyu.com/lapi/live/getPlay/" . $room_id; $api_data = curl($api_url,'post',http_build_query($d)); $api_data = json_decode($api_data,1); //print_r($api_data); if($api_data['error'] === 0){ echo '直播流地址:' . $api_data['data']['rtmp_url'] . '/' . $api_data['data']['rtmp_live']; }else{ echo 'api请求错误'; }</code>