Dynamisches Bild Runterladen?

  • Hallo, möchte mich automatisch auf eine Seite einloggen, das Problem ist halt das es eine Sicherheitabfrage kommt, wo den Code eingeben muss der in einen Bild generiert wurde.

    Das bild kann man sich zwar runterladen ist aber immer anderes wie das was schon auf der seite steht, ist ja auch logisch.

    Wie schaffe ich es es das, das Bild was schon im IE zusehen ist runtergeladen wird?

    Der Quelltext der dafür zuständig ist ist das

    Code
    <input type='text' size='5' maxlength='5' name='code'><img src="image.php">

    Adresse: http://www.easybux.de/login.php?r=

    Habe leider auch nichts passendes hier in Forum gefunden.

    Danke und Grüße

    Einmal editiert, zuletzt von devildevil3 (19. April 2008 um 17:23)

  • Praktisch das selbe was ich hatte, das Bild was geladen wird ist ja anders wie das was in ie angezeigt wird (Wird bei jeden Aufruf ein neues generiert)

    [autoit]

    $oIE=_IECreate("http://www.easybux.de/login.php?r=")

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

    $Bildcode=InetGet("http://www.easybux.de/image.php", @ScriptDir&"\Bildcode.jpg" ,0,0)
    sleep(2000)
    run("Readcode.bat")
    sleep(5000)
    $readcode=ClipGet()
    MsgBox(0,"",$readcode)


    ;----------------------------------------------------------------
    $LOGIN = _IEFormGetCollection ($oIE, 0);Holt die Bereiche
    sleep(1000)
    $USERFELD = _IEFormElementGetObjByName($LOGIN, "username");Findet das Userfeld
    $PassFELD = _IEFormElementGetObjByName($LOGIN, "password");Findet das Userfeld
    $code = _IEFormElementGetObjByName($LOGIN, "code");Findet das Userfeld

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

    _IEFormElementSetValue ($USERFELD, $zahl1);fügt Username ein
    _IEFormElementSetValue ($PassFELD, $zahl2);fügt Passwort ein
    _IEFormElementSetValue ($code, $readcode)

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Aufwändig...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <IE.au3>
    #include<ClipBoard.au3>
    #include<GDIPlus.au3>
    #include<Winapi.au3>
    MsgBox(0,"","Um das Bild zu holen, wird lieder die Zwischenablage gelöscht.")
    #region - GUI Create
    GUICreate('The IMG')
    $oie = _IECreateEmbedded()
    $ie = GUICtrlCreateObj($oie,10,10,100,50)
    GUICtrlSetState(-1,$GUI_HIDE)
    _IENavigate($oie,"http://www.easybux.de/login.php?r=")

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

    ;get the Image:
    _GDIPlus_Startup()
    $form = _IEFormGetCollection($oie,0)
    $code = _IEFormElementGetObjByName($form,"code")
    $r = $oie.document.body.createControlRange()
    $x = $code.parentNode.childNodes.item(1)
    $r.add($x)
    $r.select()
    $r.execCommand('Copy')
    Sleep(500)
    _ClipBoard_Open(0)
    $z = _ClipBoard_GetDataEx($CF_BITMAP)
    $y = _GDIPlus_BitmapCreateFromHBITMAP($z)
    _ClipBoard_Close()
    FileDelete(@TempDir&"\code2434.bmp")
    _GDIPlus_ImageSaveToFile($y,@TempDir&"\code2434.bmp")

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

    ;Show Image in GUI
    $Img = GUICtrlCreatePic(@TempDir&"\code2434.bmp",10,20,_GDIPlus_ImageGetWidth($y),_GDIPlus_ImageGetHeight($y))

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

    _GDIPlus_BitmapDispose($y)
    $x = ""
    _GDIPlus_Shutdown()
    ;End Get Image

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

    GUISetState()
    #endregion

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

    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    #endregion

    [/autoit]
  • oh man, ist ja echt aufwendig

    aber wie baue ich es um, so das der ie geöffnet wird, es soll sich ja automatisch angemeldet werden, sprich username, Passwort, Bildcode=> soll runtergeladen werden, und gelesen werden(lesen etc kein Problem) Deswegen muss da ie mit aufgehen

  • Um nen externen IE zu öffnen, schreibb statt

    Spoiler anzeigen
    [autoit]

    $oie = _IECreateEmbedded()
    $ie = GUICtrlCreateObj($oie,10,10,100,50)
    GUICtrlSetState(-1,$GUI_HIDE)
    _IENavigate($oie,"http://www.easybux.de/login.php?r=")

    [/autoit]
    [autoit]

    $oie = _IECreate("http://www.easybux.de/login.php?r=")

    [/autoit]
  • Hi, habe eben das Thema gefunden

    wie Funktiniert das wenn ich das als Quellcode habe

    Brauche praktisch das Captcha was angezeigt wird, finde mich leider in das obige Script leider nciht zurecht

  • Also, könnte gehen, wenn du
    $x = _IEGetObjById($oIE,"captchaImage")
    verwendest. Also Zeile 19-22 ersetzen. Da wird immer das benötigte Feld geholt :)

  • Ok im grunde brauch ich nur zeile 20 anpassen
    also statt
    $code = _IEFormElementGetObjByName($form,"code")
    jetzt
    $code=_IEGetObjById($oIE,"captchaImage")

    oder irre ich da :S

  • Nein das geht nicht so. Ja du irrst dich :) . Du musst Zeile 19-22 löschen und die von mir gepostete einfügen. Im anderen Quellcode hatte das Bild keinen Namen / keine ID, sodass man da so nen WorkAround machen musste. Hier gibt es aber eine ID, daher geht es direkt mit
    $x = _IEGetObjById($oIE,"captchaImage")

  • Ok habs angepasst
    eine frage noch, fals ich den code falsch ermittle, wie passe ich die folgende seite ab

    Code
    <td width="162" valign="top"><div align="right"><img src="http://s1.jappy.tv/i/d/mf.gif" width="152" height="61"></div></td>
          <td valign="top">
            <div class="pof"><div style="padding:10px;">  Der eingegebene Code ist falsch.<br>
            </div></div>
          </td>
        </tr>
    </table>

    Irgendwas mit "if" aber welcher Befehl wäre da angebracht?

    grüße

    Einmal editiert, zuletzt von Pinguin (12. Mai 2008 um 20:16)

  • So was :
    _IELoadWait($oIE)
    StringinStr(_IEBodyReadHTML($oIE),"Der eingegebene Code ist falsch.")

  • sorry für doppelpost

    aber wie erreiche ich es, fals er weniger als 4 zeichen zurückgibt nen neues cpatcha läd

    Spoiler anzeigen


    Quelltext

    Code
    <div class="fl" style="width:170px;margin-top:4px;margin-left:6px">
    	<img src="/captcha.php?1214034805" alt="Captcha" id="captchaImage" />
    			<div class="pd5"><a href="javascript:regenerateCaptcha();">Code unlesbar?</a></div>
    		</div>
    	<div class="fl" style="width:25px;padding-top:15px">
    		<img src="http://s1.jappy.tv/i/a/sub/selectplz.gif" alt="Code rechts eingeben"


    mein Script (nur ein teil)

    Spoiler anzeigen
    [autoit]

    if StringLen($code)=4 Then

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

    $Captchafelder = _IEFormGetCollection ($oIE, 0);Holt die Bereiche

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

    $Codefeld = _IEFormElementGetObjByName($Captchafelder, "userCaptchaHash");Findet das TExtfeld


    _IEFormElementSetValue ($Codefeld, $code);fügt text2 ein
    Sleep(2000)

    _IEFormSubmit ($Captchafelder); Sendet den GB


    if StringinStr(_IEBodyReadHTML($oIE),"Der eingegebene Code ist falsch! Versuche es noch einmal.") Then
    $PFADZUCAPTCHAS='D:\Gastebuch\GBAUTO';Dient zur Sicherung des nicht eraknnten Captchas
    FileCopy($PFADZUCAPTCHAS&"\Erkennung\captcha_filtered.png",$PFADZUCAPTCHAS&'\Erkennung\Captchas\'&@YEAR&"-"&@MON&"-"&@MDAY&"-"&@HOUR&"-"&@MIN&"-"&@SEC&'.png')
    FileDelete(@ScriptDir&"\code.jpg")
    call("captcha")


    Else; wenn code keine 4 zeichen ist, gleich neuen holen spart zeit!

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


    $captcha_no_image = _IEGetObjById ($oIE, "captchaImage")
    _IEAction ($oSubmit, "click")
    _IELoadWait ($oIE)
    captcha() ;<= zum nochmailigen bildspeichern und erkeenung starten, geht aber nicht, er ignoriert es und geht statdessen zum nächsten seite über, ielickbytext geht auch nicht

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

    endif

    [/autoit]

    Einmal editiert, zuletzt von Pinguin (21. Juni 2008 um 13:19)