网站外链改造记录
早上的时候查了下网站的权重,感觉关键词流出还是挺严重的,虽然网站没什么人访问,但是折腾折腾总是好的。
思路不外乎就是单独设置一个页面,然后URL传参 base64 加密,早上抽空构思了下,中午利用吃饭时间改造。
本外链改造教程适用于typecho,wordpress 同理,所以又名:typecho(wordpress)外链改造记录。
原代码是这样的:
$content = preg_replace( '#<a(.*?) href="([^"]*/)?(([^"/]*)\.[^"]*)"(.*?)>#','<a$1 href="$2$3""$5 target="_blank">', $content );
想着直接将$2$3 base64_encode 就行,但是发现这样子会将 ``$2$3 当作字符解析了。
然后谷歌了下,没什么干活。顺道发现一个有趣的事情,在逼呼上面发现和我想的一样的同学。
原文:如何使用preg_replace正则替换的同时对匹配的内容进行base64_encode()加密?
链接:https://www.zhihu.com/question/266234806
最后发现0回答,无奈只有自己翻手册了,发现了preg_replace_callback 函数。
preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )
这个函数的行为除了 可以指定一个 callback 替代 replacement 进行替换 字符串的计算,其他方面等同于 preg_replace()。
具体请看这里:http://php.net/manual/zh/function.preg-replace-callback.php
改造后的图片见下图。
在需要改造的地方加入这段代码,代码的意思是,extLinks函数引用forReplace函数,利用正则匹配,将匹配结果base64加密。
细心的同学可能会发现在forReplace函数里面 a 标签跳转到go.html页面了。
go.html 这个页面就是流出页,Typecho 主题改造也很简单,加一个自定义页面,然后加入接收$_GET['u']参数,然后解析参数,
最后js跳转。具体HTML 代码请看本站外链页。
本站采用「署名 4.0 国际(CC BY 4.0)」创作共享协议,转载请注明本文出处及链接。