ASP教程之小偷程序道理二
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。程序|小偷程序一样平常来讲,我们做网站,数据都是在我们本人的数据库中的,但有些数据,我们不想也不克不及本人往搜集数据,好比旧事\天色预告,(我们没法每天更新),以是我们就必要借助他人的网站来显现这些内容。但假如间接链接到他人的网站,那就不是本人的站点了,以是我们经由过程xmlhttp工具来在背景把他人的网页内容载进到内存中,经由选择,将他人的网页内容显现出来,这就是所谓的“小偷程序”。小偷程序实践上是经由过程了XML中的XMLHTTP组件挪用别的网站上的网页,静态载进内存后,再对他人网页的内容举行剖析过滤。以是,准绳上只需他人网页上能显现出来的信息,你都可使用(关于毗连,一样平常的下载网站的毗连你是截不到的,由于它举行了埋没)。如今有良多旧事小偷程序,良多都是挪用了sina的旧事网页,对个中的html举行了一些交换,同时对告白也举行过滤。除旧事截取,你还能够使用小偷程序往截取一些其余信息,好比天色预告等。
小偷程序的长处有:
1、不必保护网站,由于小偷程序中的数据来自其他网站,它将跟着该网站的更新而更新;
2、能够节俭服务器资本,一样平常小偷程序就几个文件,一切网页内容都是来自其他网站。
其弱点有:
1、不不乱,假如方针网站堕落,程序也会堕落。方针网站举行晋级保护,小偷程序也要举行响应修正;
2、速率慢,由于是远程挪用,速率和在当地服务器上读取数据比起来,一定要慢一些。
小偷程序通常为利用xmlhttp组件来下载他人的网页,将他人的网页内容载到了你的内存中,再经由剖析,过滤失落不必要的内容,终极完成依照本人的格局来显现内容。好比这个网页:http://www.itb2b.com.cn/thief/index.asp,就是截取了新浪的内容。
以下是小偷程序代码:
<%
经常使用函数
1、输出url方针网页地点,前往值getHTTPPage是方针网页的html代码
functiongetHTTPPage(url)
dimHttp
setHttp=server.createobject("MSXML2.XMLHTTP")
Http.open"GET",url,false
Http.send()
ifHttp.readystate4then
exitfunction
endif
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
sethttp=nothing
iferr.number0thenerr.Clear
endfunction
%>
换句话说,要做小偷程序,你必需懂得xmlhttp组件的利用。微软供应的Microsoft.XMLHTTP工具,可以完成从数据包到Request工具的转换和发送义务。
XMLHTTP工具及其办法:
创立XMLHTTP工具的语句以下:
SetobjXML=CreateObject("Msxml2.XMLHTTP")
或
SetobjXML=CreateObject(“Microsoft.XMLHTTP”)
个中SetobjXML=CreateObject("Msxml2.XMLHTTP")是最新的版本
工具创立后挪用Open办法对Request工具举行初始化,语法格局为:
poster.openhttp-method,url,async,userID,password
Open办法中包括了5个参数,前三个是需要的,后两个是可选的(在服务器必要举行身份考证时供应)。
参数的寄义以下所示:
http-method:HTTP的通讯体例,好比GET或是POST
url:吸收XML数据的服务器的URL地点。一般在URL中要指明ASP或CGI程序
async:一个布尔标识,申明哀求是不是为异步的。假如是异步通讯体例(true),客户机就不守候服务器的呼应;假如是同步体例(false),客户机就要比及服务器前往动静后才往实行其他操纵
userID:用户ID,用于服务器身份考证
password:用户暗码,用于服务器身份考证
好比,我们要挪用百度的网页,我们能够:
dimHttp
setHttp=server.createobject("MSXML2.XMLHTTP")
Http.open"GET","http://www.baidu.com",false
Http.send()
Send办法是用来发送XML数据的,用法以下:
poster.send()
假如不必send来发参数,而你要挪用的网页又要吸收参数,能够如许复杂处置
dimHttp
setHttp=server.createobject("MSXML2.XMLHTTP")
Http.open"GET","http://要挪用的网页?id=1&name=abc",false
Http.send()
Http.send()今后,xmlhttp工具会前往一个工具,这个工具内里就包括了所挪用网页的内容,就象从扫瞄器里翻开一样,只不外网页内容是在内存中,还没有显现出来。但在挪用过程当中大概会堕落,以是XMLHTTP工具中的readyState属功能够反应出服务器在处置哀求时的停顿情况。
0Response工具已创立,但XML文档上载历程还没有停止
1XML文档已装载终了
2XML文档已装载终了,正在处置中
3部分XML文档已剖析
4文档已剖析终了,客户端能够承受前往动静
以是我们一样平常如许处置:
dimHttp
setHttp=server.createobject("MSXML2.XMLHTTP")
Http.open"GET","http://要挪用的网页?id=1&name=abc",false
Http.send()
反省是不是完成,readystate值为4申明载进终了
ifHttp.readystate4then
exitfunction
endif
Http.send()后,经检测Http.readystate==4,申明载进终了,这时候网页内容已载进到了Http.responseBody中了,可是假如是中文网页,Http.responseBody中会有乱码,这必要我们转换一下乱码,以是完全的挪用是如许的:
dimhttp
sethttp=Server.createobject("Microsoft.XMLHTTP")
Http.open"GET","你要挪用的网址",false
Http.send()
ifHttp.readystate4then 假如不即是4,申明堕落了
exitfunction
endif
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
sethttp=nothing
个中,bytesToBSTR是一个本人写的函数
FunctionBytesToBstr(body,Cset)
dimobjstream
setobjstream=Server.CreateObject("adodb.stream")
objstream.Type=1
objstream.Mode=3
objstream.Open
objstream.Writebody
objstream.Position=0
objstream.Type=2
objstream.Charset=Cset
BytesToBstr=objstream.ReadText
objstream.Close
setobjstream=nothing
EndFunction
以是,getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")暗示,将Http.responseBody的内容按GB2312编码转换一下,放到getHTTPPage变量中。
最初,你再对getHTTPPage变量举行剖析,掏出你想显现的数据就好了。
必要注重的是,BytesToBstr函数顶用到了adodb.stream组件,这必要你的服务器有实行它的权限。
上面我们讲个实例,我们显现一下新浪的旧事。要想显现新浪的旧事,我们就要先找到新浪的旧事网址是甚么。新浪有个静态旧事页网址:http://news.sina.com.cn/old1000/news1000_日期.shtml。好比,我们要显现6月18日的旧事,就输出
http://news.sina.com.cn/old1000/news1000_20050618.shtml,翻开网页你会发明是一个旧事列表,上面我们就要剖析一下它的布局,右键检察源代码。内里很乱,但你能够找到<!--旧事入手下手-->和<!--旧事停止-->,两头的内容就是列表的内容。好了,也就是我说,我们想显现6月18号的旧事,就如许挪用:
dimhttp
sethttp=Server.createobject("Microsoft.XMLHTTP")
Http.open"GET","http://news.sina.com.cn/old1000/news1000_20050618.shtml",false
Http.send()
ifHttp.readystate4then
exitfunction
endif
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
sethttp=nothing
start=Instr(wstr,"<!--旧事入手下手-->")
over=Instr(wstr,"<!--旧事停止-->")
wstr=mid(wstr,start+11,over-start-11)
如许wstr就是旧事列表的内容。为何start+11和over-start-11呢?由于<!--旧事入手下手-->和<!--旧事停止-->都是11的长度。wstr掏出来后,还要举行剖析,把它的网址链代替换成你的链接,把不用要的字符过滤失落,这个事情很啰嗦,你能够用replace大概用正则表达式来交换,好比:
wstr=replace(wstr,"href=""","href=""show.asp?url=")
wstr=replace(wstr,"<ul>","")
wstr=trim(replace(wstr,"</ul>",""))完成对页面内容的截取加工
wstr=Replace(wstr,"http://news.sina.com.cn","NewsNews")
wstr=Replace(wstr,"http://tech.sina.com.cn","TechNews")
wstr=Replace(wstr,"http://sports.sina.com.cn","SportsNews")
wstr=Replace(wstr,"http://ent.sina.com.cn","EntNews")
wstr=Replace(wstr,"http://eladies.sina.com.cn","EladiesNews")
wstr=Replace(wstr,"http://jczs.sina.com.cn","jczs")
wstr=Replace(wstr,"http://auto.sina.com.cn","AutoNews")
wstr=Replace(wstr,"http://finance.sina.com.cn","FinanceNews")
wstr=Replace(wstr,"http://www.eladies.com.cn","wwwEladies")ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 那么,ASP.Net有哪些改进呢? 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了 没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... 交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
页:
[1]