ดาวน์โหลดเนื้อหาทั้งหมดบนเพจระยะไกลพร้อมกัน
หากต้องการใช้ ให้บันทึกโค้ดข้างต้นเป็นไฟล์ เช่น downfile.asp
พิมพ์เบราว์เซอร์ของคุณ:
http://your address/downfile.asp?url=http://www.baidu.com/index.html
- 'ตั้งค่าการหมดเวลา Server.ScriptTimeout=9999 - 'ฟังก์ชั่นบันทึกไฟล์' - ฟังก์ชั่น SaveToFile(จาก,tofile) เมื่อเกิดข้อผิดพลาดดำเนินการต่อต่อไป geturl สลัว, objStream, imgs geturl=ตัดแต่ง(จาก) Mybyval=getHTTPstr(geturl) ตั้งค่า objStream = Server.CreateObject(ADODB.Stream) objStream.Type =1 objStream.เปิด objstream.write Mybyval objstream.SaveToFile tofile,2 objstream.ปิด() ตั้งค่า objstream=nothing ถ้า err.number<>0 แล้ว err.Clear ฟังก์ชั่นสิ้นสุด - 'การเปลี่ยนการประมวลผลตัวละคร' - ฟังก์ชั่น geturlencodel (byval url) 'การแปลงชื่อไฟล์ภาษาจีน ติ่มซำโค้ด geturlencodel= ถ้า trim(Url)= ให้ออกจากฟังก์ชัน สำหรับ i=1 ถึง len (Url) รหัส=Asc(กลาง(Url,i,1)) ถ้ารหัส <0 ดังนั้นรหัส = รหัส + 65536 หากรหัส>255 แล้ว geturlencodel=geturlencodel&%&ซ้าย(เลขฐานสิบหก(รหัส),2)&%&ขวา(เลขฐานสิบหก(รหัส),2) อื่น geturlencodel=geturlencodel&กลาง(Url,i,1) สิ้นสุดถ้า ต่อไป ฟังก์ชั่นสิ้นสุด - 'การรับ XML ของเพจระยะไกลเริ่มต้นขึ้น - ฟังก์ชั่น getHTTPage(url) เมื่อเกิดข้อผิดพลาดดำเนินการต่อต่อไป http สลัว ตั้งค่า http=Server.createobject(Msxml2.XMLHTTP) Http.open GET, url, false Http.ส่ง() ถ้า Http.readystate<>4 ให้ออกจากฟังก์ชัน getHTTPPage=bytes2BSTR(Http.responseBody) ตั้งค่า http=nothing ถ้า err.number<>0 แล้ว err.Clear ฟังก์ชั่นสิ้นสุด ฟังก์ชั่น bytes2BSTR(vIn) strReturn สลัว หรี่ฉัน, ThisCharCode, NextCharCode strReturn= สำหรับ i = 1 ถึง LenB(vIn) ThisCharCode = AscB(MidB(vIn,i,1)) ถ้า ThisCharCode < &H80 แล้ว strReturn = strReturn & Chr(ThisCharCode) อื่น NextCharCode = AscB(MidB(vIn,i+1,1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ฉัน = ฉัน + 1 สิ้นสุดถ้า ต่อไป bytes2BSTR = strReturn ฟังก์ชันสิ้นสุด - 'การได้มาซึ่ง XML ของเพจระยะไกลจะสิ้นสุดลง ส่วนนี้เป็นเรื่องปกติสำหรับโปรแกรมของโจรทั้งหมด' - - 'แยกย่อยที่อยู่และรับชื่อไฟล์ - ฟังก์ชั่น getFileName (ชื่อไฟล์ byval) ถ้า instr(ชื่อไฟล์/)>0 แล้ว fileExt_a=split(ชื่อไฟล์,/) getFileName=lcase(fileExt_a(ubound(fileExt_a))) ถ้า instr(getFileName,?)>0 แล้ว getFileName=left(getFileName,instr(getFileName,?)-1) สิ้นสุดถ้า อื่น getFileName=ชื่อไฟล์ สิ้นสุดถ้า ฟังก์ชั่นสิ้นสุด - 'รับฟังก์ชันเพจระยะไกล' - ฟังก์ชั่น getHTTPstr (url) เมื่อเกิดข้อผิดพลาดดำเนินการต่อต่อไป http สลัว ตั้งค่า http=server.createobject(MSXML2.XMLHTTP) Http.open GET, url, false Http.ส่ง() ถ้า Http.readystate<>4 ให้ออกจากฟังก์ชัน getHTTPstr=Http.responseBody ตั้งค่า http=nothing ถ้า err.number<>0 แล้ว err.Clear ฟังก์ชั่นสิ้นสุด - 'ฟังก์ชันการประมวลผล FSO สร้างไดเร็กทอรี' - ฟังก์ชั่น CreateDIR(ByVal LocalPath) 'โปรแกรมสำหรับสร้างไดเร็กทอรี หากมีไดเร็กทอรีหลายระดับ ให้สร้างทีละระดับ เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป LocalPath = แทนที่ (LocalPath, /, /) ตั้งค่า FileObject = server.CreateObject(Scripting.FileSystemObject) patharr = แยก (LocalPath, /) path_level = UBound(พาธาร์) สำหรับ I = 0 ถึง path_level ถ้า I = 0 ดังนั้น pathtmp = patharr(0) & / อื่น ๆ pathtmp = pathtmp & patharr(I) & / cpath = ซ้าย (pathtmp, Len (pathtmp) - 1) ถ้าไม่ใช่ FileObject.FolderExists(cpath) ดังนั้น FileObject.CreateFolder cpath ต่อไป ตั้งค่า FileObject = ไม่มีเลย ถ้า Err.Number <> 0 แล้ว CreateDIR = เท็จ ผิดพลาด.เคลียร์ อื่น CreateDIR = จริง สิ้นสุดถ้า ฟังก์ชันสิ้นสุด ฟังก์ชั่น GetfileExt (ชื่อไฟล์ byval) fileExt_a=split(ชื่อไฟล์,.) GetfileExt=lcase(fileExt_a(ubound(fileExt_a))) ฟังก์ชั่นสิ้นสุด - 'วิธีการรับเส้นทางเสมือน - ฟังก์ชั่น getvirtual (str, เส้นทาง, urlhead) ถ้า left(str,7)=http:// แล้ว URL=str elseif left(str,1)=/ แล้ว เริ่มต้น=instrRev(str,/) ถ้า start=1 แล้ว URL=/ อื่น url=left(str,เริ่มต้น) สิ้นสุดถ้า url=urlhead&url elseif left(str,3)=../ แล้ว str1=กลาง(str,inStrRev(str,../)+2) ar=split(str,../) lv=ubound(ar)+1 ar=แยก(เส้นทาง/) URL=/ สำหรับ i=1 ถึง (ubound(ar)-lv) url=url&ar(i) ต่อไป url=url&str1 url=urlhead&url อื่น url=urlhead&str สิ้นสุดถ้า getvirtual=url ฟังก์ชั่นสิ้นสุด |
'โค้ดตัวอย่าง
dlpath สลัว 'สร้างโฟลเดอร์เพื่อเก็บข้อมูลที่ได้รับ เสมือน=/downweb/ truepath=server.MapPath (เสมือน) ถ้า request(url)<> แล้ว url=คำขอ(URL) fn=getFileName(URL) urlhead=left(url,(instr(แทนที่(url,//,),/)+1)) urlpath=replace(ซ้าย(url,instrRev(url,/)),urlhead,) strContent = getHTTPPage(url) mystr=strContent ตั้งค่า objRegExp = Regexp ใหม่ objRegExp.IgnoreCase = จริง objRegExp.Global = จริง objRegExp.Pattern = (src|href)=.[^/>]+? ตั้งค่าการจับคู่ =objRegExp.Execute(strContent) สำหรับการแข่งขันแต่ละครั้งในการแข่งขัน str=Match.Value str=แทนที่(str,src=,) str=แทนที่(str,href=,) str=แทนที่(str,,) str=แทนที่(str,',) ชื่อไฟล์=GetfileName(str) getRet=getVirtual(str,urlpath,urlhead) temp=แทนที่(getRet,//,**) เริ่มต้น=instr(อุณหภูมิ/) endt=instrRev(อุณหภูมิ/)-เริ่มต้น+1 ถ้าเริ่ม>0 แล้ว repl=เสมือน&กลาง(อุณหภูมิ,เริ่มต้น)& 'response.เขียน repl&<br> mystr=แทนที่(mystr,str,repl) dir=mid(อุณหภูมิ,เริ่มต้น,endt) temp=truepath&แทนที่(dir,/,/) CreateDir(ชั่วคราว) การตอบสนอง เขียน getRet&||&temp&filename&<br> response.Write รับไฟล์ &ชื่อไฟล์&<br> สำเร็จแล้ว การตอบสนอง เขียนและบันทึก &filename& ใน &temp&<br><br> การตอบกลับ เขียน <HR> SaveToFile getRet,temp&ชื่อไฟล์ สิ้นสุดถ้า ต่อไป ตั้งค่าการจับคู่=ไม่มีอะไร สิ้นสุดถ้า - |