比如一个爬虫想要访问http://www.somesite.com/sample.html时,它会首先访问http://www.somesite.com/robots.txt,得到内容为:


User-agent :*


Disallow:/


  这里User-agent表示后面的限制对指定名字的爬虫生效,如User-agent: Baiduspider 表示只对百度的爬虫生效 ,这里为*表示对所有的爬虫都生效。


  Disallow:/ 表示所有的文件都不能被爬取,像Disallow:/a/表示a目录下的文件不能被爬取,类似的关键字还有Allow,表示哪些目录或文件能被爬虫爬取索引。


  其他还有什么sitemap字段,这个和网站SEO相关,也有单独的书写规范,但是不在本文的讨论范围之内,在http://www.robotstxt.org  可以获得robots.txt的书写规范与注意事项。


  从上可知,该网站是不希望任何爬虫索引它的内容。所以如果在谷歌中搜索site:somesite.com时是得不到任何结果的

下面我们来看一看国内某SNS网站的robots.txt是如何写的:


# Robots.txt file from http://www.马赛克.com


# All robots will spider the domain


User-agent: *


Allow: /


Disallow: /profile.do*


Disallow: /getuser.do*


  这两条disallow,第一条禁止了类似/profile.do?xxxx=xxxx这样的网址被索引到,这个是用户主页,而第二条类似的,是搜索用户页,这两条的意思是,所有的搜索引擎你爬其他的可以,千万不要爬用户的数据啊......看上去没有什么问题,至少对于良好的爬虫来说,是这样。但是安全就像妹子,有时你觉得你得到了她,但是也许就在不经意间你就失去了。


  言归正传,我们来看看该SNS的手机无线页面的robots.txt是咋样的:


# Robots.txt file from http://www.马赛克.com


# All robots will spider the domain


User-agent: *


Disallow:


   可以看到该无线站点的配置是所有的页面都能被爬虫爬取。这个暂且放在一边,我们先来谈谈无线站点的登录态。


   首先,HTTP协议是一个没有状态的协议,现在网站的登录态Seesion大多依靠Cookie实现。


   但是呢,以前的手机浏览器并不是所有的都能够支持Cookie的,那么如何实现登录态的保持和类似保存书签的功能呢?


  人们一般采取的是在URL里面添加某些表示字段来表示用户身份,如在登录后访问网址时带上了?XX=TSYq82hO7UbJOMkXUX4bTA 字段,服务器端再通过取该字段来验证用户身份,而无需要求用户重新登录。


    如果有熟悉搜索引擎的搜索命令的人,结合我上面所说无线登录态和无线站点robots.txt就应该知道我下一步可以干什么了。


    通过谷歌搜索,我们得到了一批带有该字段的网址,然后随便点击一个,我们就得到了她的登录态: