当前位置:首页 > 原创作品 > emlog引用改造让你免受垃圾引用的干扰

emlog引用改造让你免受垃圾引用的干扰

作者:星之宇 ┊ 时间:2013-4-29 19:23 ┊ 分类: 原创作品 ┊ 阅读:6558 ┊ 评论:0

话说emlog的程序很受垃圾评论的轰炸的,默认程序只要开启引用功能就可以直接引用,虽然5个小时只能受同一个IP(或者同一个域名一次引用),但是很多更改掉IP和网址,就又可以直接引用了。默认程序除了禁用引用外,无其他方法,官方也没有提供任何解决方法。

为了让我免受垃圾引用的骚扰,我就自己改造了emlog程序。下面来说说我的改造之路。

比如我一篇文章的引用地址:http://www.myxzy.com/tb.php?sc=1dce9f&id=392

sc=后面的是6位是当前服务器的GMT/UTC 日期/时间,取年月日时的md5的前6位。由于服务器的时间一般正确的,导致每个emlog博客的sc值在同一个时段是相同的。

id=后面的是文章的ID。emlog博客一般多是从1开始的,用一个循环就可以直接读取所有的文章引用地址。


发送垃圾Trackback,往往有如下手段:

1、自动猜ID。像emlog博客:http://hostname/tb.php?sc=1dce9f&id=xx。这样发送垃圾程序就只需知道你一个引用地址,用一个循环,把ID号替换掉,就能在所有的文章中添加垃圾信息了。

2、像搜索引擎那样分析每个页面,如果你把引用地址直接显示在博客上,就可以抓取引用地址后疯狂添加垃圾信息。


第一种方法:修改tb.php文件名。

1、重命名根目录下的tb.php,比如tb1.php;

2、修改include\controller文件夹下的log_controller.php文件

大概在92行,有个tb.php,改为tb1.php保存就可以了(可以用搜索找)。

PS:通过这个方法可以禁止一些通过程序搜索使用emlog的博客,然后通过通用引用地址添加垃圾引用,防不了上面的2个手段。

效果:能减少一部分垃圾引用,时间越长越不明显。


第二种方法:修改SC后面的值。

这个要修改2个文件tb.php(第23行)和include\model文件夹下的log_model.php(第116行)。这2个如果需要改,那么改的时候注意了,这2个获取数值是一样的。

下面的只是演示,具体根据附1中说明,采用组合的方式去改。

tb.php:	
	if($sc != substr(md5(gmdate('YndG')), 0, 6)){
//在gmdate后面添加一段字符串,导致MD5和大家的不同
	if($sc != substr(md5(gmdate('YndG').'abcdef'), 0, 6)){

log_model.php:
	'tbscode' => substr(md5(gmdate('YndG')), 0, 6),
//在gmdate后面添加和上面相同的字符串
	'tbscode' => substr(md5(gmdate('YndG').'abcdef'), 0, 6),

附1:可以改掉gmdate('YndG'),改成获取文章时间的值,文章ID,自定义字符串以及gmdate('YndG')的多种组合。

PS:这样可以使每篇文章的的sc不同,而且每个小时多有变化,由于有sc和id2个,相当于帐号密码循环的数据量也大,可以防止自动猜ID的那种情况,但是不能防止搜索你网站每个页面采集到引用地址。

效果:能减少大部分垃圾引用,防止时间一长没有效果。


第三种方法:引用地址通过javascript来显示。

由于页面不直接显示引用地址,所以通过软件搜索也采集不到引用地址。

<a href="javascript:showTb(文章id);">显示本文的引用地址</a>
<div id="tb_url"></div>

<script type="text/javascript">
 function showTb(id) {
    var u1 = '123456';
    document.getElementById('tb_url').innerHTML = 'http://yourblogurl/tb.php?sc=' + u1 + '&id=' + id;
}
</script>
附2:从php传递文章时间的值,文章ID给javascript,javascript获取UTC时间,加入自定义字符串,Md5后再截取前面6位,做成js文件进行适当的加密,通过前台的网页点击显示地址。

效果:配合第二种方法使用,除非手动获取链接和破解js加密,不然无法得到引用地址,应该能防绝大部分垃圾引用。


具体说说emlog的修改方法(默认模版和默认emlog程序):

注意:这个是HACK程序有一定的危险,修改前先备份文件。

下载地址:百度网盘(所有的文件)

JsPacker.exe一个简单js压缩工具,杀毒软件可能会误报。

1、修改SC值:

tb.php第23行:
if($sc != substr(md5(gmdate('YndG')), 0, 6)){
//GMT/UTC时间年月日时,文章ID,自定义字符串'test'
if($sc != substr(md5(gmdate('YndG').$logid.'test'), 0, 6)){

2、javascript计算sc值和显示整个连接:

上面PHP用到了md5,这里javascript计算sc也要用到md5.js的库文件。hex_md5(md5.js)用于md5计算,TbSC(tbsc.js)用于计算sc的值,showTb(showtb.js)用于显示引用链接。你可以合并js文件并加密,这里保存为showtrackback.js。

function TbSC(id){
var date=new Date();
var str='test';
var date_year=date_date.getUTCFullYear();
var date_month=date_date.getUTCMonth()+1;
var date_day=(date_date.getUTCDate())>9?(date_date.getUTCDate()):"0"+(date_date.getUTCDate());
var date_hh=date_date.getUTCHours();
var date=date_year.toString()+date_month.toString()+date_day.toString()+date_hh.toString()+id.toString()+str;
date = hex_md5(date);
date = date.substr(0, 6);
return date;
}
function showTb(tbid) {
	var data = TbSC(tbid);
	var tburl= 'http://' + window.location.host + '/tb.php?sc=' + data + '&id=' + tbid;
        document.getElementById('tbinput').value = tburl;
}

3、模版文件夹,模版文件module.php,以及修改输出文章文件echo_log.php。

module.php:
第295行:
function blog_trackback($tb, $tb_url, $allow_tb){
//添加个文章id
function blog_trackback($tb,$logid, $tb_url, $allow_tb){

第298行:
	<p>引用地址: <input type="text" style="width:350px" class="input" value="<?php echo $tb_url; ?>">
//修改直接输出引用地址的。
	<p>引用地址: <input type="text" style="width:350px" class="input" id="tbinput" value="点击【显示】显示引用地址"><a href="javascript:showTb(<?php echo $logid;?>)">显示</a>


echo_log.php:
第17行:
	<?php blog_trackback($tb, $tb_url, $allow_tb); ?>
//修改为
	<?php blog_trackback($tb,$logid, $tb_url, $allow_tb); ?>


4、模版头部文件header.php,引入showtrackback.js。

测试说明(演示你看看我自己的站就好了):

点击查看原图

目前有 0 条评论