抖音无水印解析PHP源码
时间:2022-06-26
本文章向大家介绍抖音无水印解析PHP源码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
(adsbygoogle = window.adsbygoogle || []).push({});
抖音无水印解析PHP源码
仅限学习使用
输出为标准的格式化json数据
ajax直接调用即可
原生的ajax的调用方法看底部
<?php
$url = @$_GET['url'];
if (strstr($url,"douyin.com")) {
//获取301跳转真实地址
function getrealurl($url){ $header = get_headers($url,1);
if (strpos($header[0],'301') || strpos($header[0],'302'))
{if(is_array($header['Location'])) {return $header['Location'][count($header['Location'])-1];
}else{return $header['Location'];}}else{return $url;}};
$url = getrealurl($url);
//模拟苹果手机访问
$UserAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1';
// 截取ID
function GetBetween($content,$start,$end) {
$r = explode($start, $content);
if (isset($r[1])) {
$r = explode($end, $r[1]);
return $r[0];
}
return '';
}
$b = 'https://www.iesdouyin.com/share/video/';
$c = '/?';
$id = GetBetween($url,$b,$c);
$d ='https://api-hl.amemv.com/aweme/v1/aweme/detail/?aid=1128&app_name=aweme&version_code=251&aweme_id='.$id;
//curl
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $d);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_ENCODING, '');
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($curl);
$a = $data;
curl_close($curl);
header('Content-type:text/json');
$Array = json_decode($a,true);
$name = $Array["aweme_detail"]["author"]["nickname"];
$title = $Array["aweme_detail"]["share_info"]["share_title"];
$videourl= $Array["aweme_detail"]["video"]["play_addr"]["url_list"][0];
$cover = $Array["aweme_detail"]["video"]["origin_cover"]["url_list"][0];
$des = $Array["aweme_detail"]["desc"];
if($videourl==""){
$status = "0";
}else{
$status="1";
}
$Json = array('status'=>$status,'name'=>$name,'title'=>$title,'des'=>$des,'cover'=>$cover,'videourl'=>$videourl);
$turl=json_encode($Json,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);
echo stripslashes($turl);
} else
{
echo '请输入抖音分享的地址,如:http://v.douyin.com/eRcTtj/';
}
?>
<script>
function setValue()
{
var v = document.getElementById("input1").value;//取得参数
var reg=/^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~/])+$/;
if(!reg.test(v)){md.showWarning('top','right');}
else{ var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","/douyin/?url="+v,false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;//获取数据
var jsonObj = JSON.parse(xmlhttp.responseText); // 初始化!!!
//document.getElementById("input1").value= jsonObj.url; //注释解析
document.getElementById("v1").src = jsonObj.url;
document.getElementById("media").load();
md.showNotification('top','right');//
}
}
</script>
网站输出视频必须是https协议
(adsbygoogle = window.adsbygoogle || []).push({});
- golang讲解(go语言)标准库分析之strings结束篇
- golang(GO语言)http详解简单基础
- 操作系统几种I/O访问类型以及异步I/O性能评估
- 用golang写的golang解析json数据的包
- 神奇的go语言(网页下载)
- 关于MySQL极限值的初步验证纠错
- 神奇的go语言(开始篇)
- GPFS 3.4 的配置变更与性能评估
- 神奇的go语言(面向对象)
- 机器学习玩转Flappy Bird全书:六大“流派”从原理到代码
- 神奇的go语言(高级应用)
- HTML5 游戏引擎深度测评
- PowerVM 环境下实施 PowerHA7.1 要点
- Oculus + Node.js + Three.js 打造VR世界
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 并发编程之Atomic&Unsafe魔法类详解
- 重温Retrofit源码,笑看协程实现
- 【java设计模式系列】3. 抽象工厂模式(Abstract Factory)
- 解决jar包冲突的简单办法
- 【Java8新特性】01 函数式接口和Lambda表达式你真的会了吗
- 只出现一次的元素
- 【排序】堆排序
- redis灵魂拷问:怎样搭建一个哨兵主从集群
- 是时候给你的鼠标指针更换样式换下风格体验了!如何卸载与安装鼠标指针?
- Linux设置虚拟内存
- SSM 单体框架 - 教育平台后台管理系统:接口文档
- java学习应用篇|使用环境变量做一些工具
- 【Java8新特性】06 新的日期和时间:LocalDate LocalTime LocalDateTime
- UNSAFE和Java 内存布局
- 【玩转Redis面试第1讲】Redis数据结构和常用命令速记