Bild runterladen von stooorage.com

  • Also ich bekomme das Bild sofort, Rechtsklick - Grafik anzeigen - auf neue Grafik Rechtsklick - Grafik speichern unter; wo liegt jetzt dein Problm ?!?

    Es soll doch in Autoit automatisiert werden..

  • Ach jetzt weiß ich, warum es in meinem FF reibungslos läuft. Bei mir läuft RefControl, das den Referrer immer auf die aktuelle Domain setzt. Wenn man WinHttp verwendet, muss man als Referrer https://autoit.de/www.stooorage.com angeben und das Bild wird geladen.

  • So. Ich hoffe euch gefällt mein Stooorage.com Downloader. 8)

    Spoiler anzeigen
    [autoit]


    ; - Author: name22 (http://www.autoit.de)

    [/autoit] [autoit][/autoit] [autoit]

    $sInputURL = InputBox("Downloader", "Page URL")
    If @error Then Exit MsgBox(16, "Error", "Invalid URL")

    [/autoit] [autoit][/autoit] [autoit]

    TCPStartup()

    [/autoit] [autoit][/autoit] [autoit]

    $sIP = TCPNameToIP("stooorage.com")

    [/autoit] [autoit][/autoit] [autoit]

    $iSocket = TCPConnect($sIP, 80)
    If @error Then Exit MsgBox(16, "Error", "Unable to connect to Server")

    [/autoit] [autoit][/autoit] [autoit]

    $sRequest = 'GET ' & $sInputURL & ' HTTP/1.1' & @CRLF & _
    'Host: stooorage.com:80' & @CRLF & _
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)' & @CRLF & _
    'Connection: keep-alive' & @CRLF & @CRLF

    [/autoit] [autoit][/autoit] [autoit]

    TCPSend($iSocket, $sRequest)

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $sHTTP_Header = TCPRecv($iSocket, 1)
    Until $sHTTP_Header <> ""
    Do
    $sHTTP_Header &= TCPRecv($iSocket, 1)
    Until StringRight($sHTTP_Header, 4) = @CRLF & @CRLF

    [/autoit] [autoit][/autoit] [autoit]

    $sHTTP_Content = ""
    Do
    $sHTTP_Content &= TCPRecv($iSocket, 1)
    Until StringRight($sHTTP_Content, 7) = "</html>"

    [/autoit] [autoit][/autoit] [autoit]

    $aPictureURL = StringRegExp($sHTTP_Content, '<img src="([^"<>]+?)" alt="', 1)
    If @error Then Exit MsgBox(16, "Error", "Could not find Picture URL.")

    [/autoit] [autoit][/autoit] [autoit]

    $aURLSplit = StringRegExp($aPictureURL[0], 'http://(.+?)(/.+)', 1)

    [/autoit] [autoit][/autoit] [autoit]

    $sIP = TCPNameToIP($aURLSplit[0])

    [/autoit] [autoit][/autoit] [autoit]

    $iSocket = TCPConnect($sIP, 80)
    If @error Then Exit MsgBox(16, "Error", "Unable to connect to Server")

    [/autoit] [autoit][/autoit] [autoit]

    $sRequest = 'GET ' & $aURLSplit[1] & ' HTTP/1.1' & @CRLF & _
    'Host: ' & $aURLSplit[0] & ':80' & @CRLF & _
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)' & @CRLF & _
    'Referer: ' & $sInputURL & @CRLF & _
    'Connection: keep-alive' & @CRLF & @CRLF

    [/autoit] [autoit][/autoit] [autoit]

    TCPSend($iSocket, $sRequest)

    [/autoit] [autoit][/autoit] [autoit]

    $sHTTP_Header = ""
    Do
    $sHTTP_Header = TCPRecv($iSocket, 1)
    Until $sHTTP_Header <> ""
    Do
    $sHTTP_Header &= TCPRecv($iSocket, 1)
    Until StringRight($sHTTP_Header, 4) = @CRLF & @CRLF

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite($sHTTP_Header)

    [/autoit] [autoit][/autoit] [autoit]

    $aContentLength = StringRegExp($sHTTP_Header, 'Content-Length: (\d+)', 1)
    If @error Then Exit MsgBox(16, "Error", "FileSize Error.")

    [/autoit] [autoit][/autoit] [autoit]

    $bContent = "0x"
    Do
    $bContent &= StringTrimLeft(TCPRecv($iSocket, 1024, 1), 2)
    Until BinaryLen($bContent) = $aContentLength[0]

    [/autoit] [autoit][/autoit] [autoit]

    $iFile = FileOpen(@ScriptDir & "\Download.jpg", 18)
    FileWrite($iFile, $bContent)
    FileClose($iFile)

    [/autoit] [autoit][/autoit] [autoit]

    TCPCloseSocket($iSocket)
    TCPShutdown()

    [/autoit]
  • Zitat

    Aber das sieht sehr kompliziert aus :D


    Das ist eigentlich gar nicht so schwer. Mein Script macht im grunde nur das, was normalerweise der Firefox oder IE macht, nur stark vereinfacht. ;) Wenn man sich ein bisschen mit HTTP auskennt, dann ist das schon wesentlich verständlicher ^^.


  • Das ist eigentlich gar nicht so schwer. Mein Script macht im grunde nur das, was normalerweise der Firefox oder IE macht, nur stark vereinfacht. ;) Wenn man sich ein bisschen mit HTTP auskennt, dann ist das schon wesentlich verständlicher ^^.


    Mit WinHTTP auch so:

    Spoiler anzeigen
    [autoit]

    #include<WinHTTP.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $sImage = "/show/864/3238190_crash-test-dummy.jpg"
    ; Ziel: Desktop -> Originaldateiname

    [/autoit] [autoit][/autoit] [autoit]

    $hInternet = _WinHttpOpen()

    [/autoit] [autoit][/autoit] [autoit]

    $hConnect = _WinHttpConnect($hInternet, "www.stooorage.com")
    $sRes = _WinHttpSimpleRequest($hConnect, "GET", $sImage)
    _WinHttpCloseHandle($hConnect)

    [/autoit] [autoit][/autoit] [autoit]

    $aRes = StringRegExp($sRes, '<img src="http://([^/]+)([^"]+)" alt="([^"]*)', 1)
    ;~ MsgBox(0, '', $aRes[0] & $aRes[1])

    [/autoit] [autoit][/autoit] [autoit]

    $hConnect = _WinHttpConnect($hInternet, $aRes[0])
    $bImg = _WinHttpSimpleRequest($hConnect, "GET", $aRes[1], 'www.stooorage.com', Default, Default, Default, 2)
    _WinHttpCloseHandle($hConnect)

    [/autoit] [autoit][/autoit] [autoit]

    $hFile = FileOpen(@DesktopDir & "\" & $aRes[2], 18)
    FileWrite($hFile, $bImg)
    FileClose($hFile)

    [/autoit] [autoit][/autoit] [autoit]

    _WinHttpCloseHandle($hInternet)

    [/autoit]
  • @progandy Ich arbeite lieber direkt mit TCP weil ich dann genau weiß was passiert (ich hab das am Anfang so gemacht um den Umgang mit HTTP zu lernen). ^^
    Ansonsten ist progandys Script natürlich einfacher zu verstehen und vermutlich auch geringfügig schneller (wobei das eh von der Internetverbindung abhängt). :S