使用ASP/VBS 调用Google Web APIs 开发自己的搜索引擎_asp全文检索_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

使用ASP/VBS 调用Google Web APIs 开发自己的搜索引擎

作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0

 Google在2002年的4月份发布了名为Google Web APIs的应用程序接口,该接口可以让程序员通过调用Google强大的搜索引擎数据库开发出自己的搜索引擎Google Web APIs站点上则宣称: "With the Google Web APIs service, software developers can query more than 3 billion web documents directly from their own computer programs. Google uses the SOAP and WSDL standards so a developer can program in his or her favorite environment - such as Java, Perl, or Visual Studio .NET."
   在该API发布的时候,我曾经到Google上看了一下,发现该接口不错,当时把Google提供的Developer's Kit下了下来,里面只有JAVA的示例代码,由于本人对JAVA感冒,就没有继续研究下去,只是略微的看了一下接口的说明书。   后来,在国内的一个PHP站点上,看到了国内的第一个SOAP Google API for PHP 发布了,通过Google搜索了一下也没发现,国内有SOAP Google API for ASP/VBS的版本发布,最近两天刚忙完自己的事情,整理自己的文件的时候,看到角落里还有个GoogleApi的目录,捡起来又研究起来了。
   现把步骤和新的写下来,Share一下。希望MS程序员能够喜欢。~_*
   PS:我相信很多人都会同意我说Google是目前最POP的搜索引擎了。

[SOAP介绍]
   SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议是一个基于XML的协议。它包括四个部分:SOAP封装(envelop)封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。
   目前最新以及最流行的技术非XML莫数了,MS的OFFICE2003也发布了,据说也是基于XML开发的,具有很强的扩展性。
   关于SOAP协议规范,具体可以参照 http://www.tpoi.net/SOAP.htm
   同时IBM也提供了SOAP专题 http://www-900.ibm.com/developerWorks/cn/xml/theme/ws-soap.shtml (中文的,~_*)

  Google 搜索引擎现在可以通过基于 SOAP 的 Web 服务来访问了。这意味着,开发人员现在可以在他们自己的应用程序中嵌入 Google 搜索结果和其它信息。

[WSDL介绍]
   WSDL(Web Services Description Language)网页服务描述性语言,WDSL是一种XML语法,开发人员和开发工具可以用它来表示Web服务的功能。

[SOAP 与API]
   我简单的作了VBS的程序,通过SNIFFER PRO抓去下列数据包,以便作分析。

   Step 1 >
      发送请求数据包

      POST./search/beta2.HTTP/1.1
      User-Agent:.Mozilla/4.0.(compatible;.MSIE.6.0;.MS.Web.Services.Client.Protocol.1.0.3705.0)
      Content-Type:.text/xml;.charset=utf-8
      SOAPAction:."urn:GoogleSearchAction"
      Content-Length:.883
      Expect:.100-continue
      Connection:.Keep-Alive
      Host:.api.google.com

      API.Google.Com返回连接建立成功数据包

   Step 2 >
      发送数据包

      <?xml.version="1.0".encoding="utf-8"?>
      <soap:Envelope.xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:tns="urn:GoogleSearch"
      xmlns:types="urn:GoogleSearch/encodedTypes"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Body.soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <tns:doGoogleSearch>
      <key.xsi:type="xsd:string">fewCIPdQFHIhHaO+vWpBTjlblc6ajHKN</key>
      <q.xsi:type="xsd:string">............</q>
      <start.xsi:type="xsd:int">0</start>
      <maxResults.xsi:type="xsd:int">1</maxResults>
      <filter.xsi:type="xsd:boolean">false</filter>
      <restrict.xsi:type="xsd:string"./>
      <safeSearch.xsi:type="xsd:boolean">false</safeSearch>
      <lr.xsi:type="xsd:string"./><ie.xsi:type="xsd:string"./><oe.xsi:type="xsd:string"./>
      </tns:doGoogleSearch></soap:Body></soap:Envelope>
      
       API.Google.Com返回数据包

       HTTP/1.1.100.Continue....

    Step 3 >
       发送数据包

      <?xml.version="1.0".encoding="utf-8"?>
      <soap:Envelope.xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:tns="urn:GoogleSearch"
      xmlns:types="urn:GoogleSearch/encodedTypes"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Body.soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <tns:doGoogleSearch>
      <key.xsi:type="xsd:string">fewCIPdQFHIhHaO+vWpBTjlblc6ajHKN</key>
      <q.xsi:type="xsd:string">............</q>
      <start.xsi:type="xsd:int">0</start>
      <maxResults.xsi:type="xsd:int">1</maxResults>
      <filter.xsi:type="xsd:boolean">false</filter>
      <restrict.xsi:type="xsd:string"./>
      <safeSearch.xsi:type="xsd:boolean">false</safeSearch>
      <lr.xsi:type="xsd:string"./><ie.xsi:type="xsd:string"./>
      <oe.xsi:type="xsd:string"./>
      </tns:doGoogleSearch></soap:Body></soap:Envelope>

      API.Google.com返回数据包
      HTTP/1.1.200.OK
      Date:.Sun,.16.Mar.2003.20:25:26.GMT
      Server:.e.h.c.a.p.a
      Content-Length:.2046
      Keep-Alive:.timeout=10,.max=50
      Connection:.Keep-Alive
      Content-Type:.text/xml;.charset=utf-8
      <?xml.version='1.0'.encoding='UTF-8'?>
      <SOAP-ENV:Envelope.xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/1999/XMLSchema">
      <SOAP-ENV:Body>
      <ns1:doGoogleSearchResponse
      xmlns:ns1="urn:GoogleSearch"
      SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <return.xsi:type="ns1:GoogleSearchResult">
      <documentFiltering.xsi:type="xsd:boolean">false</documentFiltering>
      <estimatedTotalResultsCount.xsi:type="xsd:int">313</estimatedTotalResultsCount>
      <directoryCategories.xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/"
      xsi:type="ns2:Array"
      ns2:arrayType="ns1:DirectoryCategory[0]">
      </directoryCategories>
      <searchTime.xsi:type="xsd:double">0.057075</searchTime>
      <resultElements.xmlns:ns3="http://schemas.xmlsoap.org/soap/encoding/"
      xsi:type="ns3:Array"
      ns3:arrayType="ns1:ResultElement[1]">
      <item.xsi:type="ns1:ResultElement">
      <cachedSize.xsi:type="xsd:string">1k</cachedSize>
      <hostName.xsi:type="xsd:string"></hostName>
      <snippet.xsi:type="xsd:string"></snippet>
      <directoryCategory.xsi:type="ns1:DirectoryCategory">
      <specialEncoding.xsi:type="xsd:string"></specialEncoding>
      <fullViewableName xsi:type="xsd:string">
      </fullViewableName>
      </directoryCategory>
      <relatedInformationPresent.xsi:type="xsd:boolean">true</relatedInformationPresent>
      <directoryTitle.xsi:type="xsd:string"></directoryTitle>
      <summary.xsi:type="xsd:string"></summary>
      <URL.xsi:type="xsd:string">http://www.roror.org/</URL>
      

<title.xsi:type="xsd:string">Your.browser.does.not.support.frames..We.recommend.upgrading.your.<b>...</b>.</title>
      </item></resultElements>
      <endIndex.xsi:type="xsd:int">1</endIndex>
      <searchTips.xsi:type="xsd:string"></searchTips>
      <searchComments.xsi:type="xsd:string"></searchComments>
      <startIndex.xsi:type="xsd:int">1</startIndex>
      <estimateIsExact.xsi:type="xsd:boolean">false</estimateIsExact>
      <searchQuery.xsi:type="xsd:string">............</searchQuery>
      </return>.</ns1:doGoogleSearchResponse>
      </SOAP-ENV:Body>.</SOAP-ENV:Envelope>.

   ~_* 抓包就贴到这里,相信有些同志应该已经能看见一些端倪了吧。大家可以去看一下下面的URL,相信就知道上面的东东返回的是啥搜索结果了。
http://www.google.com/search?q=%E9%9B%A8%E5%A3%B0%E8%AE%BA%E5%9D%9B&ie=UTF-8&oe=UTF-8&hl=zh-CN&lr=

上面URL的第一条搜索记录
Your browser does not support frames. We recommend upgrading your ...
www.roror.org/ - 1k - 2003年3月15日 - 网页快照 - 类似网页

[ASP/VBS 程序的实现]
    首先通过下面的URL申请一个Google Web APIs的序列号:
https://www.google.com/accounts/NewAccount?continue=http://api.google.com/createkey&followup=http://api.google.com/createkey
    填写完Email地址和Password以后,提交表单,然后到邮箱收一下Mail,激活账号,接着就能收到Licence了。

    Your Google Web APIs license key is fewCIPdQFHIhHaO+vWpBTjlblc6ajHKN(这就是Licence了) 。

    然后安装SOAP组件,本文所提到的SOAP组件使用的是http://www.pocketsoap.com/ 发布的PocketSOAP v1.4.2(released February 8, 2003)。
    下载URL如下:
    Win32 Version v1.4.2 Packaged Install      http://www.pocketsoap.com/pocketsoap/PocketSOAP.1.4.2.exe
    注:Win95用户需要先安装DCOM95,Win95/98用户另外需要安装SSL支持。Dcom95相关URL
asp">http://www.microsoft.com/com/dcom/dcom95/dcom1_3.asp
    我使用的是Win2k Adv Server,就不需要那么麻烦了。先运行下载的PocketSOAP进行安装。
安装完成以后,就可以编写代码了。

    为了调试的方便,我使用VBS进行编写,ASP和VBS本来就如出一辙,稍加修改就可以放到WEB上了。

    代码如下,把下面代码复制保存到google.vbs,然后运行Cscript google.vb 关键字 就可以了。


    Dim oArgs, ArgNum, t, key, searchRes    Set oArgs = WScript.Arguments  ArgNum = 0    While ArgNum < oArgs.Count    FullParameter = FullParameter + oArgs(ArgNum) + " "    ArgNum = ArgNum + 1  Wend    '填写为自己申请到的Licence就可以了  key = "fewCIPdQFHIhHaO+vWpBTjlblc6ajHKN"    set t = CreateObject("pocketsOAP.HTTPTransport")  't.SetProxy "localhost", 7070  '设置Proxy    set res = GoogleSearch ( FullParameter, 0, 10, true, "", true, "", "", "" )  WScript.Echo String(80, "_")  Wscript.Echo "已向英特网搜索" & FullParameter   Wscript.Echo "共约有" & res.ItemByName("estimatedTotalResultsCount").Value & "项查询结果"  Wscript.Echo "搜索结果如下:"  WScript.Echo String(80, "_")  searchRes = res.ItemByName("resultElements").Value  for i = lbound(searchRes) to ubound(searchRes)      wscript.echo searchRes(i).Nodes.ItemByName("title").Value & vbCRLF & vbTab & _  searchRes(i).Nodes.ItemByName("URL").Value &     vbCRLF  next    Function GoogleSearch ( searchTerm, _                          start, _                          maxResults, _                          MatchFilter, _                          restrict,  _                          safeSearch, _                          languageRestrict, _                          inputEncoding, _                          outputEncoding )      dim e                          set e = CreateObject("PocketSOAP.Envelope.2")      e.SetMethod "doGoogleSearch", "urn:GoogleSearch"        e.Parameters.Create "key", key      e.Parameters.Create "q", searchTerm      e.Parameters.Create "start", start      e.Parameters.Create "maxResults", maxResults      e.Parameters.Create "filter", MatchFilter      e.Parameters.Create "restrict", restrict      e.Parameters.Create "safeSearch", safeSearch      e.Parameters.Create "lr", languageRestrict      e.Parameters.Create "ie", inputEncoding      e.Parameters.Create "oe", outputEncoding                  t.SOAPAction = "urn:GoogleSearchAction"            t.send "http://api.google.com/search/beta2", e.serialize      e.parse t      set GoogleSearch = e.parameters.item(0).Nodes  end Function   


[Google Web APIs 介绍]
   每个Goolge 账号和Licence Key一天只能自动查询1000次,每次最多返回 10 条搜索结果。因此,请求可以找到编号在 990 到 1000 之间的结果,但找不到第 1001 个。使用之前,请仔细阅读Google的服务条款(PERSONAL AND LEGITIMATE USES ONLY)。
   
   搜索请求

   搜索请求提交一个查询字符串和一组参量到Google Web APIs 服务,然后收到一组搜索结果。搜索结果是由超过20亿Web页面索引而来。

   Cache请求

    Cache请求提交一个URL到Google Web APIs 服务,然后收到Google's crawlers最后访问的页面(如果可以提供)。Cache页面的返回类型是Base64编码格式的文本。

   拼写建议

   Google 搜索引擎意识到用户通常并不知道如何拼写要找的主题,所以内置一个拼写检查器,它可以分析查询、提出建议。不论什么样的搜索,都会有这样的拼写建议。
或者在 http://www.google.com/apis/download.html 下载一份Google Web APIs Developer's Kit 。

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show.php?contentid-55.html
网站维护教程更新时间:2008-02-20 05:04:05  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer