PHP获取URL跳转后的最终地址

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

仅是获得响应头Location的最终地址

$url='http://189.io/G3qrdn';
echo get_jump_url($url);
function get_jump_url($url) {
    $url = str_replace(' ','',$url);
    do {//do.while循环:先执行一次,判断后再是否循环
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_HEADER, 1);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        $header = curl_exec($curl);
        curl_close($curl);
        preg_match('|Location:\s(.*?)\s|',$header,$tdl);
        if(strpos($header,"Location:")){
            $url=$tdl ? $tdl[1] :  null ;
        }
        else{
            return $url.'';
            break;
        }
    }while(true);
}

参考:http://bbs.csdn.net/topics/390349430
附curl常量:

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//允许链接自动跳转
curl_setopt($curl, CURLOPT_MAXREDIRS, 3);//限定CURLOPT_FOLLOWLOCATION递归返回的数量
CURLOPT_AUTOREFERER :curl 会自动添加 Referer header 在每一个跳转链接,也就是一跟到底。

这样也就避免上面代码的do while循环。

建议使用get_headers()函数解决

参考:http://upc.gg.blog.163.com/blog/static/297984982013123970455/

更新微云网盘解析规则

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

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

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

微云网盘

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

模拟手机浏览器登陆

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

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

WordPress feed地址输出见红

作者:matrix 发布时间:2013-12-26 分类:Wordpress

rss输出错误一般都是由于主题导致的,自己DIY主题就很容易出现此类问题(修改freshwp主题时发现)

以前打开/feed地址经常看到 Below is a rendering of the page up to the ffirst error.都没管。
RSS输出错误

解决办法还是有的,不过造成此类的原因很多,仅仅是其中之一。

解决:删除空白行

使用Notepad++打开主题内的所有php文件,Ctrl+H替换(使用正则匹配)^\s*\n 为空。点击在所有打开文件中替换

之后也就把所有^\s*\n匹配到的空白行删除了。

说明:

正则表达式:^\s*\n表示匹配所有空白行,包括有空格的行。

参考:http://xiaoke.name/125.html

http://zhidao.baidu.com/question/270423631.html

快速提取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/

修改WordPress邮件通知样式

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

WSExplorer抓包工具

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

更换主题-freshwp_绝对的小清新

作者:matrix 发布时间:2013-12-06 分类:Wordpress 兼容并蓄

freshwp

这个主题是之前提到过的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 分类:兼容并蓄 零零星星

测试地址:

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玩玩~

祝你好运!

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