更新百度网盘外链方法_无数据库缓存_仅供测试

作者:Matrix 被围观: 1,842 次 发布时间:2013-12-04 分类:兼容并蓄 零零星星 | 11 条评论 »

NOTICE:这是一个创建于 1103 天前的主题,其中的信息可能已经有所发展或是发生改变。

测试地址:

http://link.hhtjim.com

采用最新的本人无数据库缓存10min,绝对不靠谱,仅供测试!

警告:以下内容属于充字数类型且杂乱无章,需要外链功能的请戳上面的地址~

上个月,百度网添加了验证码功能导致以前抓取外链的方法都失效。度娘终于爆发了~

刚开始还没注意到验证码的存在,只要一连几次下载文件就会出现验证码窗口

验证码窗口

 

经过N次的文件下载,看到了度娘的脾气。

也就只允许你前3次下载免验证码,后面你要下载的话那就只有手动输入了。

抓到某个下载地址:

http://small.cdn.baidupcs.com/file/2c808f328bec8fa44d5ac5e2e42985d2?xcode=e0ad680ebd95ea801d4878451d04d36328f07d27337bcbfd0b2977702d3e6764

&fid=1178024267-250528-2238604782

&time=1386087754

&sign=FDTAXER-DCb740ccc5511e5e8fedcff06b081203-w%2FMs%2B2m13ixmrRpD2s11F01H6b4%3D

&to=sc

&fm=Q,B,U,nc

&expires=1386088354

&rt=sh

&r=860261331

&logid=2869754983&sh=1&vuk=3238236832

&fn=文件名

上面的fid、time、sign还能从页面处找到,有些参数根本就看不到。

time和expires参数都是unix时间戳,后者的意思是过期时间。时间相差600秒,也就10分钟。

在这10分钟之内这个地址都是有效的, 😉  那就有点头绪了。

抓取页面的必备参数,获取下载地址,再用session会话缓存那个下载地址,10分钟内有效或者再自动检测。

最爽的是第一次弄免数据库缓存,庆幸书上有session会话的相关章节  哈哈。

再手动下载几次就抓到了获取下载地址的URL:

http://pan.baidu.com/share/download?bdstoken=null&uk=&shareid=&fid_list=[]&sign=&timestamp=

看到那几个参数,笑了~

之后就是好几天的编写、测试下载,期间有看书整了个最基本的类 。 额  面向对象 。

源码就暂时为空。

提醒的是度娘这回要检测referer,跟360云盘一样的只能外链下载无法外链播放。自己试试就晓得~

所以我把link.hhtjim.com页面的那个下载按钮去掉了 ,TMD浏览器发送当前URl的referer是没法改的。无语啊~

先放个测试期间最早版本的cookies缓存源码:

  1. <?php  
  2. error_reporting(0);//禁用错误报告  
  3.   function curl_get($url,$post=false,$carry_header=true,$REFERER_=false,$useragent=false,$add_arry_header=null){  
  4.         $ch=curl_init($url);  
  5.   
  6.         if($carry_header){  
  7.             curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent:Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16'));  
  8.         }  
  9.         if($add_arry_header){  
  10.             curl_setopt($ch, CURLOPT_HTTPHEADER, $add_arry_header);  
  11.         }  
  12.         if ($post) {  
  13.             curl_setopt($ch, CURLOPT_POSTFIELDS, $post);  
  14.         }  
  15.         if($REFERER_){  
  16.             curl_setopt($ch, CURLOPT_REFERER,$REFERER_);  
  17.         }  
  18.         if($useragent){  
  19.             curl_setopt($ch, CURLOPT_USERAGENT, $useragent);  
  20.         }  
  21.           
  22.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
  23.         $get_url = curl_exec($ch);  
  24.         curl_close($ch);  
  25.         return $get_url;  
  26.     }  
  27.   
  28. preg_match('|u=(.*)|',$_SERVER["REQUEST_URI"],$bai_res);  
  29. $bai_=curl_get($bai_res[1]);  
  30.   
  31. preg_match('|shareid=\"(\d+)\"\?\"\1\":\"\";FileUtils\.uk=\"(\d+)\"\?\"\2\"|',$bai_, $ui); 
  32. preg_match('|fs_id\D+(\d+)\D+app_id|',$bai_,$fid); 
  33. preg_match('|timestamp=\"(\d+)\"|',$bai_,$time); 
  34. preg_match('|downloadsign=\"(\w+)\"|',$bai_,$login); 
  35. $diz="http://pan.baidu.com/share/download?bdstoken=null&uk=$ui[2]&shareid=$ui[1]&fid_list=[$fid[1]]&sign=$login[1]&timestamp=$time[1]&bdstoken=null&channel=chunlei&clienttype=0&web=1";  
  36. $header[]= 'Cookie: BAIDUID=*****';    //请使用自个儿的百度ID,度娘会检查这个的cookies
  37.   
  38. if(isset($_COOKIE["du$ui[2]-$ui[1]"])){ 
  39. //header( "Location: $_COOKIE["du$ui[2]-$ui[1]"]"); 
  40. echo $_COOKIE["du$ui[2]-$ui[1]"]; 
  41. }else{ 
  42. $dl=curl_get($diz,null,$header,$bai_res[1],null,$header); 
  43. $obj=json_decode($dl,true); 
  44. if($obj['errno']!='0'){ 
  45. //header( "Location: $bai_res[1]"); 
  46. echo $bai_res[1]; 
  47. } 
  48. setcookie("du$ui[2]-$ui[1]",$obj['dlink'],time()+3600*24); 
  49. //header( "Location: $obj['dlink']");  
  50. echo $obj['dlink'];  
  51. }  
  52. ?>  

这个能不能用就靠你怎么使了,仅是原理。

如果你即刻需要外链,请到http://link.hhtjim.com玩玩~

祝你好运!

博客也快一个月都没有更新了,不码点字不好~

本文固定链接:http://www.hhtjim.com/update-baidu-network-disk-outside-the-chain-_-no-database-cache.html
Matrix
本文章由 Matrix 于2013年12月04日发布在兼容并蓄, 零零星星分类下,目前没有通告,你可以至底部留下评论。
转载请注明:更新百度网盘外链方法_无数据库缓存_仅供测试-HHTjim'S 部落格
关键字:, , ,

有11 条评论 »

  1. 五度 五度 2014-2-10 14:16:05 +0800#6

    老大,这个怎么用哦。能支持到百度的外链吗? 😐

    • 五度 五度 2014-2-10 14:19:14 +0800

      能给个像360那样下载的PHP附上个使用例子不,这个不懂怎么使。。。 :mrgreen:

      • Matrix Matrix Moderator 2014-2-10 14:50:36 +0800

        外链的话 百度网盘不靠谱。还没有微云的好

    • Matrix Matrix Moderator 2014-2-10 14:47:02 +0800

      现在度娘网盘的外链只能做到下载的功能。外链播放的话没法

  2. Dicky Dicky 2014-1-3 10:58:06 +0800#5

    您好,我是bilibili.fm的站长,因为网站需要存放大量音频数据,打算采用度娘盘做云储存,自己按照您的方法无法实现外链,求指教。。。微博@DickyT qq493716787

    • Matrix Matrix Moderator 2014-1-3 18:32:26 +0800

      这个我也没法搞。度娘要检测referer 没法子外链播放的 就只能下载。

  3. 祥磊部落 祥磊部落 2013-12-7 10:20:47 +0800#4

    看样子 很NB

  4. 残酷综合搏客 残酷综合搏客 2013-12-6 21:10:22 +0800#3

    老大能分享下源码吗?

  5. 曾小帅 曾小帅 2013-12-6 21:00:11 +0800#2

    其实用模拟登录的方法获取自己网盘的音乐更简单,只不过百度下载的cdn服务器好像也会检测那个User-Agent,用浏览器下载与用工具下载速度相差很远!

  6. 回复测试 回复测试 2013-12-6 15:49:42 +0800#1

    🙄

添加新评论 »

 😛 Sad 忧伤 👿 Smile 笑脸 😳 😀 😯 😮 😕 😎 😆 😡 😈 Roll Eyes 转眼珠 😉 💡 😐 😥 Mr Green 绿脸先生

NOTICE: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!