|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的程序|小偷程序小偷程序道理和复杂示例
如今网下流行的小偷程序对照多,有旧事类小偷,音乐小偷,下载小偷,那末它们是怎样做的呢,
上面我来做个复杂先容,但愿对列位站长有所匡助。
(一)道理
小偷程序实践上是经由过程了XML中的XMLHTTP组件挪用别的网站上的网页。
好比旧事小偷程序,良多都是挪用了sina的旧事网页,而且对个中的html举行了一些交换,
同时对告白也举行了过滤。用小偷程序的长处有:不必保护网站,由于小偷程序中的数据来自其他网站,它将跟着该网站的更新而更新;能够节俭服务器资本,一样平常小偷程序就几个文件,一切网页内容都是来自其他网站。
弱点有:不不乱,假如方针网站堕落,程序也会堕落,并且,假如方针网站举行晋级保护,那末小偷程序也要举行响应修正;
速率,由于是远程挪用,速率和在当地服务器上读取数据比起来,一定要慢一些。
(二)事例
上面就XMLHTTP在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
2、转换乱玛,间接用xmlhttp挪用有中笔墨符的网页失掉的将是乱玛,能够经由过程adodb.stream组件举行转换
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
上面试着挪用http://www.3doing.com/earticle/的html内容
DimUrl,Html
Url="http://www.3doing.com/earticle/";
Html=getHTTPPage(Url)
Response.writeHtml
%>
怎样写ASP进库小偷程序
allen
转载请说明出自玛雅论坛
比来人人都对小偷程序感乐趣,特别是进库类的,在这里我复杂的先容一下。但愿人人对这个能有所懂得,假如您还不晓得甚么叫小偷,请参考我写的别的一片文章(小偷程序道理和复杂示例
):http://www.cnmaya.org/viewthread.php?tid=68&fpage=1
团体以为小偷只是一个很普通的说法,也给良多人带来了曲解,以为小偷是甚么欠好的器材,
实在否则,用数据收罗程序来描述应当更正确些。
这里是我今天刚完成的新浪文娱进库小偷程序::http://www.saynew.com/news/Class/popjb/popjb02.html
在这里我依据该程序的制造复杂先容一下:
进库小偷的道理也很复杂:就是用XMLHTTP远程读取网页的内容,然后依据必要,对读到的内容举行加工(过滤,交换,分类),最初失掉本人必要的数据,到场到数据库中。
起首:我们先用XMLHTTP读取远程网页(我的另外一片文章中有先容)。
其次:对内容举行过滤,这个是对照关头的步骤,好比说,我要从远程网页上提掏出一切url毗连,我应当怎样做呢?
‘这里用的是正则式
SetobjRegExp=NewRegexp创建工具
objRegExp.IgnoreCase=True巨细写疏忽
objRegExp.Global=True全局为真
objRegExp.Pattern="http://.+?";婚配字段
setmm=objRegExp.Execute(str)实行查找,str为输出参数
ForEachMatchinmm进进轮回
Response.write(Match.Value)输入url地点
next
然后,我们必要依据必要做一些交换功效,把不用要的数据交换失落,这个对照复杂,用Replace函数便可。
最初,举行数据库操纵,这个我想人人应当城市,就不做先容了。
ASP小偷进门教程。。。附QQ天色小偷源代码
要做一位好的小偷有点难度:P天真使用XMLHTTP组件你也能够做“小偷”
这里所说的“小偷”指的是在ASP中使用XML中的XMLHTTP组件供应的壮大功效,
把远程网站上的数据(图片,网页及其他文件)抓取到当地,经由各类处置后显现到页面上大概存储进数据库的一类程序。
你能够经由过程这类小偷程序,完成已往一些仿佛完整不成能完成的义务,好比说把某个站的页面移花接木后酿成本人的页面,大概把某个站的一些数据(文章,图片)保留到当地数据库中加以使用。
“小偷”的长处有:不必保护网站,由于小偷程序中的数据来自其他网站,它将跟着该网站的更新而更新;
能够节俭大批的服务器资本,一样平常小偷程序就几个文件,一切网页内容都是来自其他网站。
弱点在于:不不乱,假如方针网站堕落,程序也会堕落,并且,假如方针网站举行晋级保护,那末小偷程序也要举行响应修正;
速率,由于是远程挪用,速率和在当地服务器上读取数据比起来,一定要慢一些。
怎样,听起来很奇妙吧?我们如今就入手下手来进修一些“小偷”程序的进门常识吧!
我们拿个复杂点的器材来研讨一下吧,QQ网站上的天色预告程序
程序演示地点:http://www.gtocn.com/tianqi.asp
源码下载:http://www.gtocn.com/tianqi.txt
代码以下:
<%
OnErrorResumeNext
Server.ScriptTimeOut=9999999
FunctiongetHTTPPage(Path)
t=GetBody(Path)
getHTTPPage=BytesToBstr(t,"GB2312")
Endfunction
起首,举行小偷程序的一些初始化设置,以上代码的感化分离是疏忽失落一切非致命性毛病,把小偷程序的运转超不时间设置得很长(如许不会呈现运转超时的毛病),转换本来默许的UTF-8编码转换成GB2312编码,不然间接用XMLHTTP组件挪用有中笔墨符的网页失掉的将是乱码。
FunctionGetBody(url)
onerrorresumenext
SetRetrieval=CreateObject("Microsoft.XMLHTTP")
WithRetrieval
.Open"Get",url,False,"",""
.Send
GetBody=.ResponseBody
EndWith
SetRetrieval=Nothing
EndFunction
然后挪用XMLHTTP组件创立一个工具并举行初始化设置。
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
FunctionNewstring(wstr,strng)
Newstring=Instr(lcase(wstr),lcase(strng))
ifNewstring<=0thenNewstring=Len(wstr)
EndFunction
处置抓取返来的数据必要挪用adodb.stream组件并举行初始化设置。%>
以下即为页面显现部分
<%
Dimwstr,str,url,start,over,city
界说一些必要利用到的变量
city=Request.QueryString("id")
程序传回的ID变量(即用户选择的乡村)赋给id
url="http://appnews.qq.com/cgi-bin/news_qq_search?city=";&city&""
这里设置必要抓取的页面地点,固然你也能够间接指定某个地点而不利用变量
wstr=getHTTPPage(url)
猎取指定页面的全体数据
start=Newstring(wstr,"<html>")
这里设置必要处置的数据的头部,这个变量应视分歧情形而设置,详细内容能够经由过程检察必要抓取的页面的源代码来断定。
由于在这个程序里我们必要抓取全部页面,以是设置为页面全体抓取。注重,设置的内容必需是页面内容独一的,不成以反复。
over=Newstring(wstr,"</HTML>")
和start绝对应的就是必要处置的数据的尾部,一样的,设置的内容必需是页面中独一的。
body=mid(wstr,start,over-start)
设置显现页面的局限
上面就是动用天地移动年夜法的时分了,经由过程replace能够用一些字符交换失落数据中指定的字符。
body=replace(body,"skin1","天色预告-斯克收集")
body=replace(body,"http://appnews.qq.com/cgi-bin/news_qq_search?city";,"tianqi.asp?id")
本程序中已完成了交换的事情,假如有其他必要的话能够持续举行相似的交换操纵。
response.writebody
%>
交换完必要修正的内容后,就能够把修正的内容显现在页面上了。至此程序停止
程序利用办法及了局:把上述代码往失落申明部分后保留为tianqi.asp,上传到撑持ASP和XML的空间下,在扫瞄器中运转便可。
你能够在在这个程序的基本长进行进一步的界面丑化大概程序优化。
以上只是一些关于XMLHTTP组件的低级使用,实践上它还能完成的功效另有良多,好比说保留远程图片到当地服务器上,共同adodb.stream组件能够把猎取来的数据保留进数据库。小偷的感化和利用局限都很广。可是不成以拿来做守法的事哦!
大概另有人要问了,这类“小偷”程序岂非只是ASP的专利吗?非也,PHP经由过程fopen函数一样能够完成一样的效果,因为PHP自己的各类特性,写出来的小偷程序和ASP比拟,在体积和实行效力上都有者分明的上风,但限于篇幅,这里就纷歧一申明了。
神鹰V霸主
献给进修小偷程序的伴侣
好久没写过器材了,明天看了chinahuman的《用asp主动剖析网页中的图片地点,并将其保留到当地服务器》,因而优化了这个程序,而且将一切的功效都函数化了,但愿对进修XMLHTTP的伴侣有所匡助。
程序完成功效:主动将远程页面的文件中的图片下载到当地。
<%
将本文保留为save2local.asp
测试:save2local.asp?url=http://ent.sina.com.cn/s/m/2003-11-11/1411231388.html
本文依据chinahuman的《用asp主动剖析网页中的图片地点,并将其保留到当地服务器》改编和优化
主动创立目次,主动将原文件名改名,文件格局的限定和其他功效的一些优化
主动保留网页文件中http://....格局的图片到当地
转载请说明出处:http://www.jaron.cnhttp://www.csdn.net/develop
参数设置入手下手
url=request("url")
localaddr=server.MapPath("images_remote/")保留到当地的目次
localdir="images_remote/"http会见的绝对路径
AllowFileExt="jpg|bmp|png|gif"撑持的文件名格局
参数设置终了
ifcreatedir(localaddr)=falsethen
response.Write"创立目次失利,请反省目次权限"
response.End
endif
response.WriteConvert2LocalAddr(url,localaddr,localdir)
functionConvert2LocalAddr(url,localaddr,localdir)
参数申明
url页面地点
localaddr保留当地的物理地点
localdir绝对路径
strContent=getHTTPPage(url)
SetobjRegExp=NewRegexp
objRegExp.IgnoreCase=True
objRegExp.Global=True
objRegExp.Pattern="
<metaname="ProgId"content="FrontPage.Editor.Document">
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<metahttp-equiv="refresh"content="3600">
<title></title>
</head>
<body>
<%
Functionbytes2BSTR(vIn)
strReturn=""
Fori=1ToLenB(vIn)
ThisCharCode=AscB(MidB(vIn,i,1))
IfThisCharCode<&H80Then
strReturn=strReturn&Chr(ThisCharCode)
Else
NextCharCode=AscB(MidB(vIn,i+1,1))
strReturn=strReturn&Chr(CLng(ThisCharCode)*&H100+CInt(NextCharCode))
i=i+1
EndIf
Next
bytes2BSTR=strReturn
EndFunction
Url="http://www.linkmm.com/photo/ads2.html";;;
setoSend=createobject("Microsoft.XMLHTTP")
SourceCode=oSend.open("GET",url,false)
oSend.send()
iferr.number0then
Response.writeerr.description
Response.End()
endif
SourceCode=bytes2BSTR(oSend.responseBody)
baseurl1="http://www.linkmm.com/photo";;;
SourceCode=replace(sourcecode,"src=""img/","src=""http://www.linkmm.com/photo/img/";;;)
SourceCode=replace(sourcecode,"new.gif",baseurl1&"/new.gif")
SourceCode=replace(sourcecode,"href=""photo888","href=""http://www.linkmm.com/photo/photo888";;;)
SourceCode=replace(sourcecode,"site.CSS","http://www.linkmm.com/photo/site.css";;;)
response.writeSourceCode
%>
</body>
</html>只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天 |
|