怎么一次下载好远程页面上的全部内容?

发布时间:2019-01-02 11:57 来源:互联网 当前栏目:远程桌面

  一次性下载远程页面上的所有内容
  使用方法:将上面的代码保存为一个比如:downfile.asp
  在浏览器上输入:
  //你的地址/downfile.asp?url=//www.baidu.com/index.html
  <%
  '设置超时的时间
  Server.ScriptTimeout=9999
  '##############
  '文件保存函数
  '#############
  functionSaveToFile(from,tofile)
  onerrorresumenext
  dimgeturl,objStream,imgs
  geturl=trim(from)
  Mybyval=getHTTPstr(geturl)
  SetobjStream=Server.CreateObject("ADODB.Stream")
  objStream.Type=1
  objStream.Open
  objstream.writeMybyval
  objstream.SaveToFiletofile,2
  objstream.Close()
  setobjstream=nothing
  iferr.number<>0thenerr.Clear
  endfunction
  '##############
  '字符处理替换
  '#############
  functiongeturlencodel(byvalurl)'中文文件名转换
  Dimi,code
  geturlencodel=""
  iftrim(Url)=""thenexitfunction
  fori=1tolen(Url)
  code=Asc(mid(Url,i,1))
  ifcode<0Thencode=code+65536
  Ifcode>255Then
  geturlencodel=geturlencodel&"%"&Left(Hex(Code),2)&"%"&Right(Hex(Code),2)
  else
  geturlencodel=geturlencodel&mid(Url,i,1)
  endif
  next
  endfunction
  '##############
  'XML获取远程页面开始
  '#############
  functiongetHTTPPage(url)
  onerrorresumenext
  dimhttp
  sethttp=Server.createobject("Msxml2.XMLHTTP")
  Http.open"GET",url,false
  Http.send()
  ifHttp.readystate<>4thenexitfunction
  getHTTPPage=bytes2BSTR(Http.responseBody)
  sethttp=nothing
  iferr.number<>0thenerr.Clear
  endfunction
  Functionbytes2BSTR(vIn)
  dimstrReturn
  dimi,ThisCharCode,NextCharCode
  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
  '##############
  'XML获取远程页面结束,这段是小偷程序都通用的部分
  '#############
  '##############
  '分解地址,取得文件名
  '#############
  functiongetFileName(byvalfilename)
  ifinstr(filename,"/")>0then
  fileExt_a=split(filename,"/")
  getFileName=lcase(fileExt_a(ubound(fileExt_a)))
  ifinstr(getFileName,"?")>0then
  getFileName=left(getFileName,instr(getFileName,"?")-1)
  endif
  else
  getFileName=filename
  endif
  endfunction
  '##############
  '获取远程页面函数
  '#############
  functiongetHTTPstr(url)
  onerrorresumenext
  dimhttp
  sethttp=server.createobject("MSXML2.XMLHTTP")
  Http.open"GET",url,false
  Http.send()
  ifHttp.readystate<>4thenexitfunction
  getHTTPstr=Http.responseBody
  sethttp=nothing
  iferr.number<>0thenerr.Clear
  endfunction
  '##############
  'FSO处理函数,创建目录
  '#############
  FunctionCreateDIR(ByValLocalPath)'建立目录的程序,如果有多级目录,则一级一级的创建
  OnErrorResumeNext
  LocalPath=Replace(LocalPath,"\","/")
  SetFileObject=server.CreateObject("Scripting.FileSystemObject")
  patharr=Split(LocalPath,"/")
  path_level=UBound(patharr)
  ForI=0Topath_level
  IfI=0Thenpathtmp=patharr(0)&"/"Elsepathtmp=pathtmp&patharr(I)&"/"
  cpath=Left(pathtmp,Len(pathtmp)-1)
  IfNotFileObject.FolderExists(cpath)ThenFileObject.CreateFoldercpath
  Next
  SetFileObject=Nothing
  IfErr.Number<>0Then
  CreateDIR=False
  Err.Clear
  Else
  CreateDIR=True
  EndIf
  EndFunction
  functionGetfileExt(byvalfilename)
  fileExt_a=split(filename,".")
  GetfileExt=lcase(fileExt_a(ubound(fileExt_a)))
  endfunction
  '##############
  '如何获取虚拟的路径
  '#############
  functiongetvirtual(str,path,urlhead)
  ifleft(str,7)="//"then
  url=str
  elseifleft(str,1)="/"then
  start=instrRev(str,"/")
  ifstart=1then
  url="/"
  else
  url=left(str,start)
  endif
  url=urlhead&url
  elseifleft(str,3)="../"then
  str1=mid(str,inStrRev(str,"../")+2)
  ar=split(str,"../")
  lv=ubound(ar)+1
  ar=split(path,"/")
  url="/"
  fori=1to(ubound(ar)-lv)
  url=url&ar(i)
  next
  url=url&str1
  url=urlhead&url
  else
  url=urlhead&str
  endif
  getvirtual=url
  endfunction
  '示例代码
  dimdlpath
  '建立一个文件夹,以便存放这些获取的数据
  virtual="/downweb/"
  truepath=server.MapPath(virtual)
  ifrequest("url")<>""then
  url=request("url")
  fn=getFileName(url)
  urlhead=left(url,(instr(replace(url,"//",""),"/")+1))
  urlpath=replace(left(url,instrRev(url,"/")),urlhead,"")
  strContent=getHTTPPage(url)
  mystr=strContent
  SetobjRegExp=NewRegexp
  objRegExp.IgnoreCase=True
  objRegExp.Global=True
  objRegExp.Pattern="(src|href)=.[^\>]+?"
  SetMatches=objRegExp.Execute(strContent)
  ForEachMatchinMatches
  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
  ifstart>0then
  repl=virtual&mid(temp,start)&""
  'response.Writerepl&"<br>"
  mystr=Replace(mystr,str,repl)
  dir=mid(temp,start,endt)
  temp=truepath&Replace(dir,"/","\")
  CreateDir(temp)
  response.WritegetRet&"||"&temp&filename&"<br>"
  response.Write"成功取得"&filename&"这个文件<br>"
  response.Write"并将"&filename&"保存在"&temp&"<br><br>"
  response.Write"<HR>"
  SaveToFilegetRet,temp&filename
  endif
  Next
  setMatches=nothing
  endif
  %>
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、