作者:matrix
发布时间:2014-04-23
分类:兼容并蓄 零零星星
下面内容来自 php 开发实战宝典 附录A: php 编码规则
A.1 PHP File文件格式
A.1.1 常规
对于只包含PHP代码的文件,结束标志("?>")是不允许存在的,否则会导致文件末尾被意外地注入空白并显示输出。
由__HALT_COMPILER()允许的任意的二进制代码的内容被Zend Framework PHP文件或由它们产生的文件禁止。这个功能只对特殊的安装脚本开放。
A.1.2 缩进
使用4个空格的缩进,而不使用制表符TAB。
阅读剩余部分 »
作者:matrix
发布时间:2014-03-30
分类:兼容并蓄 零零星星
接口一:http://ting.hotchanson.com/detail.do?neid=音乐 ID &size=0
接口二:http://ting.hotchanson.com/website/ting?song_id=音乐ID &code=音乐ID的KEY &from=search
使用接口二较为费劲,需要得到key。
以接口一示例:
打开http://ting.hotchanson.com/detail.do?neid=574285&size=0可以看到
{"code":1,"msg":"OK","data":{"hotList":[],"num":79230,"singerId":4140,"albumName":"Versus","source":"http://lty.bla.enligner.com","count":79095,"singerName":"Usher","itemList":[{"fileType":"压缩品质","dType":1,"downUrl":"http://ws.cs.hotchanson.com/mp3_64_5/52/d4/52ca1c3dcb8e4895de7024b115e45ed4.mp3?k=347f92be0b97ffb3&t=1396579062","size":"1.70M","duration":"03:42"},{"fileType":"标准品质","dType":2,"downUrl":"http://jdlbqc.tgg.yymommy.com/m4a_96_5/52/d4/52ca1c3dcb8e4895de7024b115e45ed4.m4a?k=347f92be0b97ffb3&t=1396579062","size":"2.55M","duration":"03:42"},{"fileType":"标准品质","dType":3,"downUrl":"http://nie.dfe.yymommy.com/mp3_128_5/52/d4/52ca1c3dcb8e4895de7024b115e45ed4.mp3?k=347f92be0b97ffb3&t=1396579062","size":"3.39M","duration":"03:42"}],"publish":"","songName":"DJ Got Us Fallin' In Love","neid":574285}}
之后再从中匹配到需要的mp3链接跳转下载,这就做到外链 了。
php代码: 150323修改
<?php
if ($_GET['u']) {
$id = (is_numeric($_GET['u'])) ? $_GET['u'] : die('Do not see the expected value');//如果没有数字型的GET参数则退出
$url = "http://ting.hotchanson.com/detail.do?neid=$id&size=0";//拼接数据地址
$con = file_get_contents($url);//获取音乐ID的数据
$obj = json_decode($con);//准备提取json数据
$d = ($obj->data->itemList) ? $obj->data->itemList : die('Not Found "itemList"');//如果没有mp3的数据则退出
foreach ($d as $a) {//开始foreach循环遍历每个MP3链接
if (strpos($a->downUrl, ".mp3") && ($a->fileType == '压缩品质' || '标准品质'))//如果有.mp3且为'压缩品质' || '标准品质'则302跳转,否则继续找
{
header('Location: ' . $a->downUrl);
break;
} else {
continue;
}
}
}
说明:
上面代码保存为.php文件。
调用格式:http://XXXX/*.php?u=音乐ID
各行都有注释,不再细说。
再说接口二:
这接口二的玩意有些麻烦,不建议使用。
需要的话只是多一个步骤,得到key。
之前我也没注意这key是哪里来的,后来才晓得是js函数算出来的。
var u = {
song_id: t.song_id,
code: $.CRC32(t.song_id),
from: "search"
};
上面的第三行的CRC32()就是获取key的相关函数,里面的t.song_id是音乐ID
又从他页面上的其他js里找到这个代码,看来没错:
CRC32: function(f) {
var d = new Array(256);
var e, c;
var b;
for (e = 0; e < 256; e++) {
b = e;
for (c = 0; c < 8; c++) { if (b & 1) { b = ((b >> 1) & 2147483647) ^ 3988292384
} else {
b = ((b >> 1) & 2147483647)
}
}
d[e] = b
}
if (typeof f != "string") {
f = "" + f
}
b = 4294967295;
for (e = 0; e < f.length; e++) { b = ((b >> 8) & 16777215) ^ d[(b & 255) ^ f.charCodeAt(e)]
}
b ^= 4294967295;
return (b >> 3).toString(16)
},
这就是获取key的 CRC32函数。
然后再依葫芦画瓢翻译成php代码,Bingo!
function co($f) {
$d = Array();
$e = '';
$c = '';
$b = '';
for ($e = 0; $e < 256; $e++) {
$b = $e;
for ($c = 0; $c < 8; $c++) {
if ($b & 1) {
$b = (($b >> 1) & 2147483647) ^ 3988292384;
} else {
$b = (($b >> 1) & 2147483647);
}
}
$d[$e] = $b;
}
if (!is_string($f)) {
$f = "" + $f;
}
$b = 4294967295;
for ($e = 0; $e < strlen($f); $e++) {
$b = (($b >> 8) & 16777215) ^ $d[($b & 255) ^ get_bianma(substr($f, $e, 1))];
}
$b ^= 4294967295;// $b = $b ^ 4294967295;
$fuhao = (!is_numeric(substr($b >> 3, 0, 1))) ? substr($b >> 3, 0, 1) : '';
return $fuhao.base_convert($b >> 3, 10, 16);//base_convert会去掉($b >> 3)的负号,这里不要用dechex()转换为16进制
}
function get_bianma($str)//等同于js的charCodeAt()
{
$result = array();
for ($i = 0, $l = mb_strlen($str, 'utf-8'); $i < $l; ++$i) {
$result[] = uniord(mb_substr($str, $i, 1, 'utf-8'));
}
return join(",", $result);
}
function uniord($str, $from_encoding = false) {
$from_encoding = $from_encoding ? $from_encoding : 'UTF-8';
if (strlen($str) == 1)
return ord($str);
$str = mb_convert_encoding($str, 'UCS-4BE', $from_encoding);
$tmp = unpack('N', $str);
return $tmp[1];
}
说明:代码放到php文件的<?php 和?>之间
echo co('1757517');//显示出音乐id为1757517的KEY
之后再拼接接口二的地址,与接口一的代码同理获取MP3链接。
MP3外链 测试:
阅读剩余部分 »
作者:matrix
发布时间:2014-03-29
分类:兼容并蓄 零零星星
charCodeAt ()函数方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
JavaScript里经常看到charCodeAt 函数但有些时候需要转换为php ,这下就哦豁了。php 里没有这玩意~ 自己写又搞不来。
还好,网上有一大把的代码:
function get_bianma($str)//等同于js的charCodeAt()
{
$result = array();
for($i = 0, $l = mb_strlen($str, 'utf-8');$i < $l;++$i)
{
$result[] = uniord(mb_substr($str, $i, 1, 'utf-8'));
}
return join(",", $result);
}
function uniord($str, $from_encoding = false)
{
$from_encoding = $from_encoding ? $from_encoding : 'UTF-8';
if (strlen($str) == 1)
return ord($str);
$str = mb_convert_encoding($str, 'UCS-4BE', $from_encoding);
$tmp = unpack('N', $str);
return $tmp[1];
}
说明:
get_bianma(substr($f, $e, 1))等同于js 代码$f.charCodeAt($e)
表示获取$f中的第$e个位置的字符的 Unicode 编码
作者:matrix
发布时间:2014-03-04
分类:兼容并蓄 零零星星
优酷 的广告 很烦人,还好有些脚本可以搞定。
譬如:http://userscripts.org/scripts/show/119622 效果很不错!
chrome的使用说明:https://www.hhtjim.com/to-youku-ad-script.html
此页面的源码已失效 ,最新>>php源码优酷视频解析 更新
解析优酷视频过程:
例:http://v.youku.com/v_show/id_XNjc1MDI4Nzg0 .html
1.获取视频信息
http://v.youku.com/player/getPlayList/VideoIDS/XNjc1MDI4Nzg0
打开后可以看到视频相关信息。
需要其中的seed值、streamfileids里面hd2,mp4或者flv的值以及segs里对应k的值。
hd2、mp4、flv分别代表超清,高清以及标清。
2.拼接下载地址
最终形式:http://f.youku.com/player/getFlvPath/sid/00_00/st/$P0/fileid/$P1?k=$P2
$P0:如果选择mp4(即高清)则为mp4,其余为flv。
$P1:由解密函数getFileID()得到:(php版本)
function getFileIDMixString($seed)
{
$source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890";
$len = strlen($source);
for ($i = 0; $i < $len; $i++)
{
$seed = ($seed * 211 + 30031) % 65536;
$index = floor($seed / 65536 * strlen($source));
$mixed .= $source[$index];
$source = str_replace($source[$index],'',$source);
}
return $mixed;
}
function getFileID( $fileid, $seed )
{
$mixed = getFileIDMixString($seed);
$ids = explode("*",$fileid);
for ($i = 0; $i < count($ids) - 1; $i++)
{
$idx = $ids[$i];
$realId .= $mixed[$idx];
}
return $realId;
}
说明:此为解密的关键函数,不是我写的,完全是依葫芦画瓢按照下面的C#代码而来:(解密函数getFileID()C#版本)
public static String getFileID(String fileid, double seed)
{
String mixed = getFileIDMixString(seed);
String[] ids = fileid.Split('*');
StringBuilder realId = new StringBuilder();
int idx;
for (int i = 0; i < ids.Length - 1; i++)
{
idx = int.Parse(ids[i]);
realId.Append(mixed[idx]);
}
//Console.Write(realId.ToString());
return realId.ToString();
}
public static String getFileIDMixString(double seed)
{
StringBuilder mixed = new StringBuilder();
StringBuilder source = new StringBuilder("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890");
int index, len = source.Length;
for (int i = 0; i < len; ++i)
{
seed = (seed * 211 + 30031) % 65536;
index = (int)Math.Floor(seed / 65536 * source.Length);
mixed.Append(source[index]);
source.Remove(index, 1);
}
return mixed.ToString();
}
$P2:这个是segs里对应k的值。
如果选择flv(即标清)那么可以找到
"flv":[{"no":0,"size":"9932910","seconds":"277","k":"4be592cfae8eea21282826e4","k2":"167f8074bfb7bdca7"}]}
其中的4be592cfae8eea21282826e4就是$P2。
得到de $P0 、$P1和 $P2,拼接为视频地址:http://f.youku.com/player/getFlvPath/sid/00_00/st/$P0/fileid/$P1?k=$P2
如果视频有很多分段,变更一下$P2就行。
到这里就给个获取优酷地址的php源码:
源码[已经失效 ]:
提示: 此处内容需要评论本文 后才能查看.
调用说明:/XXX.php?id=优酷视频的ID?d=1
d=1表示标清(flv),2表示高清,3表超清.若不写?d=*则默认输出FLV的画质
有些细节处的修改没有写出来,不过php里都是搞好了的。
标清测试:
高清测试:
超清测试:
另附接口:
优酷外链 接口(wap地址),这个很简单:
视频:http://v.youku.com/v_show/id_XNjc1MDI4Nzg0.html
外链:
http://m.youku.com/wap/pvs?format=3gphd&id=XNjc1MDI4Nzg0
56网:
视频:ht tp://www.56.com/u30/v_MTA3MDk0Nzg3.html
外链:
http://vxml.56.com/html5/MTA3MDk0Nzg3/ (算的上高清)
http://vxml.56.com/html5/MTA3MDk0Nzg3/?src=3g&res=qvga (也就是手机上用的)
参考:http://blog.csdn.net/feige2008/article/details/8198434
作者:matrix
发布时间:2013-12-10
分类:Wordpress 兼容并蓄
邮件通知 ,每当有评论回复时系统会发送一封邮件告知被评论者。
WordPress 上免插件实现的方法:http://www.cmhello.com/wordpress-comments-email-code.html
我选的第一种:所有回复都发送邮件通知。
$message='发送的邮件内容以及样式代码';
上面为邮件内容。
样式如上图,把发送的邮件内容以及样式代码改为下面代码:
<TABLE cellSpacing="0" cellPadding="0" width="618" align="center">
<TBODY>
<TR>
<TD style="FONT-FAMILY: Tahoma,Helvetica,Arial,sans-serif; ">
<TABLE style="FONT-SIZE: 12px; MARGIN: 0px auto; OVERFLOW: hidden; HEIGHT: auto" cellSpacing="0"
cellPadding="0">
<TBODY>
<TR>
<h1 id="logo">'.get_option('blogname').'</h1>
</TR>
<TR>
<TD style="OVERFLOW: hidden; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: auto; BORDER-BOTTOM-STYLE: none">
<TABLE style="PADDING-RIGHT: 25px; MARGIN-TOP: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-LEFT: 27px; WIDTH: 588px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"
cellSpacing="0" cellPadding="0" border="0">
<TBODY>
<TR>
<TD style="BACKGROUND: url(http://a.xnimg.cn/imgpro/mail/edm-hot-bg-middleLeft.png); WIDTH: 17px"></TD>
<TD style="BACKGROUND: #fff">
<DIV><IMG
style="DISPLAY: block; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"
src="http://a.xnimg.cn/imgpro/mail/edm-hot-bg-middleTop.png"></DIV>
<TABLE style="MARGIN-TOP: 10px; MARGIN-LEFT: 13px; WIDTH: 500px" cellSpacing="0"
cellPadding="0" border="0">
<TBODY>
<TR>
<TD style="BACKGROUND: #fff" width="500"><H2
style="MARGIN-TOP: 10px; FONT-WEIGHT: bold; FONT-SIZE: 14px; MARGIN-LEFT: 0px">
'.trim(get_comment($parent_id)->comment_author).' , Hello!</H2>
<P style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN-LEFT: 0px; LINE-HEIGHT: 12px; PADDING-TOP: 0px">
您曾在《'.get_the_title($comment->comment_post_ID).'》留言:</P>
<p style="color: #777;border: 1px solid #DDD;padding: 5px 8px 5px 8px;background-color: #FCFCFC;border-radius: 3px 3px 3px 3px;font-size: 12px;line-height: 22px;font-family: Consolas,Courier,minispace,Lucida Console;">
'.trim(get_comment($parent_id)->comment_content).'
</p>
<P style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN-LEFT: 0px; LINE-HEIGHT: 12px; PADDING-TOP: 0px">
'.trim($comment->comment_author).'给您的回复:
</P>
<p style="color: #777;border: 1px solid #DDD;padding: 5px 8px 5px 8px;background-color: #FCFCFC;border-radius: 3px 3px 3px 3px;font-size: 12px;line-height: 22px;font-family: Consolas,Courier,minispace,Lucida Console;">
'.trim($comment->comment_content).'
</p>
您可以点击<a href="'.htmlspecialchars(get_comment_link($parent_id)) .'"
target="_blank">查看回复的完整內容</a>
</TR>
<TR>
<TD style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; PADDING-TOP: 15px"
colSpan="2"><IMG
style="DISPLAY: block; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"
src="http://a.xnimg.cn/imgpro/mail/edm-hot-line.png"></TD>
</TR>
</TBODY>
</TABLE>
<DIV><IMG
style="DISPLAY: block; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"
src="http://a.xnimg.cn/imgpro/mail/edm-hot-bg-middleTop.png"></DIV>
</TD>
<TD style="BACKGROUND: url(http://a.xnimg.cn/imgpro/mail/edm-hot-bg-middleRight.png); WIDTH: 17px"></TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
<TR>
<TD style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; OVERFLOW: hidden; WIDTH: 100%; COLOR: #999; LINE-HEIGHT: 14px; PADDING-TOP: 15px; TEXT-ALIGN: center">
这是系统发给<A style="COLOR: #336699; TEXT-DECORATION: none">'.trim(get_comment($parent_id)->comment_author).'</A>的讯息,请勿回复。
欢迎再度光临 <a href="'.get_option('home') .'">'.get_option('blogname') .'</a>
</TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
<style type="text/css">
body {
font-size: 14px;
font-family: arial, verdana, sans-serif;
line-height: 1.666;
padding: 0;
margin: 0;
overflow: auto;
white-space: normal;
word-wrap: break-word;
min-height: 100px
}
td, input, button, select, body {
font-family: Helvetica, \'Microsoft Yahei\', verdana
}
pre {
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word
}
th, td {
font-family: arial, verdana, sans-serif;
line-height: 1.666
}
img {
border: 0
}
header, footer, section, aside, article, nav, hgroup, figure, figcaption {
display: block
}
#logo {
text-align: center;
}
</style>
说明:
若出现问题,请尝试转换中文标点为英文的。
之前出现乱码,所以用的utf-8编码。
样式来自人人网邮件,
图片素材都打包了,方便以后的本地化:
下载:http://www.400gb.com/file/42884686
http://pan.baidu.com/s/1xjiZ7
参考:http://www.cxsir.com/wordpress-email-style.html
作者:matrix
发布时间:2013-12-07
分类:兼容并蓄 零零星星
推荐使用圣杯Charles
垮多平台。可实现数据拦截 并发请求 网速模拟测试等等 -- 201810
https://www.charlesproxy.com/
windows fiddler也可推荐。
平时东看西看的了解到什么抓包 的,完全没玩过~
留个备份,以后会用到。
Charles
圣杯Charles 毫无疑问 TOP1.
官网最新版:https://www.charlesproxy.com/download/
4.0.1版本:https://www.charlesproxy.com/assets/release/4.0.1/charles-proxy-4.0.1-win64.msi
4.0.1 破解jar包:charles.jar
替换掉原文件夹里的charles.jar
Mac: /Applications/Charles.app/Contents/Java/charles.jar
Windows: C:\Program Files\Charles\lib\charles.jar
Smsniff2.00简体中文版
来自:http://www.ifoouu.com/note/75.html
下载:http://pan.baidu.com/s/1w2MJK
说明:smsniff 网络抓包工具可以通过你的网络适配器捕获TCP/IP数据包,并查看捕获客户端和服务器之间的数据序列的会话。
HTTP数据抓包(Fiddler2) V2.2.0 绿色中文版
来自:http://www.cr173.com/soft/42248.html
下载:http://pan.baidu.com/s/1Aaafx
说明:通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,能够记录所有客户端和服务器间的http请求,支持监视、设置断点、甚至修改输入输出数据等功能。
WSExplorer 进程抓包工具1.3绿色中文版
下载:
http://www.cr173.com/soft/17693.html
http://pan.baidu.com/s/1sjnnPYd
这软件 也不错,跟Smsniff差不多,但是能够抓取相关进程的网络交互数据。
作者:matrix
发布时间:2013-12-06
分类:Wordpress 兼容并蓄
这个主题 是之前提到过的NGRO主题 ,很好看~ freshwp
在NGRO.ORG上看到,绝对是最喜欢的主题,没有之一。可惜NGRO.ORG没有公开,再加上是typecho 的更抽了~
不过就算是typecho的,我也愿意为了这主题换博客程序。据说typecho还是超轻型的,比起WordPress 好得多。嗯 之后也就到处找此款主题的相关信息,结果是弄到了别人扒下来的皮。不错 很感谢sunhua.me。地址:诡异:TEer扒TE皮NGRO
这主题是由typecho默认主题改过来的,变化很大。想到typecho的轻巧,WordPress 又舍不得某些功能 ,纠结。最后妥协于wp的某个JB功能,去找各类关于typecho主题移植到wordpress的方法,结果都是wp到tc的 ,真是恼火。庆幸我的运气不是一般的好,看到winysky.com的 wordpress版本的typecho皮肤 哈哈 有救了。那扒的皮就是源于那tc皮肤,打开一看的确一样的结构设计。这下简单多了,覆盖style,修改简单的css、php代码。一个具有基本功能的wp主题就出现了,哎 我真人才啊,这都鼓捣的出来。还TMD不是学计算机的 ➡ 搞的建筑工程。
这下就整理完善需要的功能到fresh就OK啦,直到这时间才发文。
freshwp:清新-wp
之前用的是自说me话的增强版philna主题(备份下载:http://www.400gb.com/file/40436320 )。
后来换的BLUE2.0(七彩之家修改于inv的cms主题),这个相对于以前来还好些。(备份下载:http://www.400gb.com/file/40816608 )
这回来就换了这个,小清新 大爱~ 😉
作者:matrix
发布时间:2013-12-04
分类:兼容并蓄 零零星星
测试地址:
采用最新的本人无数据库缓存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=×tamp=
看到那几个参数,笑了~
之后就是好几天的编写、测试下载,期间有看书整了个最基本的类 。 额 面向对象 。
源码 就暂时为空。
提醒的是度娘这回要检测referer,跟360云盘一样的只能外链下载无法外链播放。自己试试就晓得~
所以我把link.hhtjim.com页面的那个下载按钮去掉了 ,TMD浏览器发送当前URl的referer是没法改的。无语啊~
先放个测试期间最早版本的cookies缓存源码:
<?php
error_reporting(0);//禁用错误报告
function curl_get($url,$post=false,$carry_header=true,$REFERER_=false,$useragent=false,$add_arry_header=null){
$ch=curl_init($url);
if($carry_header){
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'));
}
if($add_arry_header){
curl_setopt($ch, CURLOPT_HTTPHEADER, $add_arry_header);
}
if ($post) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
if($REFERER_){
curl_setopt($ch, CURLOPT_REFERER,$REFERER_);
}
if($useragent){
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$get_url = curl_exec($ch);
curl_close($ch);
return $get_url;
}
preg_match('|u=(.*)|',$_SERVER["REQUEST_URI"],$bai_res);
$bai_=curl_get($bai_res[1]);
preg_match('|shareid=\"(\d+)\"\?\"\1\":\"\";FileUtils\.uk=\"(\d+)\"\?\"\2\"|',$bai_, $ui);
preg_match('|fs_id\D+(\d+)\D+app_id|',$bai_,$fid);
preg_match('|timestamp=\"(\d+)\"|',$bai_,$time);
preg_match('|downloadsign=\"(\w+)\"|',$bai_,$login);
$diz="http://pan.baidu.com/share/download?bdstoken=null&uk=$ui[2]&shareid=$ui[1]&fid_list=[$fid[1]]&sign=$login[1]×tamp=$time[1]&bdstoken=null&channel=chunlei&clienttype=0&web=1";
$header[]= 'Cookie: BAIDUID=*****'; //请使用自个儿的百度ID,度娘会检查这个的cookies
if(isset($_COOKIE["du$ui[2]-$ui[1]"])){
//header( "Location: $_COOKIE["du$ui[2]-$ui[1]"]");
echo $_COOKIE["du$ui[2]-$ui[1]"];
}else{
$dl=curl_get($diz,null,$header,$bai_res[1],null,$header);
$obj=json_decode($dl,true);
if($obj['errno']!='0'){
//header( "Location: $bai_res[1]");
echo $bai_res[1];
}
setcookie("du$ui[2]-$ui[1]",$obj['dlink'],time()+3600*24);
//header( "Location: $obj['dlink']");
echo $obj['dlink'];
}
?>
这个能不能用就靠你怎么使了,仅是原理。
如果你即刻需要外链,请到http://link.hhtjim.com 玩玩~
祝你好运!
博客也快一个月都没有更新了,不码点字不好~
1 2 3 4 5 6 7 8 ... 26