前言
由于自己之前在淘宝给人做的一套直播点播的。因为某些原因跑单不欢而散。
造成需要自己来更新维护,弄会一些营养费。
有些国内的直播源经常更新,或者直播源随之时间改变
或者由于判断了来源,又或者某系参数需要解密得到真实源
所以很有需要使用PHP来做一个跳板就是做代理
下面让我们来个简单的栗子。芒果TV 的湖南频道
效果图
原型分析
抓包获取GET请求如下
GET https://mpplive.api.mgtv.com/v1/epg/turnplay/getLivePlayUrlMPP?version=PCweb_1.0&platform=4&buss_id=2000001&channel_id=280&definition=std&_support=10000000 HTTP/1.1 Host: mpplive.api.mgtv.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0 Accept: */* Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate, br Referer: https://player.mgtv.com/mgtv_v5_live/live.swf Connection: keep-alive Cookie: locale=CN; sessionid=1561468960747; lastActionTime=1561468983530; __STKUUID=0c905e44-3bad-4fe3-b349-fe216799945e; __random_seed=0.8204307238528736; mba_deviceid=efcce309-e283-22af-6e5d-2c75eb525000; mba_sessionid=b588fcde-1cd4-b431-3f1c-ae44205f5021; mba_last_action_time=1561468967369; PLANB_FREQUENCY=XRIgI0qVH1Hkb4ez; MQGUID=1143509825016180736; __MQGUID=1143509825016180736
网页返回:
HTTP/1.1 200 OK Date: Tue, 25 Jun 2019 13:23:02 GMT Content-Type: text/html;charset=UTF-8 Content-Length: 330 Connection: keep-alive X-Protected-By: OpenRASP X-Request-ID: 638db7fea8ae434484b68b9451aec3d7 {"data":{"isothercdn":"0","npuk":"cmlkPTIy","url":"http://pctx.qing.mgtv.com/nn_live/nn_x64/cz04Y2Q2YTIzYjhjNzhiNmNiOTExZjkxOTQyZTEzNWYyMyZlcz0xNTYxNDk3NzgyJnV1aWQ9NjdiMzg1YzIwYTE5OWQxMDJlNWY3OTNlY2Q1MjA2NTEtYjcwMTU1ZTgmdj0yJmFzPTAmY2RuZXhfaWQ9dHhfcGNfbGl2ZQ,,/HNJSMPP360.flv"},"errno":"0","msg":"成功","server_time":1561468982}
PHP代码
具体的意思看备注
<?php
header("Content-type:text/html; Charset=utf-8");
$id = $_GET['id'];
//定义需要提交的链接
$host = 'http://mpp.liveapi.mgtv.com/v1/epg/turnplay/getLivePlayUrlMPP?version=PCweb_1.0&platform=4&buss_id=2000001&channel_id='.$id.'&definition=std';
//定义协议头,下面的2个重要,如果网站没判断的也可以不设置
$headers = array(
'Host: mpp.liveapi.mgtv.com',
'Referer: http://player.hunantv.com/mgtv_v5_live/live.swf',
);
//通过PHP的curl以GET方式提交请求
$json_response = curl_get($headers, $host);
//提取返回的直播源地址
$flv = getNeedBetween($json_response,'url":"','"},"');
//然后设置返回头,让网页重转向至直播源地址
header('location:'.$flv);
function curl_get($headers, $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_sEtopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
//echo $data;
return $data;
}
function getNeedBetween($input,$start,$end){
$substr = substr($input, strlen($start)+strpos($input, $start),
(strlen($input) - strpos($input, $end))*(-1));
return $substr;
}
?>
这样我们就能通过参数id设置需要代理的节目。
最后把网址重定向至直播源。
自己搭建的服务器,记得要开启PHP的curl模块功能
自代理直播源
湖南经视[湖南],http://kjol.cc/proxy/hunan.php?id=280 湖南都市[湖南],http://kjol.cc/proxy/hunan.php?id=346 湖南公共[湖南],http://kjol.cc/proxy/hunan.php?id=261 湖南娱乐[湖南],http://kjol.cc/proxy/hunan.php?id=344 湖南电视剧[湖南],http://kjol.cc/proxy/hunan.php?id=484 湖南国际[湖南],http://kjol.cc/proxy/hunan.php?id=229 金鹰纪实[湖南],http://kjol.cc/proxy/hunan.php?id=316 金鹰卡通[湖南],http://kjol.cc/proxy/hunan.php?id=287 先锋兵羽[湖南],http://kjol.cc/proxy/hunan.php?id=329 快乐垂钓[湖南],http://kjol.cc/proxy/hunan.php?id=218 茶频道[湖南],http://kjol.cc/proxy/hunan.php?id=578 长沙新闻[湖南],http:///kjol.cc/proxy/hunan.php?id=269 长沙政法[湖南],http://kjol.cc/proxy/hunan.php?id=254 长沙女性[湖南],http://kjol.cc/proxy/hunan.php?id=230
楼主有详细教程吗?能发下详细直播源php代理教程吗?或者楼主可以加你qq请教吗?
想学习直播源PHP代理,楼主可以留个联系吗?向你学习学习
奇怪,我抓包怎么就抓不到和你一样的链接呢?
这个是去年的包了。间隔那么久了。可能网站已经有改动了
有huya.php 的?浙江啊之类 港台
想学习,兄弟给个详细点的demo教程。
当然是有偿劳动。
我想学有联系方式吗
大神你好,我也想学习动态源代理,请提供联系方式,可以付费,谢谢!
大神你好,我也需要学习动态源代理,请问代理可以统计客户端访问IP地址及数量吗?方便的话请留个联系方式,可以付费!
需要统计就需要在PHP写统计代码统计了之后在跳转到真实源上面
我想学习留个联系方式
先锋乒羽打不开
你自己重新抓下包在代理下吧