class="article-detail">

class="article-content">

1、思路

如何把网站流量做大,这是每个SEO第一个要思考的问题,无非从3个方面入手,1,词库,2,内容,3,链接。

可一般的SEO根本没有SEO词库的概念,只是把几个目标关键词放在首页,就不停发外链,这就是大多SEO的做法。

其实不管你是做几个关键词,只要分析下竟争对手,就是目标关键词在百度首页有排名的网站,就明白,他的收录数量,目标关键词,外链数,答案就马上出来。

最简单常见的做法是,直接把数据结果提高2倍,排名就上去了。无非就是拼数量,当你的整体收录量上去了,排名上去了,流量就来了,无非是流量多少的问题。

关键词有排名,就有流量,可你要想一想,你准备了多少个关键词,竟争对手有多少,行业网站又用了多少?如果你没有全局观,不站在行业顶端来看待这个领域,SEO的思路是非常有限的。

在SEO实战交流群,我给所有学员第一个任务是,做SEO词库,也许做词库会花费一些时间,可一旦完成,你的优化思路会非常清楚,然后去做几个SEO频道和内容模板,就可以上内容了,其实SEO就是这么简单。

2、案例

对于SEO感兴趣的同学,可以分析下玛峰窝,这是一个旅游分享网站,把旅游相关的大部份内容,从不同维度都做出来了,虽然很多细节没做好,可整体而言,还是不错的。

例如,天气,很多人出国前都会查下天气,例如,韩国天气

郑刚:SEO如何轻松做大流量?

郑刚:SEO如何轻松做大流量?

这也是一个相关流量入口,一个用户想去韩国旅行,肯定会先查查天气,如果到了这个页面,再看到自己想去的城市,点进去,又会看到相关酒店的价格,问答,游记等,很容易就提升了转化率。

所以天气也是一个不错的维度,而且,天气的全世界地区搜索量非常巨大,把这些流量拿来是很容易,也会产生部份转化。

3、实际流量分析

很多SEO刚做排名时,总是这样想,例如,SEO这个词有5000人搜索,然后死命去做这个词,可发现排名上去后,根本没有这么多流量。

正常流量比例会按阶梯式下分,首1,50%,首2,30%,首3,10%,也可能会更低,这是没有竟价的情况下,如果有竟价,流量按排名位置再往下排,你会看到,你上了首1,也没有什么流量。

所以这是一个误区,不要只盯着一个词,做过SEO超过1年以上的都应知道,网站的流量主要来自长尾流量,大量的长尾,实际首页关键词,来不了几个流量。

如果单个排,可能首页主词会多少些,可整体来看,就算不上什么流量了。

正确的做法在第1部份已经说了,实际流量的算法是,100流量=总关键词数量,减去,整体收录页面数量,减去,有排名的页面数量,等于网站实际流量。

如果有竟价因素,可能实际流量不到20%,这要和总SEO词库的关键词数量来计算。

例如,你想做1000的流量,准备1000个词,然后做了1000个页面,然后收录一部份,100%收录是不可能的。去掉没有排名的页面,等于最后网站的实际流量。

可能是30%,也可能是20%,如果想提高这个比例,最简单的方法就是,不断的扩展SEO词库数量,从不同维度生产更多页面,当你的收录量有50万时,你的流量有5万,就很容易实现了。

我是郑刚,微信号/qq:611247,每天写一篇文章,希望能给大家一些启发。

欢迎分享,转载,请保留版权,谢谢!

class="clearfix" data-groupid="6227743227120124162">

 

转:http://toutiao.com/i6227747498333569538

class="article-detail">

class="article-content">

昨天SEO实战交流群有同学问,小网站和大网站优化有哪些不同?我当时就作了解答,但我想,那只是方向性的东西,今天抽时间,专门解答下这个问题。

1、结构

大网站和小网站从结构上是差不多的,只是多几个专题页和列表页,SEO频道的模式有点差别。

2、内容

相对而言,大网站的内容来源更丰富,客户1部份,自身发布1部份,然后分解或采集一部份。而小网站,只是自己发布或去复制内容。内容很少,也很单一。

3、链接

大网站光内部的链接量级都非常庞大,而小网站只有几十个页,多则几百个页面,内部优化是很有限的,顶多就去换几个友链而已,资源非常少。

4、流量页

大站的SEO频道少则几十万,多少几百万个,小企业站点,顶多就是一个产品列表页,实际获取流量少的可怜,更多流量只是来源于首页,这样单一的模式,从量级上就没法比。

如果要想获取更多流量,最简单的方法,就是获取更多流量页面,如果单一靠首页去优化,是非常有限的。一个页面能承载的关键词也是有限的,最好的模式,是让更多页面获取长尾流量,从而提升整体流量。

那小网站要注意优化哪些细节呢?

1、关键词的研究

小网站优化的页面有限,就更应该去做关键词研究,调用的资源有限,就要尽量让每一个页面产生价值,获取流量。研究的越清楚,你就越明白,哪些词可以做出排名,哪些词是重要的有价值的。

2、页面的落脚词分布

其实就是关键词的布局,在小网站里,堆关键词密度还是有效果的,现在很多做SEO的方法,都是从关键词密度上延伸的,从顶部,导航栏,次导航,标题,内容,相关页,相关介绍内容模块,热门标签,相关评论,底部,这几个点去布局关键词。

3、内容页的安排

小网站很多时间没有排名,和内容有着极大的关系,内容就是很僵化的,或产品的一些说明,并没有做好用户体验,用户关注什么,或需要解决什么,没有从内容里说明,完全就是按自己的想法在做网站。特别是一些模板,首页,产品大全,新闻资讯,行业动态,招聘,联系我们,关于我们,这就是一些企业站的全部。

看到很多栏目,都不是客户想看的,那有存在的必要性吗?没有,没有为什么不拿掉,放客户想看的,想要的呢?

4、收录量

说到收录量,很多站长想到site,实际上这根本不是实际收录量,关于收录量,首先要想下,你有多少个URL,不能只看你后台发布了多少新闻或产品,那不是实际的页面数量。

这个可以用软件爬下,就能知道,网站倒底有多少URL页面,然后在百度站长平台看数据,你有多少页是收录的,答案就马上清楚,而不是总盯着site的显示数量。

如何解决收录量:

a、Ping

百度站长平台有说明和代码,实际很简单,dede和WP都有现成的插件,包括百度也有这样的插件开放。

b、网站地图

这个肯定是有比没有好,xml,txt,html,这3个模式都要做,然后到百度后台提交,在网站顶部和底部做入口,在robots里放一个入口。

c、相互调用

把产品页和新闻页面做交叉调用,让页面有更多的展示机会,这样会大大提高蜘蛛的爬行,每个页面增加一个全站最新内容页。

5、链接建设

这里的链接,不只是说首页的链接,首页天生就能获取链接,例如,全站的链接,更多时候,我们要把链接导向我们要优化的页面,不只是首页。

你想这个页有排名,就要给他足够的投票,就这么简单。这是最简单的部份,这里就不展开了。

我是郑刚,微信号/qq:611247,每天写一篇文章,希望能给大家一些启发。

欢迎分享,转载,请保留版权,谢谢!

class="clearfix" data-groupid="6222936617943712002">

转:http://toutiao.com/i6222942834027135490/

加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品

一看就明白的爬虫入门讲解-基础理论篇

关于爬虫内容的分享,我会分成两篇,六个部分来分享,分别是:

  1. 我们的目的是什么
  2. 内容从何而来
  3. 了解网络请求
  4. 一些常见的限制方式
  5. 尝试解决问题的思路
  6. 效率问题的取舍

本文先聊聊前三个部分。

一、我们的目的是什么

一般来讲对我们而言需要抓取的是某个网站或者某个应用的内容,提取有用的价值,内容一般分为两部分,非结构化的文本,或者结构化的文本。

关于非结构化的数据

1.1 HTML文本(包含javascript代码)

HTML文本基本上是传统爬虫过程中最常见的,也就是大多数时候会遇到的情况,例如抓取一个网页,得到的是HTML,然后需要解析一些常见的元素,提取一些关键的信息。HTML其实理应属于结构化的文本组织,但是又因为一般我们需要的关键信息并非直接可以得到,需要进行对HTML的解析查找,甚至一些字符串操作才能得到,所以还是归类于非结构化的数据处理中。

常见解析方式如下:

CSS选择器

现在的网页样式比较多,所以一般的网页都会有一些CSS的定位,例如class,id等等,或者我们根据常见的节点路径进行定位,例如腾讯首页的财经部分:

这里id就为finance,我们用css选择器,就是"#finance"就得到了财经这一块区域的html,同理,可以根据特定的css选择器可以获取其他的内容。

XPATH

XPATH是一种页面元素的路径选择方法,利用chrome可以快速得到,如:

一看就明白的爬虫入门讲解-基础理论篇

copy XPATH 就能得到——//*[@id="finance"]

正则表达式

正则表达式,用标准正则解析,一般会把HTML当做普通文本,用指定格式匹配当相关文本,适合小片段文本,或者某一串字符,或者HTML包含javascript的代码,无法用CSS选择器或者XPATH。

字符串分隔

同正则表达式,更为偷懒的方法,不建议使用。

1.2 一段文本

例如一篇文章,或者一句话,我们的初衷是提取有效信息,所以如果是滞后处理,可以直接存储,如果是需要实时提取有用信息,常见的处理方式如下:

分词

根据抓取的网站类型,使用不同词库,进行基本的分词,然后变成词频统计,类似于向量的表示,词为方向,词频为长度。

NLP

自然语言处理,进行语义分析,用结果表示,例如正负面等。

关于结构化的数据

结构化的数据是最好处理,一般都是类似JSON格式的字符串,直接解析JSON数据就可以了,提取JSON的关键字段即可

二、内容从何而来

过去我们常需要获取的内容主要来源于网页,一般来讲,我们决定进行抓取的时候,都是网页上可看到的内容,但是随着这几年移动互联网的发展,我们也发现越来越多的内容会来源于移动app,所以爬虫就不止局限于一定要抓取解析网页,还有就是模拟移动app的网络请求进行抓取,所以这一部分我会分两部分进行说明。

1 网页内容

网页内容一般就是指我们最终在网页上看到的内容,但是这个过程其实并不是网页的代码里面直接包含内容这么简单,所以对于很多新人而言,会遇到很多问题,比如:

明明在页面用Chrome或者Firefox进行审查元素时能看到某个HTML标签下包含内容,但是抓取的时候为空。

很多内容一定要在页面上点击某个按钮或者进行某个交互操作才能显示出来。

所以对于很多新人的做法是用某个语言别人模拟浏览器操作的库,其实就是调用本地浏览器或者是包含了一些执行javascript的引擎来进行模拟操作抓取数据,但是这种做法显然对于想要大量抓取数据的情况下是效率非常低下,并且对于技术人员本身而言也相当于在用一个盒子,那么对于这些内容到底是怎么显示在网页上的呢?主要分为以下几种情况:

网页包含内容

这种情况是最容易解决的,一般来讲基本上是静态网页已经写死的内容,或者动态网页,采用模板渲染,浏览器获取到HTML的时候已经是包含所有的关键信息,所以直接在网页上看到的内容都可以通过特定的HTML标签得到

javascript代码加载内容

这种情况是由于虽然网页显示时,内容在HTML标签里面,但是其实是由于执行js代码加到标签里面的,所以这个时候内容在js代码里面的,而js的执行是在浏览器端的操作,所以用程序去请求网页地址的时候,得到的response是网页代码和js的代码,所以自己在浏览器端能看到内容,解析时由于js未执行,肯定找到指定HTML标签下内容肯定为空,这个时候的处理办法,一般来讲主要是要找到包含内容的js代码串,然后通过正则表达式获得相应的内容,而不是解析HTML标签。

Ajax异步请求

这种情况是现在很常见的,尤其是在内容以分页形式显示在网页上,并且页面无刷新,或者是对网页进行某个交互操作后,得到内容。那我们该如何分析这些请求呢?这里我以Chrome的操作为例,进行说明:

一看就明白的爬虫入门讲解-基础理论篇

所以当我们开始刷新页面的时候就要开始跟踪所有的请求,观察数据到底是在哪一步加载进来的。然后当我们找到核心的异步请求的时候,就只用抓取这个异步请求就可以了,如果原始网页没有任何有用信息,也没必要去抓取原始网页了。

2 App内容

因为现在移动应用越来越多,很多有用信息都在App里面,另外解析非结构化文本和结构文本对比而言,结构化文本会简单多了,不同去找内容,去过多分析解析,所有既有网站又有App的话,推荐抓取App,大多数情况下基本上只是一些JSON数据的API了。那么App的数据该如何抓取呢?通用的方法就是抓包,基本的做法就是电脑安装抓包软件,配置好端口,然后记下ip,手机端和电脑在同一个局域网里面,然后在手机的网络连接里面设置好代理,这个时候打开App进行一些操作,如果有网络数据请求,则都会被抓包软件记下,就如上Chrome分析网络请求一样,你可以看到所有的请求情况,可以模拟请求操作。这里Mac上我推荐软件Charles,Windows推荐Fiddler2。

具体如何使用,之后我再做详述,可能会涉及到HTTPS证书的问题。

三、了解网络请求

刚刚一直在宽泛的提到一些我们需要找到请求,进行请求,对于请求只是一笔带过,但请求是很重要的一部分,包括如何绕过限制,如何发送正确地数据,都需要对的请求,这里就要详细的展开说下请求,以及如何模拟请求。

我们常说爬虫其实就是一堆的HTTP请求,找到待爬取的链接,不管是网页链接还是App抓包得到的API链接,然后发送一个请求包,得到一个返回包(也有HTTP长连接,或者Streaming的情况,这里不考虑),所以核心的几个要素就是:

  1. URL
  2. 请求方法(POST, GET)
  3. 请求包headers
  4. 请求包内容
  5. 返回包headers

在用Chrome进行网络请求捕获或者用抓包工具分析请求时,最重要的是弄清楚URL,请求方法,然后headers里面的字段,大多数出问题就出在headers里面,最常限制的几个字段就是User-Agent, Referer,Cookie 另外Base Auth也是在headers里面加了Autheration的字段。

请求内容也就是post时需要发送的数据,一般都是将Key-Value进行urlencode返回包headers大多数会被人忽视,可能只得到内容就可以了,但是其实很多时候,很多人会发现明明url,请求方法还有请求包的内容都对了,为什么没有返回内容,或者发现请求被限制,其实这里大概有两个原因:

  • 一个是返回包的内容是空的,但是在返回包的headers的字段里面有个Location,这个Location字段就是告诉浏览器重定向,所以有时候代码没有自动跟踪,自然就没有内容了;
  • 另外一个就是很多人会头疼的Cookie问题,简单说就是浏览器为什么知道你的请求合法的,例如已登录等等,其实就是可能你之前某个请求的返回包的headers里面有个字段叫Set-Cookie,Cookie存在本地,一旦设置后,除非过期,一般都会自动加在请求字段上,所以Set-Cookie里面的内容就会告诉浏览器存多久,存的是什么内容,在哪个路径下有用,Cookie都是在指定域下,一般都不跨域,域就是你请求的链接host。

所以分析请求时,一定要注意前四个,在模拟时保持一致,同时观察第五个返回时是不是有限制或者有重定向。

class="aligncenter size-large wp-image-1023" data-original="http://www.151051.cn/wp-content/uploads/2015/12/FullSizeRender6-768x1024.jpg" alt="北京雾霾的夜晚" width="768" height="1024" />

不是我不想运动,这个天气,呼吸都困难了。。。

class="aligncenter size-full wp-image-872" data-original="http://www.151051.com/wp-content/uploads/2015/11/IMG_1557.png" alt="IMG_1557" width="640" height="1136" />

说真心的,每天这么遛,真的腿疼脚疼。

class="aligncenter size-full wp-image-874" data-original="http://www.151051.com/wp-content/uploads/2015/11/IMG_1558.png" alt="IMG_1558" width="640" height="1136" />

class="aligncenter size-full wp-image-875" data-original="http://www.151051.com/wp-content/uploads/2015/11/IMG_1559.png" alt="IMG_1559" width="640" height="1136" />

外出办事,回来时要不是坐错车,我差点就信了。

class="aligncenter size-full wp-image-728" data-original="http://www.151051.com/wp-content/uploads/2015/11/IMG_1553.png" alt="IMG_1553" width="640" height="1136" />

希望我能坚持下去,试试能不能坚持三天。

是不是缺个手环??

转:http://res.u2game.net/viewtopic.php?p=4956

最近本人节食存钱买了个廉价的WIN8的8寸平板。本来是冲着便携性和低价格去的,实际上实用性确实也算令人满意。但是再淘宝上花几十元淘来便宜货的蓝牙键盘鼠标后,发现同时使用蓝牙连接的键盘鼠标时,鼠标使用正常,但是键盘延迟巨大,经常按键无反应,完全无法使用。此时要是关掉鼠标电源,键盘立马恢复。

由此我觉得应该是同时使用鼠标键盘,2个设备冲突了。
经过询问google大师,找到了一个解决方案,试验证明确实能快速有效的解决问题,现在分享出来给大家。

鼠标右键点击我的电脑,选择“管理”,打开管理界面然后选择进入“设备管理器”

在设备管理器里面找到你的“网络适配器”---双击你的网卡(我的是broadcom的wifi蓝牙一体的网卡)

接下来你会看到这个界面,选择“高级”

class="attachtitle">附件:
class="attachcontent"> class="aligncenter size-full wp-image-719" data-original="http://www.151051.com/wp-content/uploads/2015/10/Unnamed.jpg" alt="Unnamed" width="483" height="586" />

然后如图把 “bluetooth collaboration” 这个项对应的值改成“Disable”

然后再试试,应该就能解决问题了。(重启一下比较好)

转:http://lusongsong.com/reed/398.html

我觉得HTML5的兴起完全是因为iPhone和iPad,自从Adobe停止开发flash、Android4.0不支持flash后,我觉得在不久的将来HTML5会广泛应用,而且HTML4已经10年没更新了。

HTML5与搜索引擎优化

HTML5与class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=HTML4" target="_blank">HTML4代码结构对比

HTML5很多功能已经被介绍过了,比如在图片中可以直接写标题(不是alt哦),更精简的代码,直接用HTML5播放音频、视频,HTML5新增了不少class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=%E5%86%85%E8%81%94%E5%85%83%E7%B4%A0" target="_blank">内联元素,这为class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=%E9%BB%91%E5%B8%BDSEO" target="_blank">黑帽SEO节约了一笔不菲的时间。不过主流class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=%E6%B5%8F%E8%A7%88%E5%99%A8" target="_blank">浏览器支持的比较少,class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=%E5%8D%A2%E6%9D%BE%E6%9D%BE" target="_blank">卢松松在这里就不介绍了。

随着HTML5的到来传统的<div id="class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=header" target="_blank">header">和<div id="footer">无处不在的代码方法现在即将变成自己的标签如<class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=Header" target="_blank">Header>和<footer>,下面以一张图来表达更为清楚:

HTML4的div+css写法

(传统的div+css写法)

HTML4的写法

(HTML5的写法)

可以看看出HTML5的代码可读性更高了,也更简洁了,内容的组织相同,但每个元素有一个明确的清晰的定义,不再被迫去猜测之间不同命名的<div>标记,搜索引擎可以更容易地衡量你网页上的内容和相关内容。

值得介绍的一些标签

虽然我们看到了HTML5的简洁和强大之处,但据我所知,很多人制作html页面的时候不会按照语义来书写代码。边栏(aside)会写成class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=sidebar" target="_blank">sidebar,如果是这样的话,会使网页更加混乱,最终导致搜索引擎不好理解。

class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=noscript" target="_blank">noscript标签将会被大量使用,因为HTML5时代将会是一个class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=%E5%AF%8C%E5%AA%92%E4%BD%93" target="_blank">富媒体时代。传统的文字、图片、链接、视频、音频可能已经满足不了用户的需求,大量的脚本能够编辑出丰富的信息,包括游戏、个性化设计等等。

time标签可能会作为一个来判断网页文字源,也就是能够通过time标签来识别哪篇文章是原创的。而time标签可能将是成为HTML5时代SEO们争论不休的一个标签。

video标签中间区域的文字信息将会让搜索引擎读懂视频,这是一次飞跃。

那么搜索引擎会抓取HTML5吗?

这是一篇来自Googleclass="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=%E7%AB%99%E9%95%BF%E8%AE%BA%E5%9D%9B" target="_blank">站长论坛John Mu的文章,我觉得比较中肯,拿来给大家分享下:

一般来说,我们(class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=Google" target="_blank">Google)的class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E" target="_blank">搜索引擎爬虫是不能够百分百地从语法层面去精确地描述或者分析HTML中的标签的,新兴的HTML5也不例外。如果HTML5组织的网站越来越多,并且在实际当中给我们的爬虫抓取信息带来方便与效益的话,我们会尽力将完善我们的算法去迎合HTML5的标签特性。要记住的是,我没有明确地支持你们大家都用HTML5来构建网站,并且我没有明确提出希望大家的网站由于用HTML5来构建而在搜索当中获得很好的对待。HTML5仍然有许多地方需要不断完善,而如果大网站致力于运用HTML5的话将是令人振奋的事。

对于HTML5,我觉得它仍没有得到广泛的推广与应用,因此我们暂时不会将焦点放到它上面,我们不肯定使用HTML5构建的网站比用旧版本的HTML构建的网站在搜索中是否表现出优势。

Google尚未准备好,百度更不用说了。

最终用户优先(Priority of Constituencies)

“In case of conflict, consider users over authors over implementors over specifiers over theoretical purity.”

一旦遇到冲突,最终用户优先,其次是作者,其次是实现者,其次标准制定者,最后才是理论上的完满。

当HTML5提供了一些令用户兴奋的东西,其次产品得到更好的展现,其次我们可以放心地使用它们,其次元素被更谨慎的方式定义,最后搜索引擎也不再淡定了。

写在最后:

我觉得,因为HTML5现在并没有广泛地运用,而且搜索引擎支持效果也不佳,现在用HTML5来写网站并不会给你的网站带来什么好处,但我不否认将尝试用HTML5来编写卢松松博客模板。而HTML5会让搜索引擎读懂图片、视频、富媒体,一个新的时代即将到来,class="bdcs-inlinelink" href="http://so.lusongsong.com/cse/search?s=8439151208917997526&entry=1&q=SEOer" target="_blank">SEOer将会有大量的工作要去处理。

来源:卢松松博客(微信/QQ:13340454),欢迎分享本文,转载请保留出处!

 

默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢。其次是部分网站域名不能正常被解析,莫名其妙地打不开,或者时好时坏。

如果碰上不稳定的本地DNS,还可能经常出现无法解析的情况。除了要避免“坏”的DNS的影响,我们还可以利用DNS做些“好”事,例如管理局域网的DNS、给手机App Store加速、纠正错误的DNS解析记录、保证上网更加安全、去掉网页讨厌的广告等等。

这时候搭建一个属于自己的本地DNS服务器就十分必要了,本篇文章就来分享一下Dnsmasq安装与配置方法,利用Dnsmasq来搭建一个属于自己的本地DNS服务器,享受更干净无污染、更智能快速和没有广告干扰的DNS解析服务。

Dnsmasq安装与配置-搭建本地DNS服务器 享受更干净更快无广告DNS解析

一、Dnsmasq安装

1、执行以下命令在VPS上安装Dnsmasq:


yum install dnsmasq -y 
service dnsmasq start 

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_01.gif">class="alignnone size-full wp-image-38342" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_01.gif" alt="Dnsmasq安装" width="500" height="240" />

二、Dnsmasq配置

1、Dnsmasq的配置文件是放在 /etc/dnsmasq.conf 中。

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_02.gif">class="alignnone size-full wp-image-38343" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_02.gif" alt="Dnsmasq配置文件" width="500" height="240" />

2、打开编辑,配置:resolv-file=/etc/resolv.dnsmasq.conf,表示dnsmasq 会从这个指定的文件中寻找上游dns服务器。同时取消 strict-order 前面的注册#号。

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_03.gif">class="alignnone size-full wp-image-38344" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_03.gif" alt="Dnsmasq去除注释号" width="500" height="240" />

3、检查一下no-hosts前面是不是已经有了#号,默认的情况下是有的,dnsmasq 会首先寻找本地的 hosts 文件再去寻找缓存下来的域名, 最后去上游dns 服务器寻找。

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_05.gif">class="alignnone size-full wp-image-38346" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_05.gif" alt="Dnsmasq检查配置" width="500" height="240" />

4、设置:listen-address=127.0.0.1,表示这个 dnsmasq 本机自己使用有效。注意:如果你想让本机所在的局域网的其它电脑也能够使用上Dnsmasq,应该把本机的局域网IP加上去:listen-address=192.168.1.123,127.0.0.1

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_06.gif">class="alignnone size-full wp-image-38347" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_06.gif" alt="Dnsmasq局域网IP" width="500" height="240" />

5、修改好了dnsmasq.conf 后,就可以将它重新上传覆盖原文件了。

6、另外我们还需要修改/etc/resolv.conf这个文件,执行以下命令:


echo 'nameserver 127.0.0.1' > /etc/resolv.conf
cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
echo 'nameserver 8.8.8.8' > /etc/resolv.dnsmasq.conf
echo 'nameserver 199.91.73.222' > /etc/resolv.dnsmasq.conf
cp /etc/hosts /etc/dnsmasq.hosts
echo 'addn-hosts=/etc/dnsmasq.hosts' >> /etc/dnsmasq.conf

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_04.gif">class="alignnone size-full wp-image-38345" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_04.gif" alt="Dnsmasq添加NS服务器IP" width="500" height="240" />

7、resolv.dnsmasq.conf中设置的是真正的Nameserver,可以用谷歌、V2EX等公共的DNS。

三、Dnsmasq启动

1、执行以下命令设置Dnsmasq开机启动并启动Dnsmasq服务:


chkconfig dnsmasq on
/etc/init.d/dnsmasq restart

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_07.gif">class="alignnone size-full wp-image-38348" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_07.gif" alt="Dnsmasq启动服务" width="500" height="240" />

2、执行命令:netstat -tunlp|grep 53 可以查看Dnsmasq是不是已经正常启动:

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_08.gif">class="alignnone size-full wp-image-38350" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_08.gif" alt="Dnsmasq检查是否正常启动" width="500" height="240" />

3、测试:dig www.freehao123.com,第一次是没有缓存,所以时间是200多。

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_09.gif">class="alignnone size-full wp-image-38350" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_09.gif" alt="Dnsmasq查询时间" width="500" height="240" />

4、第二次再次测试,因为已经有了缓存,所以查询时间已经变成了0.

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_10.gif">class="alignnone size-full wp-image-38351" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_10.gif" alt="Dnsmasq缓存生效" width="500" height="240" />

四、Dnsmasq使用

1、本地DNS。将Dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_11.gif">class="alignnone size-full wp-image-38352" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_11.gif" alt="Dnsmasq本地DNS服务器使用" width="500" height="240" />

2、应对ISP的DNS劫持。输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。先随便nslookup 一个不存在的域名,看看ISP商劫持的IP地址。

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_12.gif">class="alignnone size-full wp-image-38353" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_12.gif" alt="Dnsmasq检查DNS劫持" width="500" height="240" />

3、接着编辑/etc/dnsmasq.conf文件,将:bogus-nxdomain=123.123.123.123 加入进去,后面的IP是刚刚查询到的DNS劫持IP地址。

4、重启dnsmasq,再尝试打开不存在的域名,这时浏览器就会显示正常的无法连接页面了。

class="highslide-image" href="http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_13.gif">class="alignnone size-full wp-image-38354" data-original="/app/get_remote_pic.php?file=http://img.freehao123.com/wp-content/uploads/2014/08/Dnsmasq_13.gif" alt="Dnsmasq无法显示网页" width="500" height="240" />

5、智能DNS加快解析速度。打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。


#国内指定DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/taobaocdn.com/114.114.114.114
#国外指定DNS
server=/google.com/223.5.5.5

6、server=/cn/表示所有的cn域名都使用114这个公共DNS,server=/taobao.com/表示所有的taobao.com域名都用114,223.5.5.5 是阿里云的公共DNS,你可以换成其它的。

7、屏蔽网页广告。将指广告的URL指定127这个IP,就可以将网页上讨厌的广告给去掉了。


address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1

8、指定域名解析到特定的IP上。这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。


address=/freehao123.com/123.123.123.123

9、内网DNS。首先将局域网中的所有的设备的本地DNS设置为已经安装Dnsmasq的服务器IP地址。然后修改已经安装Dnsmasq的服务器Hosts文件:/etc/hosts,指定域名到特定的IP中。

10、例如想让局域网中的所有用户访问www.freehao123.com时跳转到192.168.0.2,添加:192.168.0.2 www.freehao123.com在Hosts文件中既可,整个过程也可以说是“DNS劫持”。

五、Dnsmasq小结

1、Dnsmasq作为本地DNS服务器安装方便,操作简单,改动的地方也不是很多,如果用国内的VPS来搭建本地DNS,响应的速度会更快,也更稳定。

2、Dnsmasq的功能强大,反DNS劫持、加快解析速度、屏蔽广告、控制内网DNS、强制域名跳转到特定IP上等这些功能在我们的实际的生活中都是很有用的。