Seite 1 von 1
WebGadget: HTML aus Frame auslesen?
Verfasst: 26.05.2008 00:45
von Blu-Ray
Hallo,
ich möchte gerne den HTML-Quelltext aus einem WebGadget auslesen. Leider benutzt die Seite Frames. Wenn ich aus der Frame-Seite den Quelltext nehme und die Unterseiten selbst aufrufe, komme ich wieder auf die Index-Seite zurück. Es existiert also ein Schutz dagegen, die Seiten zweimal aufzurufen.
Wie kann ich jetzt den HTML-Text aus einem Frame auslesen, ohne den Frame einzeln neu laden zu müssen? Geht das irgendwie über den Cache?
Danke im Voraus,
Blu-Ray
Verfasst: 26.05.2008 01:34
von AND51
Wird anscheinend mit JavaScript geschützt, sodass du per JavaScript wieder auf die Hauptseite umgeleitet wirst, wenn du die Unterseite direkt aufrufst.
Hast du die URL des Frames? Diese kannst du ganz einfach mit ReceiveHTTPFile() downloaden.
Verfasst: 26.05.2008 14:36
von Blu-Ray
Das sind CGI-Dateien, die mich umleiten. Aber ich werde die Funktion nachher mal ausprobieren.
Verfasst: 30.05.2008 15:05
von Blu-Ray
Leider funktioniert das nicht

Ich bekomme wieder die Index-Page
Gibt es noch eine andere möglichkeit?
Verfasst: 30.05.2008 19:47
von FGK
@Blu-Ray
Zugriff auf diese Inhalte sind möglich, aber nicht über den Cache. Du mußt über das DOM-Object des WebGadget gehen. Den Einstieg dazu bekommst du über
Code: Alles auswählen
Gadget.IWebBrowser2=GetWindowLong_(GadgetID(WebGadget),#GWL_USERDATA)
Dann gehst du über die Interfaces Document und Framecollection.
Ich hab so was für meinen Browsergame-Bot gemacht. Um Ehrlich zu sein
wenn dir aber schon die Sache mit der
Tab und Del Taste im Webgadget
zu aufwändig war, sieht es hier keines Falls besser aus was den nötigen "Einsatz" betrifft.
Was hast du denn vor?
Gruß FGK
Verfasst: 03.06.2008 15:47
von Blu-Ray
Hi. Erstmal sry, dass ich erst jetzt antworte.
Es gibt so ein OnlineGame (
www.drogendealer.de), bei dem man, wie der Name schon sagt, Drogen dealen muss. Dabei gibt es auch Ermittler, die einem entweder das Geld bzw. die Drogen wegnehmen. Deshalb möchte ich den HTML-Inhalt des Frames haben, um den Namen zu parsen und mit den in einer Datenbank gespeicherten Namen abgleichen.
Verfasst: 03.06.2008 19:19
von FGK
Aha also eine Art Tool zum cheaten *ggg
Ok und wie weit sind deine Ansätze?
Verfasst: 03.06.2008 21:56
von Blu-Ray
Die Datenbankverbindung und die GUI stehen schon, sowie die Administration. Jetzt brauche ich nur noch den HTML-Quelltext des Frames. Den Rest schaffe ich schon alleine.

Verfasst: 08.06.2008 17:24
von Blu-Ray
@FGK: Wie bekomm ich jetzt den Sourcecode über DOM? Sry. Bin noch Noob.
Verfasst: 10.06.2008 20:08
von FGK
@Blu-Ray
Das ist ein Auschnitt aus meinem Browsergame Tool. Hab mir
das aus Schnipseln hier im Forum zusammen gebastelt.
Code: Alles auswählen
Procedure.s GetHTML_Document(WebGadget.l,UrlSuchString.s)
Shared HTMLDocument.IHTMLDocument2
Protected varReturn.VARIANT
Protected URL.s
If HTMLDocument
HTMLDocument\Release()
HTMLDocument = 0
EndIf
Gadget.IWebBrowser2=GetWindowLong_(GadgetID(WebGadget),#GWL_USERDATA)
If Gadget\get_Document(@Doc1.IDispatch) = #S_OK And Doc1
Doc1\QueryInterface(?IID_IHTMLDocument2,@HTMLDocument.IHTMLDocument2)
If HTMLDocument\get_frames(@FrameCollection.IHTMLFramesCollection2) = #S_OK
If FrameCollection\get_length(@FrameCount) = #S_OK
If FrameCount > 0
For index = 0 To FrameCount-1
varIndex.VARIANT\vt = #VT_UINT
varIndex\lVal = index
If FrameCollection\item(varIndex, varReturn) = #S_OK
If varReturn\pdispVal\QueryInterface(?IID_IHTMLWindow2, @HTMLWindow.IHTMLWindow2) = #S_OK
HTMLWindow\get_Document(@Doc2.IDispatch)
If Doc2\QueryInterface(?IID_IHTMLDocument2,@FrameDocument.IHTMLDocument2) = #S_OK
If FrameDocument\get_URL(@bstr) = #S_OK And bstr
URL = PeekS(bstr, -1, #PB_Unicode)
SysFreeString_(bstr)
If FindString(URL,UrlSuchString,1) ; Wir haben unsern Frame gefunden
HTMLDocument\Release()
HTMLDocument=FrameDocument
Doc2\Release()
Break
Else
URL.s=""
EndIf
EndIf
FrameDocument\Release()
EndIf
Doc2\Release()
EndIf
HTMLWindow\Release()
EndIf
Next
FrameCollection\Release()
Else
;Keine Frames - Direktes Document
If HTMLDocument\get_URL(@bstr) = #S_OK And bstr
URL = PeekS(bstr, -1, #PB_Unicode)
SysFreeString_(bstr)
EndIf
EndIf
EndIf
FrameCollection\Release()
Else
;Keine Framecollection - Direktes Document
If HTMLDocument\get_URL(@bstr) = #S_OK And bstr
URL = PeekS(bstr, -1, #PB_Unicode)
SysFreeString_(bstr)
EndIf
EndIf
Doc1\Release()
EndIf
ProcedureReturn URL
EndProcedure
Damit hast du in der Variable HTMLDocument die Möglichkeit
auf die Interfaces des DOM zuzugreifen und auf die Inhalte der
Seite. Zur Ermittlung welcher der Frames der richtige ist mußt du
einen eindeutigen Teil der URL des Frames übergeben.
Gruß FGK