Laden Sie alle Inhalte auf einmal auf eine Remote-Seite herunter
Speichern Sie zur Verwendung den obigen Code als Datei wie: downfile.asp
Geben Sie in Ihrem Browser Folgendes ein:
http://Ihre Adresse/downfile.asp?url=http://www.baidu.com/index.html
<% „Stellen Sie das Timeout ein.“ Server.ScriptTimeout=9999 '############## 'Dateispeicherfunktion '############# Funktion SaveToFile(from,tofile) Bei Fehler als nächstes fortfahren dim geturl,objStream,imgs geturl=trimmen(von) Mybyval=getHTTPstr(geturl) Setze objStream = Server.CreateObject(ADODB.Stream) objStream.Type =1 objStream.Open objstream.write Mybyval objstream.SaveToFile tofile,2 objstream.Close() setze objstream=nichts Wenn err.number<>0, dann err.Clear Endfunktion '############## „Ersetzung der Zeichenverarbeitung '############# Funktion geturlencodel(byval url)'Konvertierung chinesischer Dateinamen Dim i,code geturlencodel= Wenn trim(Url)=, dann beenden Sie die Funktion für i=1 bis len(URL) code=Asc(mid(Url,i,1)) Wenn Code<0, dann ist Code = Code + 65536 Wenn Code>255, dann geturlencodel=geturlencodel&%&Left(Hex(Code),2)&%&Right(Hex(Code),2) anders geturlencodel=geturlencodel&mid(Url,i,1) Ende wenn nächste Endfunktion '############## 'XML-Erfassung der Remote-Seite beginnt '############# Funktion getHTTPage(url) Bei Fehler als nächstes fortfahren dimmen Sie http set http=Server.createobject(Msxml2.XMLHTTP) Http.open GET,url,false Http.send() Wenn Http.readystate<>4, dann beenden Sie die Funktion getHTTPPage=bytes2BSTR(Http.responseBody) setze http=nichts Wenn err.number<>0, dann err.Clear Endfunktion Funktion bytes2BSTR(vIn) dim strReturn dim i,ThisCharCode,NextCharCode strReturn = Für i = 1 Zu LenB(vIn) ThisCharCode = AscB(MidB(vIn,i,1)) Wenn ThisCharCode < &H80 Dann strReturn = strReturn & Chr(ThisCharCode) Anders NextCharCode = AscB(MidB(vIn,i+1,1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ich = ich + 1 Ende wenn Nächste bytes2BSTR = strReturn Funktion beenden '############## „XML-Erfassung von Remote-Seitenenden.“ Dieser Abschnitt gilt für alle Diebesprogramme. '############# '############## 'Zerlegen Sie die Adresse und erhalten Sie den Dateinamen '############# Funktion getFileName(byval Dateiname) wenn instr(filename,/)>0 dann fileExt_a=split(Dateiname,/) getFileName=lcase(fileExt_a(ubound(fileExt_a))) wenn instr(getFileName,?)>0 dann getFileName=left(getFileName,instr(getFileName,?)-1) Ende wenn anders getFileName=Dateiname Ende wenn Endfunktion '############## 'Remote-Seitenfunktion abrufen '############# Funktion getHTTPstr(URL) Bei Fehler als nächstes fortfahren dimmen Sie http set http=server.createobject(MSXML2.XMLHTTP) Http.open GET,url,false Http.send() Wenn Http.readystate<>4, dann beenden Sie die Funktion getHTTPstr=Http.responseBody setze http=nichts Wenn err.number<>0, dann err.Clear Endfunktion '############## 'FSO-Verarbeitungsfunktion, Verzeichnis erstellen '############# Funktion CreateDIR(ByVal LocalPath) 'Programm zum Erstellen eines Verzeichnisses. Wenn mehrere Verzeichnisebenen vorhanden sind, erstellen Sie diese nacheinander. Bei Fehler Weiter fortsetzen LocalPath = Ersetzen(LocalPath, /, /) Setze FileObject = server.CreateObject(Scripting.FileSystemObject) patharr = Split(LocalPath, /) path_level = UBound(patharr) Für I = 0 bis path_level Wenn I = 0, dann pathtmp = patharr(0) & / Sonst pathtmp = pathtmp & patharr(I) & / cpath = Left(pathtmp, Len(pathtmp) - 1) Wenn nicht, FileObject.FolderExists(cpath), dann FileObject.CreateFolder cpath Nächste Setzen Sie FileObject = Nothing Wenn Err.Number <> 0, dann CreateDIR = Falsch Fehler.Klar Anders CreateDIR = True Ende wenn Funktion beenden Funktion GetfileExt(byval filename) fileExt_a=split(Dateiname,.) GetfileExt=lcase(fileExt_a(ubound(fileExt_a))) Endfunktion '############## „Wie bekomme ich den virtuellen Pfad?“ '############# Funktion getvirtual(str,path,urlhead) wenn left(str,7)=http:// dann url=str elseif left(str,1)=/ then start=instrRev(str,/) wenn start=1 dann URL=/ anders url=left(str,start) Ende wenn url=urlhead&url elseif left(str,3)=../ then str1=mid(str,inStrRev(str,../)+2) ar=split(str,../) lv=ubound(ar)+1 ar=split(pfad,/) URL=/ für i=1 bis (ubound(ar)-lv) url=url&ar(i) nächste url=url&str1 url=urlhead&url anders url=urlhead&str Ende wenn getvirtual=URL Endfunktion |
'Beispielcode
dim dlpath 'Erstellen Sie einen Ordner zum Speichern der erfassten Daten virtual=/downweb/ truepath=server.MapPath(virtuell) if request(url)<> then URL=Anfrage(URL) fn=getFileName(url) urlhead=left(url,(instr(replace(url,//,),/)+1)) urlpath=replace(left(url,instrRev(url,/)),urlhead,) strContent = getHTTPPage(url) mystr=strContent Setze objRegExp = Neuer Regexp objRegExp.IgnoreCase = True objRegExp.Global = True objRegExp.Pattern = (src|href)=.[^/>]+? Set Matches =objRegExp.Execute(strContent) Für jedes Spiel in Spielen str=Match.Value str=replace(str,src=,) str=replace(str,href=,) str=replace(str,,) str=replace(str,',) filename=GetfileName(str) getRet=getVirtual(str,urlpath,urlhead) temp=Replace(getRet,//,**) start=instr(temp,/) endt=instrRev(temp,/)-start+1 wenn start>0 dann repl=virtual&mid(temp,start)& 'response.Write repl&<br> mystr=Replace(mystr,str,repl) dir=mid(temp,start,endt) temp=truepath&Replace(dir,/,/) CreateDir(temp) Antwort. Schreiben Sie getRet&||&temp&filename&<br> Response.Write hat die Datei &Dateiname&<br> erfolgreich abgerufen Antwort.Schreiben und speichern Sie &filename& in &temp&<br><br> Antwort. Schreiben Sie <HR> SaveToFile getRet,temp&filename Ende wenn Nächste set Matches=nothing Ende wenn %> |