原文 https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/du
SEO的两大类别
- whitehat SEO
- blackhat SEO
白帽SEO的常用方法
更具体的方法应参考各搜索引擎提供的参考指南(白皮书)。
- 优化网站结构
- 提供导航条
- 一定程度上避免内容重复
- 避免内容的频繁更新
- 提升搜索相关度
- 在 html metadata 或者 title 中 提供更贴切的描述性的关键词。
黑帽SEO的常用方法
- 关键词堆砌
- 重复关键词,堆砌流行词(trending keywords),重复近义词(spinning)。
- 在知名论坛/博客发帖指向被推广网站,比如工具Xrumer。
- Link Farm 链接农场,那么该如何积累大量流入链接(inbound link)呢
- 入侵网站,并更改页面内容,留下暗链。建立SEO Botnet,站群管理(芭奇站群)。
- 外链交换/交易 sape.ru/warriorforum.com。
- PBN(Private Blog Network) 购买高PR过期域名,构建链接网络。
- 蜘蛛池
- 障眼法(Cloaking)
- 根据 UA, referer, HTTP头, IP等判断是搜索引擎还是用户浏览器,给予他们不同的返回结果。多用于恶意软件推广。
- 搭便车消息
- 借助高PR值网站的搜索栏(Amazon,优酷等)推广信息
蜘蛛池(Spider Pool)详解
以超级蜘蛛池为例
http://www.zhizhuche.com/index.html
困住搜索引擎蜘蛛的方法
关键是构建循环的链接网络(link loop)。
SEO泛站域名的特征
- 使用了大量子域名(节约成本)
- 网页内容动态生成,且每次访问均不同。
- 可以构成一个 强联通的图, 从图中任意一个node开始,都存在一条路径,到达图中任意的另一个node。
蜘蛛池挖掘方法
选取一个种子(seed)域名。
不断访问种子域名的sitemap文件,将域名添加到集合中,直到不再有新的域名产生。
这样可以获得蜘蛛池中所有域名的集合称为A。
蜘蛛池域名分析
蜘蛛池A中主要存在4类域名
- SEO泛站域名
- 搭便车推广消息域名
- 合法网站域名
- 客户域名
SEO泛站域名判断方法
首先从A中挑选出 SEO泛站域名
判断准则主要有两点,两个条件同时满足时我们认为他就是SEO域名。
a. 域名使用通配符
b. 连续访问两次sitemap或者index,网站超链接变化率C超过阈值(经验设置为20%)
假设第一次访问时页面的链接集合为$H_A$,第二次访问页面的链接集合为$H_B$。
$$ C_A=\frac{|H_A-H_B|}{|H_A|} $$
$$ C_B=\frac{|H_B-H_A|}{|H_B|} $$
$$ max(C_A,C_B) > Min_H = 20% $$
产生误报的主要原因是 某些网站广告较多,广告的超链接也会发生变化,使得网站的链接变化率超过阈值。
搭便车推广消息域名
使用模式匹配,因为搭便车消息域名通常会包含诸如“/search/”等关键词,用45种pattern尽可能匹配更多消息。
合法网站域名
Alexa Top 1M
客户域名
在全局域名集合A中剔除SEO泛站域名,剔除推广消息域名,剔除合法网站域名后,剩下的就是客户域名。
蜘蛛池的对抗手段
- 降低超链接变化率
- 不使用DNS通配符
DNS扫描挖掘蜘蛛池
收集DNS Zone file,使用 passive DNS database。
用 SEO泛站域名判断方法 来寻找 SEO泛站域名。
再以找到的SEO泛站域名为种子,使用蜘蛛池挖掘方法来探测蜘蛛池的全貌。
若两个蜘蛛池的SEO泛站域名相似度大于50%,则认定它们是同一个蜘蛛池。
蜘蛛池的作用
- 操纵长尾关键词的搜索结果,主要通过搭便车消息
- 可以提高搜索引擎蜘蛛的访问频率
其他有亮点的地方
- 用BosonNLP分析客户站的话题内容,聚类为7个话题。
- 对SEO泛站域名的IP,TLD(Top Level Domain),注册商分布,注册时间分布,注册人邮箱分布,注册时间分布等做了详细的数据分析。