解析快手视频

如何解析快手视频

直接上代码

<?php
require_once 'curl.php';
$url = $_GET['url'];
if ($url==null){    
echo "请输入链接";  
die;
}
$data=curl($url,['loadurl'=>1]);
$data=curl($data,$paras=['ua'=>'Mozilla/5.0 (Linux; Android 10; NEO-AL00; HMSCore 5.1.1.300; GMSCore 20.15.16) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.4.371 Mobile Safari/537.36']);
preg_match('/type="video\/mp4" src="(.*?)" alt/',$data,$html);
$code=rand(7653465,5622555558);
if ($html[1]==null){
echo "获取失败";
die;
}
$url=file_get_contents($html[1],"r");
file_put_contents("./mp4/".$code.'.mp4',$url);
$url="http://".$_SERVER['HTTP_HOST']."/mp4/".$code.".mp4";
echo $url;
?>

curl文件内容

<?php
/*php curl的方法封装*/
function ret_json($json) { 
return stripslashes(json_encode($json, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
}
function real_ip($type = 0) { 
$ip = $_SERVER['REMOTE_ADDR'];    
if ($type <= 0 && isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) { 
foreach ($matches[0] as $xip) {            if (filter_var($xip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {                $ip = $xip;               
break;            
}        
}    
} else if ($type <= 0 && isset($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {       
$ip = $_SERVER['HTTP_CLIENT_IP'];    
} else if ($type <= 1 && isset($_SERVER['HTTP_CF_CONNECTING_IP']) && filter_var($_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {        
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
} else if ($type <= 1 && isset($_SERVER['HTTP_X_REAL_IP']) && filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {        
$ip = $_SERVER['HTTP_X_REAL_IP'];    
} 
return $ip;
}
function curl($url, $paras = []) {    $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);    //curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.real_ip(), 'CLIENT-IP:'.real_ip()));
if (isset($paras['Header'])) {        $Header = $paras['Header'];
} else {        
$Header[] = "Accept:*/*";        $Header[] = "Accept-Encoding:gzip,deflate,sdch";        $Header[] = "Accept-Language:zh-CN,zh;q=0.8";        
$Header[] = "Connection:close";        $Header[] = "X-FORWARDED-FOR:" . real_ip();    
}    
curl_setopt($ch, CURLOPT_HTTPHEADER, $Header);
if (isset($paras['ctime'])) { // 连接超时        
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $paras['ctime']);    
} else {        
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);    
}    
if (isset($paras['rtime'])) { // 读取超时        
curl_setopt($ch, CURLOPT_TIMEOUT, $paras['rtime']);    
}    
if (isset($paras['post'])) {        curl_setopt($ch, CURLOPT_POST, 1);        curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']);    
}    
if (isset($paras['header'])) {        curl_setopt($ch, CURLOPT_HEADER, true);    }    
if (isset($paras['cookie'])) {        curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']);    
}    
if (isset($paras['refer'])) {        if ($paras['refer'] == 1) {            curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f=');        } else {            
curl_setopt($ch, CURLOPT_REFERER, $paras['refer']);        
}    
}    
if (isset($paras['ua'])) {        curl_setopt($ch, CURLOPT_USERAGENT, $paras['ua']);    
} else {        
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");    }    
if (isset($paras['nobody'])) {        curl_setopt($ch, CURLOPT_NOBODY, 1);    }    
//curl_setopt($ch, CURLOPT_ENCODING, "gzip");    
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');    
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
if (isset($paras['GetCookie'])) {        curl_setopt($ch, CURLOPT_HEADER, 1);        $result = curl_exec($ch);        preg_match_all("/Set-Cookie: (.*?);/m", $result, $matches);        
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);        
$header = substr($result, 0, $headerSize); //状态码        
$body = substr($result, $headerSize);        $ret = array("cookie" => $matches, "body" => $body, "Header" => $header, 'code' => curl_getinfo($ch, CURLINFO_HTTP_CODE),);        curl_close($ch);        
return $ret;    
}    
$ret = curl_exec($ch);    
if (isset($paras['loadurl'])) {        $Headers = curl_getinfo($ch);        
if (isset($Headers['redirect_url'])) {            $ret = $Headers['redirect_url'];        } else {            
$ret = false;       
}    
}    
curl_close($ch);    
return $ret;
}
上一篇:Chrome 80及以上版本 中 Iframe 跨域 Cookie 的 Samesite 问题


下一篇:独立窗口Cookie 丢失的问题