抖音,快手,千图,千库,摄图,文库等一系列的开源解析文件源文件

[复制链接]
查看630 | 回复0 | 2020-2-27 22:37:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
介绍
抖音,快手,千图,千库,摄图,文库等一系列的开源解析文件,逐步增加中
安装教程
  • 为防止伸手党,所有文件仅给出源码,不做文档,如需知道传递的参数,请查阅相关文件源码
  • 代码中难免有出错的地方,或者哪里有不多的,请多多指教,不要妄下评论
  • 所有解析均是源站解析,不借用第三方平台
  • 如若解析失效,请与我联系,或者你自己解决,文件在上传之前都是做过测试的!
使用说明
  • 仅用于学习交流使用,不得用于商业目的,否则后果自负
  • 开源不易,请尊重作者劳动成果,在文件中保留作者的注释内容
  • 如果你觉得对你有用,请给个star,谢谢!
douyin.php
  1. <?php
  2. $url = $_GET['url'];
  3. if (strstr($url, "douyin.com")) {
  4.     $str = curl_get($url);
  5.     $id = GetBetween($str, 'video/', '/?');
  6.     $str = curl_get('https://api-hl.amemv.com/aweme/v1/aweme/detail/?aid=1128&app_name=aweme&version_code=251&aweme_id=' . $id);
  7.     $arr = json_decode($str, true);
  8.     $desc = $arr['aweme_detail']['desc'];
  9.     $name = $arr['aweme_detail']['author']['nickname'];
  10.     $avatar = $arr['aweme_detail']['author']['avatar_larger']['url_list'][0];
  11.     $music_url = $arr['aweme_detail']['music']['play_url']['url_list'][0];
  12.     $cover = $arr['aweme_detail']['video']['cover']['url_list'][0];
  13.     $play = $arr['aweme_detail']['video']['play_addr']['url_list'][0];
  14.     exit(json_encode(['code' => 'ok', 'user' => $name, 'avatar' => $avatar, 'desc' => $desc, 'music' => $music_url, 'cover' => $cover, 'play' => $play]));
  15. } else {
  16.     exit(json_encode(['code' => 'error', 'msg' => '抖音分享链接有误,url参数不正确']));
  17. }

  18. function curl_get($url)
  19. {
  20.     $refer = $url;
  21.     $header = array(
  22.         'CLIENT-IP: ' . randIp(),
  23.         'X-FORWARDED-FOR: ' . randIp(),
  24.     );
  25.     $ch = curl_init();
  26.     curl_setopt($ch, CURLOPT_URL, $url);
  27.     curl_setopt($ch, CURLOPT_HEADER, 0);
  28.     curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  29.     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.3578.80 Mobile Safari/537.36");
  30.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  31.     curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
  32.     curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  33.     curl_setopt($ch, CURLOPT_REFERER, $refer);
  34.     $output = curl_exec($ch);
  35.     curl_close($ch);
  36.     return $output;
  37. }

  38. function GetBetween($content, $start, $end)
  39. {
  40.     $r = explode($start, $content);
  41.     if (isset($r[1])) {
  42.         $r = explode($end, $r[1]);
  43.         return $r[0];
  44.     }
  45.     return '';
  46. }

  47. function randIp()
  48. {
  49.     return mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255);
  50. }
复制代码

wenku.php
  1. <?php
  2. // 生成用户 唯一值
  3. function buildAppId()
  4. {
  5.     mt_srand((double)microtime() * 10000);//optional for php 4.2.0 and up.
  6.     $charid = strtoupper(md5(uniqid(rand(), true)));
  7.     $hyphen = chr(45);// "-"
  8.     $uuid = substr($charid, 0, 8) . $hyphen
  9.         . substr($charid, 8, 4) . $hyphen
  10.         . substr($charid, 12, 4) . $hyphen
  11.         . substr($charid, 16, 4) . $hyphen
  12.         . substr($charid, 20, 12);
  13.     return $uuid;
  14. }

  15. // 生成用户 key 值 用于存储用户信息

  16. if (isset($_GET['build']) && $_GET['build'] == 1) {
  17.     toJson("APPID生成成功", 200, ['APPID' => buildAppId()]);
  18. }
  19. //var_dump(buildAppId());die;

  20. // 存储用户 唯一值 如果有人需要授权使用 则 生成appid 之后填写到这里 ,生成方法 在地址后面加上 build=1 即可生成
  21. function appId()
  22. {
  23.     $data[] = '35FCB049-8B12-BB5B-69C6-3C31708B792C';//酷Q机器人调用
  24.     $data[] = 'D19DDCB1-38FA-3F40-6A29-04CF98DAC19A';// ...
  25.     $data[] = '0084DA25-0FAB-D163-099E-E9C67CF87E65';// ...
  26.     $data[] = '9CA2B554-CCDC-72CF-34BD-AE704AF74F99';// ...
  27.     return $data;
  28. }

  29. /**
  30. * 签名
  31. * @param $appSecret
  32. * @param $params
  33. * @return string
  34. */
  35. function buildSign($appId, $params)
  36. {
  37.     unset($params['sign']);
  38.     ksort($params);
  39.     $text = '';
  40.     foreach ($params as $k => $v) {
  41.         $text .= $k . $v;
  42.     }
  43.     return strtoupper(md5(md5($appId . $text . $appId)));
  44. }

  45. if (!isset($_GET['appid']) || !$_GET['appid'] || !in_array($_GET['appid'], appId())) {
  46.     toJson("授权失败", 400);
  47. }
  48. if (!isset($_GET['sign']) || !$_GET['sign']) {
  49.     toJson("缺少签名参数、请重试", 400);
  50. }
  51. // 验证签名是否正确
  52. $sign = buildSign($_GET['appid'], $_GET);
  53. if ($sign != $_GET['sign']) {
  54.     toJson("签名错误,请稍候重试", 400, $sign);
  55. }

  56. // 获取cookie
  57. $cookie = '';

  58. // 网络请求方法
  59. function httpRequest($url, $method, $postfields = null, $headers = array(), $debug = false)
  60. {
  61.     $method = strtoupper($method);
  62.     $ci = curl_init();
  63.     /* Curl settings */
  64.     curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
  65.     curl_setopt($ci, CURLOPT_HTTPHEADER, array('Client_Ip: ' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255)));//优点:伪造成本低,通杀90%系统
  66.     curl_setopt($ci, CURLOPT_HTTPHEADER, array('X-Forwarded-For: ' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255)));//优点:伪造成本低,通杀90%系统
  67.     curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
  68.     curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间,如果设置为0,则无限等待 */
  69.     curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 设置cURL允许执行的最长秒数 */
  70.     curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
  71.     switch ($method) {
  72.         case "POST":
  73.             curl_setopt($ci, CURLOPT_POST, true);
  74.             if (!empty($postfields)) {
  75.                 $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
  76.                 curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);
  77.             }
  78.             break;
  79.         default:
  80.             curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
  81.             break;
  82.     }
  83.     $ssl = preg_match('/^https:\/\//i', $url) ? TRUE : FALSE;
  84.     curl_setopt($ci, CURLOPT_URL, $url);
  85.     if ($ssl) {
  86.         curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
  87.         curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
  88.     }
  89.     //curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/
  90.     curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
  91.     curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
  92.     curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
  93.     curl_setopt($ci, CURLINFO_HEADER_OUT, true);
  94.     /*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */
  95.     $response = curl_exec($ci);
  96.     $requestinfo = curl_getinfo($ci);
  97.     $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
  98.     if ($debug) {
  99.         echo "=====post data======\r\n";
  100.         var_dump($postfields);
  101.         echo "=====info===== \r\n";
  102.         print_r($requestinfo);
  103.         echo "=====response=====\r\n";
  104.         print_r($response);
  105.     }
  106.     curl_close($ci);
  107.     return $response;
  108.     //return array($http_code, $response,$requestinfo);
  109. }

  110. // 响应 json 格式的参数
  111. function toJson($msg, $code = 200, $data = [])
  112. {
  113.     header('Content-Type:application/json; charset=utf-8');
  114.     $array['msg'] = $msg;
  115.     $array['code'] = $code;
  116.     $array['data'] = $data;
  117.     exit(json_encode($array));
  118. }

  119. // 短网址转换
  120. function baiDuDwz($longUrl)
  121. {
  122.     $host = 'https://dwz.cn';
  123.     $path = '/admin/v2/create';
  124.     $url = $host . $path;
  125.     $method = 'POST';
  126.     $content_type = 'application/json';

  127. // TODO: 设置Token
  128.     $token = 'd7852c1ffabbf77670845258309ae352';

  129. // TODO:设置待注册长网址
  130.     $bodys = array('Url' =>$longUrl, 'TermOfValidity' => 'long-term');

  131. // 配置headers
  132.     $headers = array('Content-Type:' . $content_type, 'Token:' . $token);

  133. // 创建连接
  134.     $curl = curl_init($url);
  135.     $ssl = preg_match('/^https:\/\//i', $host) ? TRUE : FALSE;
  136.     curl_setopt($curl, CURLOPT_URL, $url);
  137.     if ($ssl) {
  138.         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
  139.         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
  140.     }
  141.     curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
  142.     curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  143.     curl_setopt($curl, CURLOPT_FAILONERROR, false);
  144.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  145.     curl_setopt($curl, CURLOPT_HEADER, false);
  146.     curl_setopt($curl, CURLOPT_POST, true);
  147.     curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($bodys));

  148. // 发送请求
  149.     $response = curl_exec($curl);
  150.     curl_close($curl);

  151. // 读取响应
  152.     if (!$response){
  153.         return $longUrl;
  154.     }
  155.     try{
  156.         $response = json_decode($response,true);
  157.     }catch (Exception $e){
  158.         toJson('数据获取失败', 400);
  159.     }
  160.     if ($response['Code'] == 0 && $response['ShortUrl']){
  161.         return $response['ShortUrl'];
  162.     }else{
  163.         return $longUrl;
  164.     }
  165. }

  166. // 截取文档ID
  167. $url = isset($_GET['url']) ? $_GET['url'] : '';
  168. if (!$url) {
  169.     toJson('url参数不正确', 400);
  170. }
  171. $id = strstr(substr($url, strripos($url, "/") + 1), '.', true);
  172. $time = time();
  173. $url = 'https://study.baidu.com/api/p/doc/view/download?doc_id=' . $id . '&t=' . $time . '&fastdown=undefined&t=1559828438675&fr=4';

  174. //文档下载链接 = 网页_访问S (“https://study.baidu.com/api/p/doc/view/download?doc_id=” + 文件ID + “&fastdown=undefined&t=1559828438675&fr=4”, 0, “doc_id=” + 文件ID + “&fastdown=undefined&t=1559828438675&fr=4”, “BAIDUID=0FF2BDE0EC48DAEF1B7333B68B15EAD9:FG=1; BIDUPSID=0FF2BDE0EC48DAEF1B7333B68B15EAD9; PSTM=1559780736; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; delPer=0; BDRCVFR[tFA6N9pQGI3]=mk3SLVN4HKm; H_PS_PSSID=; PSINO=7; Hm_lvt_0785cae3f3d84faf3af8cad08727feb6=1559803237,1559803355,1559803422,1559822550; USERTOKEN=” + USERTOKEN + “; expirseData={#引号expire#引号:1577750400,#引号to_end_day#引号:207,#引号space_c”, , , , , , , , , , , , , , , )

  175. function randIp()
  176. {
  177.     return mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255);
  178. }

  179. // header 请求头
  180. $header = [
  181.     'Host: study.baidu.com',
  182.     'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
  183.     'Accept: application/json,application/x-www-form-urlencoded, */*; q=0.01',
  184.     'Referer: ' . $url,
  185.     'Cookie: ' . $cookie,
  186.     'CLIENT-IP: ' . randIp(),
  187.     'X-FORWARDED-FOR: ' . randIp(),
  188. ];
  189. // 请求数据
  190. $data = [
  191.     'doc_id' => $id,
  192.     't' => $time,
  193.     'fastdown' => 'undefined',
  194.     'fr' => 4
  195. ];
  196. $result = httpRequest($url, 'get', $data, $header, false);
  197. if (!$result) {
  198.     toJson("系统繁忙,请稍后再试", 400);
  199. }
  200. try {
  201.     $result = json_decode($result, true);
  202. } catch (Exception $e) {
  203.     toJson("系统繁忙,请稍后再试", 400);
  204. }
  205. if ($result['error'] == 0 && $result['errmsg'] == 'success') {
  206.     $down_url = baiDuDwz($result['data']['download_url']);
  207.     toJson("解析成功", 200, $down_url);
  208. } else {
  209.     toJson("系统繁忙,请稍后再试", 400);
  210. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

灌水成绩
406
主题
410
帖子
1576
积分
等级头衔
积分成就
  • 威望: 0
  • 贡献: 1166
  • 金钱: 0
  • 违规:
  • 在线时间:156 小时
  • 注册时间:2020-2-11
  • 最后登录:2020-8-23
个人勋章

最佳新人活跃会员热心会员突出贡献优秀版主论坛元老精贴王灌水之王荣誉管理

联系方式