VBScript Binärdatei http Downloader Dieses WSH-Skript kann eine Datei von einer gegebenen URL herunterladen und auf einem Datenträger mit einem binären Stream speichern. Um den Code in einer ASP-Seite anstelle von WSH zu verwenden, verwenden Sie einfach die Funktionen BinaryGetURL () und SaveBinaryData () und ersetzen CreateObject mit Server. CreateObject. Dim objArgs Dim strurL Dim strFileName Set objArgs WScript. Argumente Wenn objArgs. count 0 Dann Wscript. echo (Syntax: GetBinary URL Zieldateiname amp vbcrlf amp vbcrlf amp Beispiele: amp vbcrlf amp GetBinary serverfolderfile. zip amp vbcrlf amp GetBinary serverdat. zip c : Dlfile. zip amp vbcrlf amp GetBinary serverfile. dat secure. dat amp vbcrlf amp GetBinary servernews. htm d: dataservernews. html) ElseIf objArgs. count 1 Dann strurL objArgs. Item (0) strFileName strURL strFileName Ersetzen (strFileName,,) strFileName Ersetzen (strFileName, amp) StrFileName Ersetzen (strFileName,,) strFileName Ersetzen (strFileName,,) strFileName Right (strFileName, Len (strFileName) - InStrRev (strFileName,)) StrFileName Ersetzen (strFileName, Ersetzen (strFileName,,) End If SaveBinaryData BinaryGetURL (strURL), strFileName ElseIf objArgs. count 2 Dann strURL objArgs. Item (0) strFileName objArgs. Item (1) SaveBinaryData BinaryGetURL (strURL), strFileName Else Wscript. echo (Zu viele Argumente . Wenn ein Pfad Leerzeichen enthält, setzen Sie bitte Anführungszeichen um die Argumente.) Ende Wenn Funktion BinaryGetURL (strURL) Dim objWinHttp Dim lngTimeout Dim strMethod Dim strPostData Dim strUserAgentString Dim intSslErrorIgnoreFlags Dim blnEnableRedirects Dim blnEnableHttpsToHttpRedirects lngTimeout 59000 Millisekunden. strMethod GET strPostData strUserAgentString binarygetter1.0 intSslErrorIgnoreFlags 13056 13056 ignorieren alle irren, akzeptieren 0 kein err blnEnableRedirects Wahre blnEnableHttpsToHttpRedirects True gesetzt objWinHttp Create (WinHttp. WinHttpRequest.5.1) objWinHttp. SetTimeouts lngTimeout, lngTimeout, lngTimeout, lngTimeout objWinHttp. Option (0) strUserAgentString objWinHttp. Option (4) intSslErrorIgnoreFlags objWinHttp. Option (6) blnEnableRedirects objWinHttp. Option (12) blnEnableHttpsToHttpRedirects objWinHttp. Open strMethod, strURL, False Wenn strMethod POST Dann objWinHttp. setRequestHeader Content-type, applicationx-www-form-urlencodiert End If objWinHttp. Sende (strPostData) Wenn (objWinHttp. Status 200) Dann BinaryGetURL objWinHttp. ResponseBody End If Set objWinHttp Nichts Ende Funktion Funktion SaveBinaryData (arrByteArray, strFileName) Wenn VarType (arrByteArray) gt 8192 Dann Dim objBinaryStream Set objBinaryStream CreateObject (ADODB. Stream) objBinaryStream. Typ 1 objBinaryStream. Open () objBinaryStream. Write (arrByteArray) objBinaryStream. SaveToFile strFileName, 2 End If End FunctionVBScript WinHttp. WinHttpRequest.5.1 Beispiel mit Fehlerbehandlung Dieses WSH Beispielskript kann auf (mit HTTP GET oder POST) den texthtmlxml Inhalt eines Gegebene URL. Wenn ein WinHttpRequest-Verbindungszeitlimit oder ein Fehler auftritt oder der Remote-Server mit einem Fehler antwortet, werden die Fehlerdetails anstelle des Inhalts zurückgegeben. Um den Code in einer ASP-Seite anstelle von WSH zu verwenden, ersetzen Sie Wscript. Echo mit Response. Write und CreateObject mit Server. CreateObject. (Siehe auch, wie eine binäre Datei zum Download ein Derivat Version dieses Codes.) Funktion GetDataFromURL (strURL, strMethod, strPostData) Dim lngTimeout Dim strUserAgentString Dim intSslErrorIgnoreFlags Dim blnEnableRedirects Dim blnEnableHttpsToHttpRedirects Dim strHostOverride Dim strLogin Dim strPassword Dim strResponseText Dim objWinHttp lngTimeout 59000 strUserAgentString httprequester0.1 intSslErrorIgnoreFlags 13056 13056: ignorieren alle irren, 0: kein err blnEnableRedirects Wahre blnEnableHttpsToHttpRedirects Wahre strHostOverride strLogin strPassword Set objWinHttp Create (WinHttp. WinHttpRequest.5.1) objWinHttp. SetTimeouts lngTimeout, lngTimeout, lngTimeout, lngTimeout objWinHttp. Open strMethod, strURL Wenn akzeptieren StrMethod POST Dann objWinHttp. setRequestHeader Content-type, applicationx-www-form-urlencodiert Ende Wenn Wenn strHostOverride ltgt Dann objWinHttp. SetRequestHeader Host, strHostOverride End Wenn objWinHttp. Option (0) strUserAgentString objWinHttp. Option (4) intSslErrorIgnoreFlags objWinHttp. Option (6 ) BlnEnableRedirects objWinHttp. Option (12) blnEnableHttpsToHttpRedirects Wenn (strLogin ltgt) Und (strPassword ltgt) Dann objWinHttp. SetCredentials strLogin, strPassword, 0 End If On Error Fortsetzen Weiter objWinHttp. Send (strPostData) If Err. Number 0 Dann Wenn objWinHttp. Status 200 Dann GetDataFromURL objWinHttp. ResponseText Else GetDataFromURL HTTP amp objWinHttp. Status amp amp objWinHttp. StatusText Ende Wenn Else GetDataFromURL Fehler amp Err. Number amp amp Err. Source amp amp Err. Description End If On Error GoTo 0 Set objWinHttp Nichts End FunctionWeb Binary Download Methoden Hier ist die übliche Methode, einen binären Download über HTTP durchzuführen. Es versucht vier verschiedene binäre Download-fähige Objekte und hat zwei separate Methoden zum Speichern der Binär auf Festplatte. Ziemlich kugelsicher: Ich spielte herum und fand andere Wege, wie du das System missbrauchen kannst, um eine binäre Download-WSC-Datei zu machen: Du musst keine WSC-Dateien registrieren. Stattdessen können Sie ihren Standort in Ihrem Skript angeben. Sie können sogar einen HTTP-Speicherort angeben. Die Datei wird automatisch heruntergeladen und endet in deinem IE-Cache. Wenn Sie etwas anderes als eine echte WSC-Datei als Ziel angeben, wird es heruntergeladen und als Skript ausgeführt. Was wird ein Fehler zu werfen, so dass Sie nur den Fehler zu blockieren: Auf Fehler Resume Next GetObject Skript: ericphelpsimagelogo1.gif Der Code oben ist gewöhnlichen VBS-Code. Nichts mit WSC-Dateien zu tun, außer dass die GetObject-Methode mit dem Skript: Protokoll NORMAL verwendet wird, um eine WSC-Datei zu erhalten. Wir benutzen es hier, um etwas anderes zu bekommen. Der oben genannte VBS-Code wird eine Grafik von meiner Webseite herunterladen und in den IE-Cache fallen lassen. Um die Datei im Cache zu lokalisieren, benutze Code wie folgt: Im echten Leben willst du den Cache FIRST durchsuchen, alle gefundenen Spiele löschen und dann die gewünschte Datei herunterladen. Dann was auch immer du im Cache findest, ist sicher, was du willst. WSF-Datei: Wenn du deinen VBS-Code in WSH-Dateien anstelle von VBS-Dateien schreibst, bekommst du noch viel mehr Optionen. Einschließlich, wo man externen Code: ltjobgt ltscript languagevbscript srcericphelpsimagelogo1.gifgt ltjobgt Leider stürzt dies die gesamte WSF-Datei, so müssen Sie Ihre VBS-Datei erstellen oder verwenden Sie eine WSF-Datei wie die oben und führen Sie es mit wsh. Run oder wsh. Exec so wird Ihr Mainline-Code überleben. Versuchen Sie etwas wie dieses VBS-Code: Sein wichtig, dass die wsh. Run mit CSCRIPT. EXE als laufende Engine passieren und dass es mit null als der Fenster-Typ läuft. Wenn die WSF-Datei seinen Fehler auslöst, wenn der Motor wscript war, würde es einen Fehlerdialog aufrufen. Das ist schlecht. Durch die Verwendung der cscript-Engine wird der Fehler nur in der DOS-Box geschrieben. Und indem man den Fenstertyp auf Null setzt, sieht niemand die DOS-Box. Und sicher genug, die Datei logo1.gif würde in Ihrem IE-Cache erscheinen. Wieder einmal, sobald die Datei im Cache ist, verwenden Sie Code ähnlich den SearchInCache - und SearchForFile-Funktionen, die ich oben oben erwähnt habe, um Ihre Datei zu lokalisieren.
No comments:
Post a Comment