昨日已经完成需求了,今早起来发现失效了,看了下是Cookie失效了,还得重新获取Cookie岂不是很麻烦?

今天通过分享链接进行解析。

https://share.weiyun.com/GEk7EnGr

F12看下请求

有下载地址的请求出现,试着像昨天一样在网页代码中找。

结果是无,那么应该就是JS跳转或者响应得到的地址。慢慢分析请求。终于在这个链接的响应中有所发现。

https://share.weiyun.com/webapp/json/weiyunShare/WeiyunSharePartDownload?refer=firefox_windows&g_tk=674008136&r=0.8535684019613796

我以为就这么简单了,看了下,我懵了。

我不太清楚怎么构建,也觉得麻烦,这里我能看见fild_id等文件信息关键词,昨日的是设定好的,今天从分享链接解析,当然需要自动获取这些信息咯,继续向上分析请求。最终在这条链接中有所发现。

https://share.weiyun.com/webapp/json/weiyunShare/WeiyunShareView?refer=firefox_windows&g_tk=674008136&r=0.046144312826791656

经过测试,Cookie中的wyctoken最重要的,并且要与链接中的g_tk参数相同。

看一下请求

分析发现,req_header中的sep和share_key会发生变化,其余可固定,这里我偷懒的,这么多参数,懒得输,直接复制。

$data = '{"req_header":"{\"seq\":'.time().',\"type\":1,\"cmd\":12002,\"appid\":30113,\"version\":3,\"major_version\":3,\"minor_version\":3,\"fix_version\":3,\"wx_openid\":\"\",\"user_flag\":0}","req_body":"{\"ReqMsg_body\":{\"ext_req_head\":{\"token_info\":{\"token_type\":0,\"login_key_type\":1,\"login_key_value\":\"\"},\"language_info\":{\"language_type\":2052}},\".weiyun.WeiyunShareViewMsgReq_body\":{\"share_pwd\":null,\"share_key\":\"'.$share_key.'\"}}}"}';

测试成功。

https://share.weiyun.com/webapp/json/weiyunShareNoLogin/WeiyunSharePartDownload?refer=firefox_windows&g_tk=1532617210&r=0.07883033651613147

上面这条请求我也这么弄,搞了好久,就是用户信息失效。我一直怀疑是data的问题,但是太多转义字符了,分析不出来。与上面不同在于

\\\在php输出只有\\,不知道怎么处理,只有自己构建了。

{"req_header":"{\"seq\":15992058372945316,\"type\":1,\"cmd\":12023,\"appid\":30113,\"version\":3,\"major_version\":3,\"minor_version\":3,\"fix_version\":3,\"wx_openid\":\"\",\"user_flag\":0,\"device_info\":\"{\\\"browser\\\":\\\"firefox\\\"}\"}","req_body":"{\"ReqMsg_body\":{\"ext_req_head\":{\"token_info\":{\"token_type\":0,\"login_key_type\":1,\"login_key_value\":\"\"},\"language_info\":{\"language_type\":2052}},\".weiyun.WeiyunSharePartDownloadMsgReq_body\":{\"os_info\":\"windows\",\"browser\":\"firefox\",\"share_key\":\"GEk7EnGr\",\"pwd\":\"\",\"download_type\":20,\"file_list\":[{\"pdir_key\":\"7a58cd00a3e4f9c3880ff3a29ee8f25a\",\"file_id\":\"da3862c4-e722-47e8-be9b-977534dfe771\",\"filename\":\"090302.mp4\",\"file_size\":5487894153}]}}}"}

我用在线网站解析的。

里面肯定也是JSON encode的,不能直接再解析,复制里面的解析

网上找了个json转php数组的在线网站,效果相当好

https://qqe2.com/json/json2phparray

这样写成数组,分别json_encode,然后再放到第一层,再json_encode一次,就是最终的$data了。这样POST需要把header这样设置

Content-Type:application/json

将链接对应的文件信息存到数据库,避免第二次访问再获取。调用方式:域名/文件名.php?url=微云链接只对文件为mp4等视频有效。最终效果:

附上源码:

<?php //ini_set("display_errors","On");$mysqli = new mysqli('localhost', '', '', '');$mysqli->query("SET NAMES utf8");if ($mysqli->connect_error) {  die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);}$geturl = $_GET['url'];$share_key1 = explode("weiyun.com/",$geturl);$share_key = $share_key1[1];$sql="SELECT * FROM `IK_urldata` WHERE `share_key` = '$share_key'";$query=$mysqli->query($sql)->num_rows;if($query> 0){  $jxurl = get_download_url($share_key);  echo $jxurl;}else{    $jxurl = get_value($share_key);    echo $jxurl;}function http_post($url,$headers,$data){    $ch = curl_init();    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    curl_setopt($ch, CURLOPT_URL, $url);    //curl_setopt($ch, CURLOPT_HEADER, true); //返回response头部信息    curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");    //curl_setopt($ch, CURLOPT_POST, true);    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    $sResult = curl_exec($ch);    if($sError=curl_error($ch)){        die($sError);    }    curl_close($ch);    return $sResult;}function get_value($share_key){$code = '';for ($i=0;$i<9;$i++) {         //通过循环指定长度    $randcode = mt_rand(0,9);     //指定为数字    $code .= $randcode;}$cookie = 'wyctoken='.$code.'; FTN5K=[object Object]';$header = array('User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36','cookie:'.$cookie,'Content-Type:application/json');$url = 'https://share.weiyun.com/webapp/json/weiyunShareNoLogin/WeiyunShareView?refer=firefox_windows&g_tk='.$code.'&r=0.9378336906117634';$data = '{"req_header":"{\"seq\":'.time().',\"type\":1,\"cmd\":12002,\"appid\":30113,\"version\":3,\"major_version\":3,\"minor_version\":3,\"fix_version\":3,\"wx_openid\":\"\",\"user_flag\":0}","req_body":"{\"ReqMsg_body\":{\"ext_req_head\":{\"token_info\":{\"token_type\":0,\"login_key_type\":1,\"login_key_value\":\"\"},\"language_info\":{\"language_type\":2052}},\".weiyun.WeiyunShareViewMsgReq_body\":{\"share_pwd\":null,\"share_key\":\"'.$share_key.'\"}}}"}';$res=http_post($url,$header,$data);$res2 = json_decode($res,true);$resbody = $res2['data']['rsp_body']['RspMsg_body']['file_list'][0];$file_id = $resbody['file_id'];$file_name = $resbody['file_name'];$file_size = $resbody['file_size'];$pdir_key = $resbody['pdir_key'];$mysqli = new mysqli('localhost', 'sql_154_8_157_22', 'tXEY3NSCXcfkR8wL', 'sql_154_8_157_22');$mysqli->query("SET NAMES utf8");$sql="INSERT INTO `IK_urldata` (`id`, `share_key`, `file_id`, `file_name`, `file_size`, `pdir_key`) VALUES ('', '$share_key', '$file_id', '$file_name', '$file_size', '$pdir_key')";$query=$mysqli->query($sql);if($query){  return get_download_url($share_key);}  }function get_download_url($share_key){$code = '';for ($i=0;$i<9;$i++) {         //通过循环指定长度    $randcode = mt_rand(0,9);     //指定为数字    $code .= $randcode;}    $mysqli = new mysqli('localhost', 'sql_154_8_157_22', 'tXEY3NSCXcfkR8wL', 'sql_154_8_157_22');$mysqli->query("SET NAMES utf8");$sql="SELECT * FROM `IK_urldata` WHERE `share_key` = '$share_key'";$query=$mysqli->query($sql)->fetch_assoc();$file_id = $query['file_id'];$file_name = $query['file_name'];$file_size = $query['file_size'];$pdir_key = $query['pdir_key'];$url2 = 'https://share.weiyun.com/'.$share_key;$cookie = 'wyctoken='.$code.';';$header = array('User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36','Cookie:'.$cookie,'Content-Type:application/json','Accept: application/json, text/plain, */*');$a=[  'seq' => time(),  'type' => 1,  'cmd' => 12023,  'appid' => 30113,  'version' => 3,  'major_version' => 3,  'minor_version' => 3,  'fix_version' => 3,  'wx_openid' => '',  'user_flag' => 0,  'device_info' => '{"browser":"firefox"}',];$b=[  'ReqMsg_body' => [    'ext_req_head' => [      'token_info' => [        'token_type' => 0,        'login_key_type' => 1,        'login_key_value' => '',      ],      'language_info' => [        'language_type' => 2052,      ],    ],    '.weiyun.WeiyunSharePartDownloadMsgReq_body' => [      'os_info' => 'windows',      'browser' => 'firefox',      'share_key' => $share_key,      'pwd' => '',      'download_type' => 20,      'file_list' => [      [          'pdir_key' => $pdir_key,          'file_id' => $file_id,          'filename' => $file_name,          'file_size' => $file_size,        ],      ],    ],  ],];$codea = json_encode($a,true);$codeb = json_encode($b,true);$c=[  'req_header' => $codea,  'req_body' => $codeb,];$data = json_encode($c);  $url = 'https://share.weiyun.com/webapp/json/weiyunShareNoLogin/WeiyunSharePartDownload?refer=firefox_windows&g_tk='.$code.'&r=0.3463884447034302';  $res=http_post($url,$header,$data);  $res2 = json_decode($res,true);  $resbody = $res2['data']['rsp_body']['RspMsg_body']['download_url'];  $durl= explode("?fname",$resbody);  $doload_url = $durl[0];  return $doload_url;}?>

微云解析源码_后续,微云直链解析源码记录相关推荐

  1. 优酷视频怎么转二维码_优酷视频转二维码

    有的人想将自己制作的视频分享出去,那么该如何将视频转换成二维码来分享呢?其实方法很简单,直接在视频界面中就能生成,这里和大家讲讲. 01. 登录自己的优酷帐号,然后点击右上角的上传按钮. 优酷视频怎么 ...

  2. 一个完整的网上商城的源码_黄冈微信分销商城系统-源码码网

    5.资金管理,商城中产生的每一笔订单会员购物分销系统中都会有详细的记录,然后以数据报表的形式呈现在商家的眼前,通过报表,商城的营业情况一目了然.商家在系统后台可以随时查看商城的财务数据和顾客的消费情况 ...

  3. Java线程池状态判断源码_深入浅出Java线程池:源码篇

    前言 在上一篇文章深入浅出Java线程池:理论篇中,已经介绍了什么是线程池以及基本的使用.(本来写作的思路是使用篇,但经网友建议后,感觉改为理论篇会更加合适).本文则深入线程池的源码,主要是介绍Thr ...

  4. 云原生的本质_什么是云原生?云原生和传统软件有什么区别?有什么特征

    云原生 很多人都会问"到底什么是云原生?"."云原生和传统软件有什么区别?". 背景 顾名思义,云原生应用即专门为在云平台部署和运行而设计的应用.云原生能够以可 ...

  5. 支持python的云虚拟主机价格_万网云虚拟主机密码怎么样,python 购买虚拟主机测评...

    [腾讯云]  点击进入 高性能云服务器1核2G首年99元 [华为云]点击进入 2核4G5M企业级云主机707元/年 香港免备案主机129/年 [阿里云]点击进入 云服务器低至0.95折 1核2G EC ...

  6. 生成有时间限制的二维码_微信公众号渠道二维码怎么制作?监测渠道效果的利器来了...

    每逢营销节点,各种渠道推广少不了,非常时刻需要能够统计不同渠道二维码的数据情况. 微信引流效果好不好怎么判断?新增人数为什么一团乱麻?粉丝又分别是从哪个渠道来的? 用渠道二维码就能搞定这些问题. 一. ...

  7. 小样本点云深度学习库_基于点云深度学习的点云数据集制作系统及方法与流程...

    本发明涉及测控技术领域,尤其涉及一种基于点云深度学习的点云数据集制作系统及方法. 背景技术: 深度学习网络模型一般都是基于64线单帧激光数据集进行.但64线激光器和单帧的限定,造成了工程应用中点云数据 ...

  8. python制作二维码_基于Python生成个性二维码过程详解

    一.问题描述 通过调用MyQR模块来实现生成个人所需二维码. 安装: pip install myqr 二.代码实现 1.普通二维码 from MyQR import myqr # 普通二维码 myq ...

  9. python输出字符的ascii码_如何获取一个字符的ASCII码

    如何获取一个字符的ASCII码 Python内置ord函数 用来将字符转化成ASCII码 用法为: print('字符0 的ASCII码表示为',ord('0')) 结果为: 字符0 的ASCII码表 ...

  10. GOOGLE ADSENSE广告联盟收不到PIN码_快速表单身份验证PIN码方法

    在自己的网站或者博客上投放Google Adsense广告是目前很多站长不错的赚钱途径.尤其是Google Adsense不仅单价高.而且信誉好.支付稳定等天然优势让国内众多广告联盟黯然失色.在流量有 ...

最新文章

  1. 什么是ECS以及如何使用登陆
  2. [转]pthread用于进程间通信
  3. python编程入门指南怎么样-如果想学python怎么入门?
  4. 按类别组织的Python主要内置对象类型
  5. 041_CSS3文本效果
  6. 以A表中的值快速更新B表中记录的方法
  7. 单调栈 leetcode整理(三)
  8. [转]python进阶到高阶大全
  9. rant c语言头文件,用CGIC库来开发CGI程序
  10. .NET中的Lambda表达式与匿名方法
  11. 关于axure 8在发布的时候显示:Unable to connect to Axure Share.的问题
  12. java银行叫号_银行排队叫号系统
  13. 阿古斯机器人_燃烧王座:暗牧神器新语音暗示虚空之力
  14. CS224W-图神经网络 笔记5.3:Spectral Clustering - 谱图聚类的具体操作步骤
  15. tiktok直播代运营关注要素
  16. 服务器网卡驱动_教你星际蜗牛C款i211网卡服务器咋装Windows sevs2012R2服务器下
  17. java+vue的二维码生成,二维码上传服务器,二维码的压缩包下载
  18. win7如何进入计算机配置,教您win7怎么进入设置bios
  19. 使用CloudCompare渲染好看的油麦菜点云的小方法
  20. bpm,bpm千万里我找的就是你!!

热门文章

  1. 林轩田《机器学习基石》(十一)—— Linear models for classification
  2. 大衣哥家的小伟和亚楠还能走多久?
  3. 注意力机制-CA注意力-Coordinate attention
  4. sqli-labs闯关指南 1—10
  5. Fbank特征与MFCC特征解析
  6. winform 监控 控制台 输出_海南指挥中心控制台公司-精诚创信
  7. 使用Kieker(AspectJ)监控控制台程序
  8. 360加固签名验证_android - 使用360加固的方法(需要在windows下面,先加固,再签名)...
  9. 洛阳出发自驾不到半天就能看“海”!人少景美路途近!
  10. XML 大于号 小于号 处理