原理是利用某BT发布站的收集系统,通过文件的HASH码检索文件信息并保存为服务器本地XML文件,然后除了重新获取时皆以此XML文件为数据来源.因为此BT发布站的检索系统在白天较慢,所以不能实时获取信息,这样会导致页面打开速度的缓慢. VB/VB.NET 代码 <!--#include file="Module/UBB.asp" --> <html><head> <title>查询torrent文件信息</title> <style type="text/css"> body{ font-family:宋体; font-size:12px; } td{ font-family:宋体; font-size:12px; BACKGROUND-COLOR: #FFFFFF; } .bold{ font-weight:bold; font-family:宋体; font-size:12px; BACKGROUND-COLOR: #FFFFFF; } .th{ font-weight:bold; font-family:宋体; font-size:12px; BACKGROUND-COLOR:#9CDCF1; } </style> </head> <body> <% Hashcode = lcase(trim(request("hash"))) level = lcase(trim(request("level"))) if level = "" or not isnumeric(level) then response.write "错误的附加参数" response.end end if isreload = request("isreload") safestr = "qwertyuiopasdfghjklzxcvbnm1234567890" for i=1 to len(hashcode) if instr(safestr,mid(hashcode,i,1)) < 1 then response.write "错误的Hash码" response.end end if next hashfile = server.mappath("xml/" & Hashcode & ".xml") Set xml=Server.CreateObject("Microsoft.XMLDOM") xml.Async = False xml.ValidateOnParse = False xml.Load(hashfile) if (not (xml.ReadyState > 2)) or isreload = "1" then Set http=Server.CreateObject("Microsoft.XMLHTTP") http.Open "GET","http://www2.sa20.com/btsearch0.php?keyword=" & Hashcode & "&type=2&show_query=1",False http.send Set s = server.createObject("ADODB.Stream") s.type = 2 s.open s.charset="gb2312" s.writetext bin2str2(http.Responsebody) s.savetofile hashfile,2 s.close set http = nothing xml.Load(hashfile) end if If xml.ReadyState > 2 Then Set SearchResult = xml.getElementsByTagName("SearchResult") If Cint(SearchResult.length) > 0 then Set BTInfo = SearchResult.Item(0).getElementsByTagName("ResultSet").Item(0).getElementsByTagName("BTInfo") Set Category = BTInfo.Item(0).getElementsByTagName("CategoryList").item(0).getElementsByTagName("Category") Set Tinfo = BTInfo.Item(0).getElementsByTagName("TInfo") FileName = BTInfo.Item(0).getElementsByTagName("FileName").item(0).text Title = BTInfo.Item(0).getElementsByTagName("Title").item(0).text Desc = UBBdecode(htmlencode(BTInfo.Item(0).getElementsByTagName("Desc").item(0).text)) Sources = Tinfo.Item(0).getAttribute("Sources") FileSize = ccur(BTInfo.Item(0).getAttribute("FSize")) FileSize = FileSize / 1024 If FileSize > 1024 Then FileSize = FileSize / 1024 If FileSize > 1024 Then FileSize = FileSize / 1024 FileSize = FormatNumber(FileSize,2,-1) & " GB" Else FileSize = FormatNumber(FileSize,2,-1) & " MB" End If Else FileSize = FormatNumber(FileSize,2,-1) & " KB" End If Connected = Tinfo.Item(0).getAttribute("Connected") Completed = Tinfo.Item(0).getAttribute("Completed") CategoryList = Category.item(2).text & " >> " & Category.item(1).text & " >> " & Category.item(0).text Elseif isreload = "" then Response.redirect("bt.asp?hash=" & Hashcode & "&level=" & level & "&isreload=1") End If Else Response.Write("发生意外,此次信息获取未能成功,请重试") Response.End End If Set http=Nothing Set xml=Nothing Function bin2str2(binstr) Dim BytesStream,StringReturn Set BytesStream = server.createObject("ADODB.Stream") With BytesStream .Type = 2 .Open .WriteText binstr .Position = 0 .Charset = "GB2312" .Position = 2 StringReturn = .ReadText .close End With Set BytesStream = Nothing bin2str2 = StringReturn End Function %> <table border=0 bgcolor=#666666 width=70% align=center cellspacing=1 cellpadding=5> <tr><td colspan=2 class=th>torrent文件信息 - <a href="?hash=<%=Hashcode%>&level=<%=level%>&isreload=1">重新获取</a></td></tr> <tr><td class=bold align=right nowrap width=60>标题</td><td width=100%><%=Title%></td></tr> <tr><td class=bold align=right nowrap width=60>大小</td><td width=100%><%=FileSize%></td></tr> <tr><td class=bold align=right nowrap width=60>种子数</td><td width=100%><font color=green><b><%=Sources%></b></font></td></tr> <tr><td class=bold align=right nowrap width=60>连接数</td><td width=100%><font color=red><b><%=Connected%></b></font></td></tr> <tr><td class=bold align=right nowrap width=60>完成数</td><td width=100%><font color=blue><b><%=Completed%></b></font></td></tr> <tr><td class=bold align=right nowrap width=60>类型</td><td width=100%><%=CategoryList%></td></tr> <tr><td class=bold align=right nowrap valign=top width=60>简介</td><td width=100%><%=Desc%></td></tr> <tr><td colspan=2 class=bold align=center><br><b><a href="javascript:self.close()">关闭窗口</a></b></td></tr> </table> </body></html> 以下是更新帖子显示页的BT文件信息 JAVA/J# 代码 <script language=JavaScript> function senddata(){ if(parent.BT<%=level%>Sources!=null) parent.BT<%=level%>Sources.innerHTML = '<font color=green><b><%=Sources%></b></font>'; if(parent.BT<%=level%>Connected!=null) parent.BT<%=level%>Connected.innerHTML = '<font color=red><b><%=Connected%></b></font>'; if(parent.BT<%=level%>Completed!=null) parent.BT<%=level%>Completed.innerHTML = '<font color=blue><b><%=Completed%></b></font>'; if(parent.BT<%=level%>FileSize!=null) parent.BT<%=level%>FileSize.innerHTML = '<font color=black><b><%=FileSize%></b></font>'; } senddata(); </script>