问题描述
存在:http://server1.com/player.php 服务器1内有一个clappr播放器,如下所示:
<script type='text/javascript'>
var player = new clappr.Player({
source: window.atob("bXlzdHJlYW0ubTN1OA=="),plugins: [],parentId: '#player',width: '100%',height: '100%',//hlsMinimumDvrSize: 0,chromecast: {
appId: '9DFB77C0',media: {
type: ChromecastPlugin.None,title: 'Tittle',subtitle: 'Sub'
}}
//playback: {
// hlsjsConfig: {
// liveSyncDurationCount: 2
//}
//}
});
我在http://server2.com内名为test.PHP的文件中使用了以下代码
我得到了:
var player = new clappr.Player({ source: window.atob("bXlzdHJlYW0ubTN1OA=="),plugins: []
- 如何“解码”路线? (“ bXlzdHJlYW0ubTN1OA ==”到“ mystream.m3u8”)
- 路径解码后,如何让它“单独”在新播放器中使用?
[https://stackoverflow.com/a/44234560/12765259] [1]
$url = 'http://server1.com/player.PHP';
$curl = curl_init($url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML,like Gecko) Chrome/8.0.552.224 Safari/534.10');
$html = curl_exec($curl);
curl_close($curl);
$dom = new DOMDocument();
@$dom->loadHTML($html); //convert character asing
$xpath = new DOMXPath($dom);
$script = $xpath->query ('//script[contains(text(),"window.atob(")]')->item (0)->nodeValue;
$json = end(explode( 'sources:',$script));
$json = explode ( ']',$json)[0].']';
echo $json
?>```
[1]: https://stackoverflow.com/a/44234560/12765259
解决方法
要实现此目的,您应该查找以下PHP函数:base64_decode和preg_match
然后执行以下操作:
// get $html with CURL...
// for example
$html = '<script>...window.atob("bXlzdHJlYW0ubTN1OA==")...';
// capture window.atob("....") inside a variable: $html_snip
preg_match('/(window\.atob\(\".*\"\))/',$html,$html_snip);
// transform it to array [0][window.atob(] [1][....] [2][)]
$html_snip = explode('"',$html_snip[0]);
// get the encoded part [1][...]
$encoded_link = $html_snip[1];
// decode it from base64 to "mystream.m3u8"
$real_link = base64_decode($encoded_link);
// Now you can use $real_link where you want
// A. save it in a file...
$save_path = "links.txt";
file_put_contents($save_path,$real_link);
// B. echo it inside a <script>
<script>
// javacript here....
var real_link = "<?php echo $real_link; ?>";
</script>