更新微云网盘解析规则

作者:matrix 发布时间:2013-12-28 分类:零零星星

26号发现以前的微云网盘外链失效,微云的菊花被捅的也差不多了。

下载大于100MB的文件要求输入验证码。

微云网盘

26号,使用手机浏览器登陆都不能下载。今天一看貌似又好了

模拟手机浏览器登陆

上面的情况,以前的肯定没法了。手动下载,尝试用Fiddler抓取各类响应头,或者用火狐的firebug插件查看网络。

看到每次下载都是请求的http://web.cgi.weiyun.com/share_dl.fcg这个地址。 阅读剩余部分 »

快速提取Windows各类弹窗信息

作者:matrix 发布时间:2013-12-20 分类:零零星星

弹窗信息

或许你遇到ERROR弹窗信息时都会照着上面提示码字百度解决办法~

实际上windows早就给你想好了:  直接按Ctrl+C就行!

之后去粘贴就有弹窗的内容了,很方便。

玩电脑也算是有几年了吧,悲剧的是 现在才晓得~

解决各类弹窗信息提取问题,很屌 很强大!

chrome 弹窗信息

 

chrome 弹窗信息无压力~ 直接ctrl+c

普通消息框一样的。

普通消息框一样的。

离开这个页面,您所做的更改将丢失。确定要离开此页吗?
[Window Title]
记事本

[Main Instruction]
是否将更改保存到 C:\Users\Administrator\Desktop\新建文本文档.txt?

[保存(S)] [不保存(N)] [取消]

参考:http://www.54itmi.com/err-msg-copy/

网络抓包工具

作者: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

WSExplorer抓包工具

软件也不错,跟Smsniff差不多,但是能够抓取相关进程的网络交互数据。

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

作者:matrix 发布时间:2013-12-04 分类:兼容并蓄 零零星星

测试地址:

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缓存源码:

<?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]&timestamp=$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玩玩~

祝你好运!

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

php函数笔记

作者:matrix 发布时间:2013-11-03 分类:零零星星

图片4788-php函数笔记

TIME: 20190120 工作几年回过头来发现最近真理这篇post都是17年4月份了。看来工作之后真是进步或许没时间亦或变懒,不为简单函数做笔记。
大多都外链工具所用到的,整理整理,以便后用。

file_get_contents(函数把整个文件读入一个字符串中。

 htmlspecialchars() 函数将字符转换为 HTML 实体。

isset($ab)判断$ab是否存在

error_reporting(0);//禁用错误报告

使用@符号也可以

explode("/",$str)把字符串以/分割为数组

preg_match_all ()用正则匹配字符串并保存到数组中

preg_match_all ("/share_uk=(.*?)share/",$ukidConnect,$ukidList, PREG_PATTERN_ORDER);

//使用preg_match_all正则匹配数据并保存到$titleList数组中

$ukidList[0][1]表示第1数组【第一个括弧的值,如.*?】匹配到的字符串

如果preg_match_all换成preg_match,$ukidList[1]也表示第1数组【第一个括弧的值,如.*?】匹配到的字符串

废弃的eregi函数同理,传说使用preg函数更高效

strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。

strpos() 返回字符串在另一个字符串中第一次出现的位置。

strpos 区别大小写strpos查找成功后则是返回的是位置。因为位置有可能是0,所以判断查找失败使用===false更合适。

substr_count()函数计算子串在字符串中出现的次数。

strlen() 函数返回字符串的长度。

 substr() 取固定长度的字符串

$zhuaqian=strpos($titleList[0][0],"title>");
$zhuahou=strpos($titleList[0][0],"_免费高速下载|百度云 网盘-分享无限制");
$xinzhi=substr($titleList[0][0],6,$zhuahou-6); //取适当的两个位置中间的值也就是文件名

$_SERVER["REQUEST_URI"];  php自带的函数

取得当前url的页面url。

http://127.0.0.1/xxx.php?st=http://hhtjim.com

返回:/xxx.php?st=http://hhtjim.com

$NOWstr =  'http://' .$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];//由于$_GET['url']取url不完整
$NEWstr=explode('?url=',$NOWstr);
$quurl = $NEWstr[1];

curl()函数

作用大大的有。

示例代码:


function curl_get($url,$post=false,$carry_ua=true){ $ch=curl_init($url); if($carry_ua){ 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 ($post) { curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $get_url = curl_exec($ch); curl_close($ch); return $get_url; }

不懂,再保留另外的

$curlPost=’http://songtaste.com/time.php’; 
$ch = curl_init();//初始化curl    
curl_setopt($ch,CURLOPT_URL, $url);//提交到指定网页    
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header    
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上    
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式    
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);//运行curl    
curl_close($ch);
print_r($data);//输出结果  

模拟POST提交数据

 $post_data = array('nid' => '13714766852756201', 'shorturl' => 'QeEWZNzPansuQ');
$url='http://ajy8hpcasy.l17.yunpan.cn/share/downloadfile/';
$_REFERER='http://ajy8hpcasy.l17.yunpan.cn/lk/QeEWZNzPansuQ';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_REFERER,$_REFERER);
ob_start();
curl_exec($ch);
$result = ob_get_contents() ;
ob_end_clean(); 
echo $result;

set_time_limit(0);//为0时:允许脚本运行的时间无上限。不设置此函数的话默认为30s

str_replace()使用一个字符串替换字符串中的另一些字符。

header()向客户端浏览器发送 HTTP 。

header("location: http://hhtjim.com");//跳转到http://hhtjim.com

list()  函数用数组中的元素为一组变量赋值。实际上是一种语言结构,不是函数。

array_slice() 函数在数组中根据条件取出一段值,并返回。

list($shareid, $uk) = array_slice($res, 1, 2);

//数组中有shareid, uk元素,让元素名最为变量名字。

//$res为总的数组,1为规定取出元素的开始位置。2为需要返回的数组数量。

define() 函数定义一个常量

define("GREETING","Hello world!");

//常量名为GREETING,值为"Hello world!

php中?(问号)和:(冒号)的作用:精简的if语句

条件表达式e1?e2:e3,若e1为真(非0),则此表达式的值为e2的值;若为假,则表达式的值为e3

例如:

preg_match('|Location: (.+)\r|', $src, $res);
$songurl = $res ? $res[1] : exit(" error!");

implode() 函数把数组元素组合为一个字符串。

json_decode()函数:接受一个 JSON 格式的字符串并且把它转换为 PHP 变量

示例:

$rt='{"errno":0,"errmsg":"\u64cd\u4f5c\u6210\u529f","data":{"downloadurl":"http:\/\/wsdl25.yunpan.cn\/share.php?method=Share.download&fhash=119f736a936d62396d7dd71ff8fb7d187d69d3d9&xqid=23620387&fname=%E8%AF%B4%E6%98%8E.doc&fsize=211968&nid=13754589643979953&cqid=157ddad976b9aa811591ed43134891f7&st=48ea3770079bce5360f952cff1dc9d29&e=1382784599&dt=25.1291649b2f9ed61380291c5c0d711ca9","params":[]}}';
$obj = json_decode($rt);
$dll=$obj->data->downloadurl;
echo $dll;

结果显示:http://wsdl25.yunpan.cn/share.php?method=Share.download&fhash=119f736a936d62396d7dd71ff8fb7d187d69d3d9&xqid=23620387&fname=%E8%AF%B4%E6%98%8E.doc&fsize=211968&nid=13754589643979953&cqid=157ddad976b9aa811591ed43134891f7&st=48ea3770079bce5360f952cff1dc9d29&e=1382784599&dt=25.1291649b2f9ed61380291c5c0d711ca9

示例二:

json数据:

{
"songs": [{
"score": 100,
"copyrightId": 0,
"mvid": 0,
"mp3Url": "http://m1.music.126.net/fG44YGce-id8VZ9LjQIPpQ==/1069824813834035.mp3"
}],
"code": 200
}

php处理:

$eo='上面的json数据';
$obj=json_decode($eo,true);
echo $obj['songs'][0]['mp3Url'];

结果返回:
h t t p : / /m1.music.126.net/fG44YGce-id8VZ9LjQIPpQ==/1069824813834035.mp3

get_headers()函数获取服务器响应 HTTP 请求所发送的所有标头

parse_str() 函数把URL参数解析到到变量中。

 array_unique() 函数移除数组中的重复的值

$b = &$a; //变量前&  表示$b 和 $a 引用了同一个变量

parse_url()解析 URL并返回组成部分为数组内容

strip_tags() 去除 HTML、XML 以及 PHP 的标签。

extract() 函数 把数组中的键名设置为变量,其键值为变量的值。

对于数组中的每个元素,键名用于变量名,键值用于变量值。

substr_replace() 函数把字符串的一部分替换为另一个字符串。

substr_replace($P,$v,9,1);//(替换第10位的数字为$p)

<<<  运算符,将由自定义分界符间的内容视为字符串,可对其间的变量做处理

echo <<<tem
<script>alert("输入的留言内容太长!");history.go(-1);</script>
tem;

tem是任意字符,<<<后的tem标记着开始。必须以 tem; 结尾,另起一行顶格(前面无空格)书写,否则会报错。

echo <<<'tem'
$a str
tem;

添加单引号 就不会解析里面的变量

base_convert() 函数在任意进制之间转换数字。

is_numeric()函数检测变量是否为数字或数字字符串

urlencode()返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数.

rawurlencode()功能和urlencode基本一样,采用的是RFC1738编码,因此空格会编码为%20

sprintf() 函数把格式化的字符串写入一个变量中。

in_array()函数在数组中搜索给定的值。

array_search()函数在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。

array_key_exists() 函数判断某个数组中是否存在指定的键名

md5(arg[,arg])

函数计算字符串的 MD5 散列,第二的参数规定十六进制或二进制输出格式。

PHP_EOL表示换行符

str_split() 函数把字符串逐字分割到数组中。

split()用正则表达式将字符串分割到数组中

preg_split()通过一个正则表达式分隔字符串

http_build_query()生成 URL-encode 之后的请求字符串

quotemeta() 函数在字符串中某些预定义的字符前添加反斜杠。

mt_rand(A,B) 函数返回A到B的随机整数

compact

创建一个包含变量名和它们的值的数组:

$firstname = "Bill";
$lastname = "Gates";
$age = "60";

$result = compact("firstname", "lastname", "age");

print_r($result);

extract() 正好相反
陆续添加整理。。。

php获取xml数据

作者:matrix 发布时间:2013-10-27 分类:零零星星

调用某些api后返回的数据可能会是xml格式,这就需要提取相关数据。

如果了解正则匹配的话可以用preg_match()来提取,最好还是用php内置的专用函数来处理xml。

 

代码:

$xml = new DOMDocument(); // 首先要建一个DOMDocument对象    
$xml->load('http://api.189.cn/EMP/shorturl/long2short?access_token=76327c4e405b725021640fd629bfc3511382853781284&app_id=120032470000032374&longurl=hhtjim.COM'); // 加载Xml文件     
$postDom = $xml->getElementsByTagName("shorturl")->item(0)->nodeValue;    
echo $postDom;  

 

说明:

第3行"shorturl"为读取的标签名,运行结果将显示http://189.io/ReRTnn

第2行是读取xml文件:


This XML file does not appear to have any style information associated with it. The document tree is shown below. <result> <res_code>0</res_code> <res_message>短地址生成成功。</res_message> <shorturl>http://189.io/ReRTnn</shorturl> </result>

参考:http://developer.51cto.com/art/200912/166247.htm


貌似这个代码也行

$xml = new DOMDocument();  
$xml->load('http://api.189.cn/EMP/shorturl/long2short?access_token=76327c4e405b725021640fd629bfc3511382853781284&app_id=120032470000032374&longurl=hhtjim.COM'); // 加载Xml文件     
foreach($xml->getElementsByTagName('shorturl') as $shorturl);
$value = $shorturl->firstChild->nodeValue;   
echo $value;  

新浪乐库php解析源码

作者:matrix 发布时间:2013-10-26 分类:零零星星

demo:http://link.hhtjim.com

外链测试:

http://music.sina.com.cn/yueku/i/2850351.html 阅读剩余部分 »

微云网盘外链php源码

作者:matrix 发布时间:2013-10-26 分类:兼容并蓄 零零星星

微云

微云网盘的10TB空间也要全部利用起来。

申明:此页面的源码已失效,走这里查看最新>>微云网盘php解析源码_更新

外链转换工具:http://link.hhtjim.com/

代码来自破博客

<?php  
//提取微云分享地址  
preg_match('|\/.+\/(\w+)|', $_SERVER['REQUEST_URI'], $res);  
$key = $res ? $res[1] : exit("weiyun URL error!");  
$url = $referer = "http://share.weiyun.com/$key";  
$useragent = "BlackBerry/3.6.0";  

//匹配出下载地址  
$curl = curl_init($url);  
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($curl, CURLOPT_USERAGENT, $useragent);  
curl_setopt($curl, CURLOPT_TIMEOUT, 10);  
$src = curl_exec($curl);  
curl_close($curl);  
preg_match('|http://.+sharekey[^"]+|', $src, $res);  
$url = $res ? $res[0] : exit("weiyun URL error! Not find weiyun code!"); 

//伪造referer,获取返回的响应头信息 
$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_HEADER, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_REFERER, $referer);  
curl_setopt($curl, CURLOPT_USERAGENT, $useragent); 
curl_setopt($curl, CURLOPT_TIMEOUT, 10); 
$src = curl_exec($curl); 
curl_close($curl); 

//从响应信息头匹配出真实的文件地址并下载 
preg_match('|Location: (.+)\r|', $src, $res); 
$songurl = $res ? $res[1] : exit("Can not get WeiYun Download url!"); 
header("Location: $songurl");  
//echo $songurl;  
?>  

这种方法该不错滴。

使用示例:http://XXX.php/微云URL

http://share.weiyun.com/b500a423288e8d0095d49657fe21438b 阅读剩余部分 »