Oblog检测搜索引擎的一个问题

  今天上班的时候,有一个用户反映博客登陆不了了。

  因为最近做了整合方面的改动,我第一反应是难道这方面有问题?可是自己测试什么问题都不存在。后来用户抓图来看,是登陆表单的位置一片空白。

  于是远程协助帮她处理。一般情况下,有人正常有人不正常都会是缓存的问题或者浏览器设置的问题。所以我首先做的也就是这两件事。可是处理之后问题依旧。在用户电脑上打开网页源代码,发现登陆表单是个JS脚本。代码输出正常的。该JS路径在我的电脑上访问就一切正常,而在用户的电脑上则访问不到。测试的时候进一步发现,用户的电脑上似乎只能访问我们博客系统的html静态文件,所以asp文件都返回404错误。

  这种问题以前确实没有遇到。只遇到过静态文件可以访问动态脚本不能访问的,那都是IIS的问题,服务器端的问题。于是要从代码下手了。

  打开login.asp(登陆脚本就是由它输出的),源代码头部首先就看到ChkSpider这个函数。我知道这是检测搜索引擎的,如果发现客户端是搜索引擎,直接截断输出。难道是这个有问题?,首先把这行代码注释了,刷新页面,登陆窗口正常显示了。

  后来用户又在访问User_Index.asp的时候遇到同样的问题,看来改具体文件不是办法了,打开Class_Sys.asp文件,找到ChkSpider这个函数,进入函数后直接让它Exit Function。再测,问题全都没了。

  这个问题一般情况下很难遇到,但是实际上几率并不算特别小,只要用户计算机名称包含了google、sohu、sina、soso、baidu、yahoo等字符串(不用严格等同于Spider的名称,只要包含相关字符串),就会被当作是Spider来处理。

  看来Oblog的这个检测逻辑需要改进一下了。要么,对常用Spider的名称做精确匹配,要么,就换一种方式来检测吧。这个本身并没有问题的代码,跟千奇百怪的计算机名称撞车的可能性还是很大的。

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名小李刀刀(包含链接)。如您有任何疑问或者授权方面的协商,请给我发送邮件

  • Twitter
  • Facebook
  • Google Buzz
  • Blogger Post
  • Digg
  • MSDN
  • MySpace
  • Ping
  • TechNet
  • WordPress
  • Share/Bookmark
2008年9月19日 | 归档于 所谓技术
标签: , ,
  1. doubleaf
    2008年9月19日 06:43 | #1

    刀刀你博客RSS输出有问题,本文的网址输出为http://wukangrui.netread-293.html/,少了一个/

    • admin
      2008年9月21日 18:51 | #2

      正常的呀???没少中间那个 / , 也没多后面那个 / 哦。

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>