[TOC]

注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。

0.SEO 介绍与分类

Q:什么是SEO?

A:SEO是Search Engine optimization的缩写,SEO是指通过对网站进行站内优化(网站结构调整、网站内容建设、网站代码优化等)和站外优化,从而提高网站的关键词排名以及公司产品的曝光度。
说简单的其实SEO它就是一种无处不在的产品制造推销理论,制造一个让用户知道-喜欢-购买的东西的传统思维过程;seo制造的是网页网站,面对的用户是搜索引擎:且狭义的seo面向的用户是搜索引擎(发现你的网站→哟,还不错,抓取了→排名中展示你),广义的seo面向的是搜索引擎和广大用户(涉及用户体验)。

方式:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。
目的:为网站提供生态式的自我营销解决方案,让其在行业内占据领先地位,获得品牌收益

Q:为什么要做SEO?SEO的优势?
A: S有如下几点

  • 做SEO能来客户终极目标是能来带销售。从百度获取的流量比今日头条等媒体更精准,因为是用户主动发起,反应的是即时需求,转化率高。
  • 流量精准,能变成付费用户的可能性大。因为根据相关的关键词,可以找到非常精准的流量。
    举个例子,一家北京饭店,在搜索词“北京美食“的内容里排到第一的话,会带来多少精准流量?
  • 企业付出的成本比较低。只需要进行一些内容、网站上的优化,但是可能带来的流量不论质量还是数量都是非常之高的。
  • 一劳永逸,长期有效。一旦占据了高位,就很难下去了;只要及时的进行优化,那么起码是会很长时间占据首位的。

Q:做SEO的手段、方法有那些?
(1) 白帽SEO
(2) 黑帽SEO
(3) 通过互联网上的搜索引擎。(常见的搜索引擎:百度、谷歌、雅虎、360搜,soso等等)
(4) 站内SEO : 一是针对个人网站的页面排版进行SEO的优化;二是针对搜索引擎进行主动的优化。
(5) 站外SEO :

Q:百度的搜索内容是如何呈现的呢?
A:详细过程如下

  • 第一步百度的机器人会在网上对网站进行爬行和抓取,将网页内容和HTML代码收录到百度的数据库中。
  • 第二步预处理,会对网页提取文字,分词,去停止词、消噪、去重,提取关键词建立索引,最终根据这些内容计算出网页的权重,网页权重决定了网页在搜索当中的排序。
  • 第三步就是排名,百度会对数据库中的网页,根据计算出的权重进行排名,

seo工作的基本内容:

  • 内容建设:是不是当前广大用户需求的内容
  • 竞争对手:对手都是怎么在做的?我们如何差异化
  • 协调资源:我们该协调那些资源来促成这次seo修改
  • 站内优化:把你的seo细节做到极致,网站代码标签结构。
  • 站外优化:网站上线,如何推广、链接建设促进收录和排名
  • 迭代优化:数据分析促进页面体验的不断完善修改

1.正常SEO介绍

在网站内部优化中做SEO最重要的几个点,即标题、网站关键字、描述以及图片名称而他们都在囊括在head标签之中,而在其中最重要的就是title与meta;

Q:什么是Meta标签?

答: Meta标签给搜索引擎提供了许多关于网页的信息,这些信息都是隐含信息意味着对于网页自身的访问者是不可见的。

简单说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#网站地图(即我们所说的站点地图)
baidusitemap.xml

#页面URL分析:
URL长度:建议不要超过255byte
静态页参数:在静态页面上使用动态参数,会造成spider多次和重复抓取

#页面内容分析
Meta及标题信息:搜索引擎优化的关键重中之重

Frame信息:搜索引擎抓取不到Frame的内容

Flash文字描述:Flash描述能让搜索引擎了解该Flash信息

图片ALT信息:通过ALT让搜索引擎了解该图片信息
<img class="avatar" src="/images/header.jpg" alt="图片介绍">


title

网站标题-title
网站标题它对搜索引擎优化很重要,标题通常会显示在两个不同的地方;浏览器的头部标签和搜索结果页。这就意味着title标签在点击率(CTR)和排名上有很重要的影响匹配到用户搜索的关键字会以粗体显示

标题重点:

  • 1.把核心的关键词放在前面
  • 2.标题简单具有表达性,诱惑性
  • 3.其选取的字数最好不要超过40-80当然字数在10~25之中是最好的;
    1
    <title>网站标题-文章总结标题-把核心的关键词放在前面-标题简单具有表达性,诱惑性</title>
  • 4.标题中为了增加精确性可以选择性加入地方词,标题中使用的符号要比较简单具有清晰的,不要使用特殊符号。
    1
    2
    #常用符号
    _ - | !


meta - keywords

关键词-keywords
描述:关键词分成三种核心关键词、扩展关键词、分布关键词

其中最重要的还是核心关键词。
选择方向上要与网页内容相关、尽量选择搜索次数多,竞争小的,要避免太多宽泛也不能太特殊、偏门。

使用关键词与简介的总结:
1.关键词超过7个;关键词设置的页面建议是放到主页、目录页;关键词不要是长尾词;主页最少出现核心关键词:
2.简介/描述词的字最好不要超过100个,简介也不要利用长尾词(常用词).

长尾关键词(Long Tail Keyword): 是指网站上的非目标关键词但与目标关键词相关的也可以带来搜索流量的组合型关键词。
长尾关键词特征:比较长,往往是2-3个词组成甚至是短语,存在于内容页面中和内容页的标题里面。 搜索量非常少,并且不稳定。

1
<meta name="Keywords" content="关键字1,关键字2,关键字3-关键字4" />


meta - Description

网站描述-Description
描述: 它会给搜索引擎提供关于这个网页的简短的描述推荐的description长度为160 个字符,该标签曾经在搜索排名中占有很大的权重,但随着算法的不断的更新升级,它的地位也逐渐降低。它虽然不会提高网站排名,但是因为它会被用在搜索引擎的结果页,所以依然有用。意味着它仍然可以提高你的网页点击率。毕竟当用户搜索的关键词与之相匹配时,会以粗体显示突出显示这就是为什么一个好的页面说明 (利用关键字的) 可以显示更多与用户相关的信息,进而提高了点击率。

1
<meta name="Description" content="简介描述本页面" />

Q: 如果你没有使用description标签或者description标签为空时,会发生什么呢?

搜索引擎仍会在搜索结果页显示出自己创键的一小段文字。大多数的结果都不是用户需要的,也就意味着你将失去用户点击网页的机会。


meta - robots

搜索引擎放行-robots
描述: Meta robots标签管理着搜索引擎是否可以进入网页,你可以用它来允许或不允许搜索引擎来获取你的网页、进入你网页中的子链接或对你的网页存档。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!--
all:文件将被检索,且页面上的链接可以被查询;
none:文件将不被检索,且页面上的链接不可以被查询;
index:文件将被检索;
follow:页面上的链接可以被查询;
noindex:文件将不被检索;
nofollow:页面上的链接不可以被查询。
-->
<meta name="robots" content="index,follow" />

<!-- author有一定作用 -->
<meta name="author" content="author name" />
<meta name="google" content="index,follow" />
<meta name="googlebot" content="index,follow" />
<meta name="verify" content="index,follow" />

Q: 为什么这个标签会对搜索引擎优化(SEO)起作用呢?

首先,它可以防止对拷贝内容的冗余抓取,例如页面的打印版页面。它也可能会对那些内容不完整的页面或者而存在私密信息的网页起作用。


meta - viewport

网站页面适配 - viewport
描述:该属性对于SEO排名没有直接的影响但是对于用户的体验来说是非常重要的,毕竟只有用户点击才有流量;

1
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">


meta - http-equiv - Content-Type

网站友好编码 - Content-Type
描述:meta content type标签被用来声明网页的字符编码,为了防止浏览器产生编码问题最好加上这个属性。但是它不会影响搜索排名或点击率(CTR)。

1
2
3
4
5
<!-- #Content-type代码 -->
<meta http-equiv='Content-Type' content='Type=text/html; charset=utf-8'>

<!-- #使用更简短的、向后兼容的声明模式: -->
<meta charset="utf-8"/>


meta - http-equiv - content-language

网页站点语言 - content-language
描述:标签之前是用来声明网页的语言的,可以告知屏幕阅读器和其它文本处理器他们正在处理的语言以便更好的工作;
简单的说Content-Language 是一个 entity header (实体消息首部),用来说明访问者希望采用的语言或语言组合,这样的话用户就可以根据自己偏好的语言来定制不同的内容。

PS: 该属性常常被省略因为不影响我们看到的效果,但是对于SEO却有着作用。如一个中文的网站,在google.cn中的排名很可能会比google.com中的排名高,这就是搜索引擎会根据用户的区域性返回区域性相对应的网站,这样的结果可能更符合用户的要求。但同是中文网站,可能是针对中国大陆的,也可能是针对新加坡的,这就要语言国家代码来声明。

  • zh-cn中文-中国大陆,zh-sg 中文-新加坡
  • en_US 英文_美国;en-ca 英文_加拿大;en-za 英文_南非
1
2
3
4
5
<!-- #XHTML标准 -->
<html xmlns="http://www.w3c.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">

<!-- #HTML标准 head标签中 -->
<meta http-equiv="content-language" content="zh-CN"/>


meta - google

网站翻译开关 - notranslate
描述:提供Notranslate使用,有时Google在结果页面会提供一个翻译链接,但有时候你不希望出现这个链接,你可以添加这样一个meta标签:

1
<meta name="google"  content=" notranslate"  />


meta - Refresh

页面刷新 - refresh
描述:使用这个meta标签你可以控制浏览器在一段时间之后自动刷新,W3C是不推荐使用这个标签的,因为它会令用户产生迷惑。另外正常使用中它对搜索排名没有任何影响,但是在黑帽SEO中常常用于劫持快照。

1
2
3
4
5
6
# 举例说明,下面的代码表示每隔30秒网页自动更新:
<meta http-equiv="refresh" content="30">


#在刷新之后跳转到另外一个页面
<meta http-equiv="refresh" content="30;URL='http://weiyigeek.top'" >

爬取规则-robots.txt
描述:robots是网站跟爬虫间的协议,搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息.他使用简单直接的txt格式文本方式告诉搜索引擎爬虫被允许爬取的范围,就是说robots.txt(常规小写)是搜索引擎中访问网站的时候要查看的第一个文件;根据robots文件里面的语法,进行分析哪个目录或者哪个链接是不可以收录的。

Q:为什么要使用robots.txt?
A:因为有些网站他是具有敏感性的,比如:后台、数据库、常见的一些网站漏洞、0ody等等也是为了安全嘛。

robots.txt 语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符
Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录
Disallow: /require/ 这里定义是禁止爬寻require目录下面的目录
Disallow: /ABC/ 这里定义是禁止爬寻ABC目录下面的目录
Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以".htm"为后缀的URL(包含子目录)。
Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址
Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片
Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件。
Allow: /cgi-bin/ 这里定义是允许爬寻cgi-bin目录下面的目录
Allow: /tmp 这里定义是允许爬寻tmp的整个目录
Allow: .htm$ 仅允许访问以".htm"为后缀的URL。
Allow: .gif$ 允许抓取网页和gif格式图片
Sitemap: 网站地图告诉爬虫这个页面是网站地图

#实例讲解
#禁止所有搜索引擎访问网站的所有部分。
User-agent:*
Disallow:/

#禁止百度索引你的网站。
User-agent:Baiduspider
Disallow:/

#禁止Google索引你的网站。
User-agent:Googlebot
Disallow:/

#禁止除百度以外的一切搜索引擎索引你的网站。
User-agent:Baiduspider
Disallow:
User-agent:*
Disallow:/

#禁止和允许搜索引擎访问某个目录,如:禁止访问admin目录;允许访问images目录。
User-agent:*
Disallow:/admin/
Allow:/images/

#禁止和允许搜索引擎访问某个后缀,如:禁止访问admin目录下所有php文件;允许访问asp文件。
User-agent:*
Disallow:/admin/*.php$
Allow:/admin/*.asp$

#禁止索引网站中所有的动态页面(这里限制的是有“?" 的域名,如:index.php?id=8)。
User-agent:*
Disallow:/*?*

#其他的影响搜索引擎的行为的方法包括使用robots元数据:
<meta name="robots" content="noindex,nofollow" />
# 出站链接添加 “nofollow" 标签
# nofollow 标签是由谷歌领头创新的一个“反垃圾链接" 的标签,并被百度、yahoo 等各大搜索引擎广泛支持,引用 nofollow 标签的目的是:用于指示搜索引擎不要追踪(即抓取)网页上的带有 nofollow 属性的任何出站链接,以减少垃圾链接的分散网站权重。
<p>ICP备案:<a href="http://www.miibeian.gov.cn/" rel="external nofollow"><%= theme.footer.ICP %></a></p>


#
# robots.txt for WeiyiGeek Blog By Hexo
#
User-agent:*
Allow: /
Allow: /archives/
Allow: /about/
Disallow: /images/
Disallow: /fonts/
Disallow: /.js$
Disallow: /.css$

Sitemap: http://weiyigeek.github.io/sitemap.xml
Sitemap: http://weiyigeek.github.io/baidusitemap.xml

Q:使用注意误区二在robots.txt文件中设置所有的文件都可以被搜索蜘蛛抓取,这样可以增加网站的收录率?
A:网站中的程序脚本、样式表等文件即使被蜘蛛收录,也不会增加网站的收录率,还只会浪费服务器资源,因此必须在robots.txt文件里设置不要让搜索蜘蛛索引这些文件。


权重值
Q: 什么是权重值?
A:表示页面的重要性的,如前文所说权重值是决定网页在搜索结果中的排名顺序的;百度的叫做权重值,谷歌的叫做pr值;

权重值是由1-10,数值越高,权重越大。
权重值除了有分析网页内容、结构得出外,优质的反向链接的数量,也会提高权重值。

Q:如何提高权重值?
A:提高权重值就要从内部和外部分别进行优化。

  • 内部优化:内容优化以及结构优化;
  • 外部优化:外链优化;
    其中内容优化一般由运营人员负责,而结构优化就需要技术人员和运营人员一同协作了;外链方面最主要的还是需要友情链接,就比较篇BD方向(通常也是由运营方面负责)。

总结:所以做SEO优化,也就是在想办法提高权重值。

常见的SEO工具:

  1. 网站管理员工具:百度站长平台,搜狗站长平台,360站长平台
  2. 网站外链查询工具
  3. SEO综合查询工具:爱站网,站长工具.
  4. 关键词挖掘工具:
  5. 网站关键词查询工具:百度指数,Google AdWords关键字工具
  6. 网站安全检测:百度安全检测,安全宝,腾讯电脑管家安全检测;
  7. 网站统计工具:百度统计,腾讯分析
  8. 广告联盟:百度联盟,谷歌联盟,创宇信用
1
2
3
#常用站长工具
http://zhanzhang.so.com/
http://fankui.help.sogou.com/

2.黑帽SEO介绍

描述:黑帽SEO操作手法不符合搜索引擎规定,利用不正当手段进行牟利快速获取流量,它是一种作弊手段,我们在进行防止该类事件的发生就要了解其本源。

技术分类:
(1) 隐藏文字
(2) 垃圾链接
(3) 网页快照劫持
(4) 关键词堆积
(5) 权重PR劫持
(6) 挂黑链
(7) 泛站群
(8) 友情链接欺骗
(9) 批量页面轮链

0x00 隐藏文字

其实就是利用改变网站中文字颜色,文字大小,CSS属性,文字定位等等,示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<body>
<div style="color:white">
SEO文字颜色
</div>
<div style="font-size:1px">
SEO文字大小
</div>
<div style="display:none">
SEO文字显示CSS
</div>
<div style="position: absolute;left:-10000px;top: -100px;">
SEO文字绝对定位
</div>
</body>
</html>

0x01 内嵌网页

使用方法如下:

1
2
3
4
5
6
7
8
//#方法1
<IFRAME frameBorder=0 scrolling=no width='0' height='0' src="http://baidu.com"></IFRAME>

//#方法2
<div id="site"></div>
<script>
document.getElementById('site').innerHTML = "<IFRAME frameBorder=0 scrolling=no width='100' height='100' src='http://baidu.com'></IFRAME>"
</script>

0x02 劫持某度快照

某度搜索引擎的快照劫持操作各个脚本语言有各个脚本的劫持快照的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//案例1:ASP
<%
function Getbot()
dim s_agent
GetBot=""
s_agent=Request.ServerVariables("HTTP_USER_AGENT")
if instr(1,s_agent,"googlebot",1) > 0 then
GetBot="google"
end if
if instr(1,s_agent,"baiduspider",1) > 0 then
GetBot="baidu"
end if
end function
if GetBot="baidu" or GetBot="google" then
url="http://www.baidu.com" '跳转网址
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", url
else
Response.Write"<meta http-equiv='refresh' content='0;URL=http://www.baidu.com'>"
end if
%>

0x03 轮链SEO

Q:什么是轮链?
A:在一个网站目录生成大量的页面,百万的页面,相互轮链,提升内链而达到排名;简单的说就是几个页面相互进行a标签链接,轮链一般是新手操作比较好/容易简单。

Q:轮链是不寄生虫?
A:不是

0x04 寄生虫

Q:什么是寄生虫?
A:寄生虫页面不多且比较寄生虫专业

原理:他这个程序跟轮链是不一样的,寄生虫他页面也就几个十多个,有蜘蛛访问,他会持续的生成一些页面等等比如:本来是10个页面的 1个蜘蛛来访后、他就自动生成到20个。

0x05 地区流量劫持

描述:其实就是通过js来判断IP来源进行跳转的,当然方法坑定不止这些

1
2
3
4
5
6
7
8
<script src="判断用户地区的JS脚本" charset="GB2312" ></script>
<script type=text/javascript>
if(remote_ip_info.province =='广西'){
pass
}else{
window.location.href="IT综合网"
}
</script>

0x06 301劫持PR

描述:其实与元数据meta http-equiv=’refresh’使用差不多,也能通过脚本进行301跳转

1
2
3
4
5
6
#案例1:
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://WWW.baidu.COM"
Response.End
%>