爱奇艺(奇艺果)的解析源码

<?php
define('NAME_PATH', 'data/name/'); //文件名称的目录
define('COOKIE_IQIYI','P00001=');
header('Pragma:no-cache');   
header("Expires:-1"); 
$url = $_GET['url'];

$html = file_get_contents($url);
//preg_match('##',$html,$bool);
preg_match('#\"tvId\":(.*?),#',$html,$tvid);
preg_match('#\"vid\":\"(.*?)\",#',$html,$vids);
$member = '';//是否为付费视频
$vid = $vids[1];
$tvid = $tvid[1];

$t = time()*1000;
$src = "76f90cbd92f94a2e925d83e8ccd22cb7";
$key = "d5fb4bd9d50c4be6948c97edd7254b0e";
$sc = md5($t.$key.$vid);
$url = "http://cache.m.iqiyi.com/jp/tmts/$tvid/$vid/?t=$t&sc=$sc&src=$src";

$content = curl($url,COOKIE_IQIYI);
$content = preg_replace("#var tvInfoJs=#","",$content);

$json = json_decode($content,true);
$data = $json['data'];
$vidl = $data['vidl'];  
foreach($vidl as $key => $value){
    $type = $value['vd'];
    if($type==14||$type==17||$type==21||$type==1||$type==96){//过滤 H265(m3u8不支持h265编码格式)和低画质视频(流畅 标清)
            continue;
    }
    $m3u = $value['m3u'];
}
$url = $m3u;
function is_ipad() {
    $user_agent = strtolower($_SERVER['HTTP_USER_AGENT']); //获取浏览器信息
    preg_match("#(ipad|iphone|mac|ios|linux|android|ipod)#", $user_agent, $bool);
    $isiPad = empty($bool[1]) ? false : true; //是否为移动端
    return $isiPad;
}
function curl($url, $cookie = "") {
   $params["ua"] = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36";
   $params["ip"] = "14.21.98.117";//伪装为固定IP,否则会报异地登录,会封号,不要更改
   $params["cookie"] = $cookie;
   $params["ref"] = "https://www.iqiyi.com";
        //$params["proxy"] = PROXY;
   return iqiyi_curl($url,$params);
}
function iqiyi_curl($url, $params = array()) {
    $ip = empty($params["ip"]) ? rand_ip() : $params["ip"]; 
      $header = array('X-FORWARDED-FOR:'.$ip,'CLIENT-IP:'.$ip);
      if(isset($params["httpheader"])){
        $header = array_merge($header,$params["httpheader"]);
      }
      $referer = empty($params["ref"]) ? $url : $params["ref"];
      $user_agent = empty($params["ua"]) ? $_SERVER['HTTP_USER_AGENT'] : $params["ua"] ;

      $ch = curl_init();                                                      //初始化 curl
      curl_setopt($ch, CURLOPT_URL, $url);                                    //要访问网页 URL 地址
      curl_setopt($ch, CURLOPT_HTTPHEADER, $header);                          //伪装来源 IP 地址
      curl_setopt($ch, CURLOPT_REFERER, $referer);                            //伪装网页来源 URL
      curl_setopt($ch, CURLOPT_USERAGENT,$user_agent);                        //模拟用户浏览器信息
      curl_setopt($ch, CURLOPT_NOBODY, false);                                //设定是否输出页面内容
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                         //返回字符串,而非直接输出到屏幕上
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, false);                        //连接超时时间,设置为 0,则无限等待
      curl_setopt($ch, CURLOPT_TIMEOUT, 3600);                                //数据传输的最大允许时间超时,设为一小时
      curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);                       //HTTP验证方法
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                        //不检查 SSL 证书来源
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);                        //不检查 证书中 SSL 加密算法是否存在
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                         //跟踪爬取重定向页面
      curl_setopt($ch, CURLOPT_AUTOREFERER, true);                            //当Location:重定向时,自动设置header中的Referer:信息
      curl_setopt($ch, CURLOPT_ENCODING, '');                                 //解决网页乱码问题
      curl_setopt($ch, CURLOPT_HEADER, empty($params["header"])?false:true);  //不返回 header 部分
      if(!empty($params["fields"])){
        curl_setopt($ch, CURLOPT_POST, true);                                  //设置为 POST 
        curl_setopt($ch, CURLOPT_POSTFIELDS,$params["fields"]);                //提交数据
      }
      if(!empty($params["cookie"])){
        curl_setopt($ch, CURLOPT_COOKIE, $params["cookie"]);                  //从字符串传参来提交cookies
      } 
      if(!empty($params["proxy"])){
        curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);                  //代理认证模式
        curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);                  //使用http代理模式
        curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
        curl_setopt($ch, CURLOPT_PROXY, "58.251.230.220:9797");   //代理服务器地址 host:post的格式

        if(!empty($params["proxy_userpwd"])){
            curl_setopt($ch, CURLOPT_PROXYUSERPWD, $params["proxy_userpwd"]); //http代理认证帐号,username:password的格式
        }
      }
      $data = curl_exec($ch);                                                 //运行 curl,请求网页并返回结果
      curl_close($ch);                                                        //关闭 curl
      return $data;
}
function rand_ip() {
    $ip_long = array(array('607649792', '608174079'), //36.56.0.0-36.63.255.255
    array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255
    array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255
    array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255
    array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255
    array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255
    array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255
    array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255
    array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255
    array('-569376768', '-564133889') //222.16.0.0-222.95.255.255
    );
    $rand_key = mt_rand(0, 9);
    $ip = long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
    return $ip;
}
$wap = preg_match("/(iPhone|iPad|iPod|Linux|Android)/i", strtoupper($_SERVER['HTTP_USER_AGENT']));
if($wap){
$datainfo['success'] = '1';
$datainfo['type'] = '';
$datainfo['play'] = 'h5mp4';
$datainfo['url'] = $url;
}else{
$datainfo['success'] = '1';
$datainfo['type'] = '';
$datainfo['play'] = 'hls';
$datainfo['url'] = $url;
}

$json_data=json_encode($datainfo);
echo $json_data;
?>
阿强爱分享
  • 本文由 发表于 2018年8月21日15:47:38
  • 转载请务必保留本文链接:https://iooqp.cn/89.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: