科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道BSP防范Trackback垃圾的一种方法

BSP防范Trackback垃圾的一种方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Trackback垃圾产生的重要原因是大量站长在流量利益的驱使下的“变态”行为,其中也包括大量国外的劣质SEO

作者:曾登高 来源:CSDN 2008年1月12日

关键字: 方法 垃圾 Trackback 防范 BSP

  • 评论
  • 分享微博
  • 分享邮件

解决思路

Trackback垃圾产生的重要原因是大量站长在流量利益的驱使下的“变态”行为,其中也包括大量国外的劣质SEO。我们只有从对这些行为分析的基础上来解决Trackback垃圾问题。

我们知道,Trackback垃圾发送者有2个目的:一是希望用户通过连接访问他们的网站(比如一些美女色情站),二是希望搜索引擎加强他们网站的排名和收录。因此,他们通常都有Trackback回溯地址。我们通过这些地址的分析可以找出一些有价值的规律。然后基于这个规律上去清理Trackback垃圾。

收集Trackback信息

CSDN Blog的Trackback保存在一个名叫blog_feedback的数据表中,我们先尝试对Trackback回溯地址(数据库字段DisplayUrl)进行提取主域名的分析。做法可以直接在这个表上新建一个DisplayUrlRoot字段进行保存。

update blog_feedback set DisplayUrlRoot=dbo.getUrlRoot(DisplayUrl) where feedbacktype=2

其中getUrlRoot是一个用户自定义函数,获取回溯地址的主域名

CREATE FUNCTION [dbo].[getUrlRoot]
(@sURL nvarchar(256))
RETURNS nvarchar(256)
AS
BEGIN
declare @m_f int
declare @m_len int
declare @ret nvarchar(256)
set @ret=''

select @m_f = PATINDEX('%//%', @sURL)
if (@m_f = 6) -- Is HTTP URL Format
begin
select @m_len = LEN(@sURL)
select @m_f = PATINDEX('%/%', SUBSTRING(@sURL, 8, @m_len-7))
if (@m_f != 0)
begin
select @ret = SUBSTRING(@sURL, 8, @m_f-1)
end
else --没有发现'/'
begin
select @ret = SUBSTRING(@sURL, 8, @m_len-7)
end
select @m_f = PATINDEX('%.%', @ret)
select @ret = SUBSTRING(@ret, @m_f+1, LEN(@ret)-@m_f)
end
return @ret
END

这样我们对每个Trackback就获取了一个回溯地址的主域名,下面的分析基于这个新字段进行统计分析。所以之前应该为这个字段加上一个索引。

统计Trackback信息

在SQL查询分析器中执行下面语句

select DisplayUrlRoot, count(ID) from blog_feedback where DisplayUrlRoot is not null
group by DisplayUrlRoot having(count(ID))>50 order by count(ID) desc

我们可以看到所有Trackback回溯地址的主域名有50个以上的域名列表,在CSDN Blog的排名前5个是

域名:alice.it   条目数:39337
域名:blogspot.com 条目数:14447
域名:editme.com 条目数:8439
域名:aol.com 条目数:7043
域名:psl.lt  条目数:6907

经过检查,这里全是Trackback垃圾。

Trackback清理方法

在CSDN Blog,条目数大于50的Trackback回溯地址的主域名有367个,大量国外不知名的域名我们不需要检查,只需要重点筛选一些知名和相关网站即可。我们发现,对于CSDN Blog的Trackback而言,只有来自以下3个域名的Trackback是全部“干净的”:csdn.net、cnblogs.com、donews.net,另外,msn.com有一半左右是“干净的”。

现在我们开始清理了,执行下面这条语句:

delete blog_feedback where DisplayUrlRoot in
(select DisplayUrlRoot from blog_feedback where DisplayUrlRoot is not null and
DisplayUrlRoot not in ('csdn.net', 'donews.net', 'cnblogs.com', 'msn.com')
group by DisplayUrlRoot having(count(ID))>50)

执行后,近24万多条Trackback垃圾马上消失。仅留下了16394条有用的信息。

那些知名网站Trackback垃圾多?

以下纯粹是CSDN Blog统计分析的结果,仅说明某些人借助一些知名网站进行垃圾传播:

域名:blogspot.com  条目数:14447
域名:aol.com  条目数:7043
域名:blog.hexun.com  条目数:6621
域名:blog.ccidnet.com  条目数:4980
域名:netscape.com  条目数:1378
域名:baidu.com  条目数:804
域名:a8.com  条目数:704
域名:blog.sohu.com  条目数:344
域名:china.alibaba.com  条目数:243

结语

本文基于对Trackback回溯地址主域名的统计分析的基础上给出了一种大批量消除Trackback垃圾的方法,值得大型BSP借鉴。

Update:
前面提到,msn.com有一半左右是“干净的”,如何清理呢?我也发现,99.9%的正常从msn.com过来的Trackback没有标题,而垃圾Trackback是全部有标题,这是一个有用的线索。执行:

delete blog_feedback where DisplayUrlRoot = 'msn.com' and title<>'' and ID not in (有限的几个有用的ID)

可以清理这些垃圾。

 


 

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章