(VB.NET 2.0) - WebControl - Bild auslesen
Griever
- programmiertechnik
Hi.
Gleich vorweg, was ich NICHT will:
Mein ziel:
Ich möchte von einer Webseite ein permanent dynamisch generiertes Bild aus dem WebControl auslesen.
Ich habe Google schon totgesucht, doch alles was ich bisher fand, basierte auf den 2 oben genannten Methoden, welche ich jedoch NICHT verwenden kann, weil das Programm KEINE fenster öffnen wird!
Ein Dateidownload via URL fällt weg, weil dazu noch die Cookie-, Referer- sowie UserAgent-Werte einfach unzureichend sind.
Kurz:
Webseite aufrufen
Webseite fertig geladen
BildXYZ ansprechen
Bild direkt in einer Picturebox anzeigen (Debug!)
Ich hab echt schon das ganze Web durchsucht.
Einen einzigsten Beitrag habe ich gefunden, wo es einer geschafft hat. Aber da war irgendwas mit Speicher auslesen und so. Und (leider) hat der, der es geschafft hat, seinen Code nicht gepostet ...
Ich arbeite mit SharpDevelop 2.2 auf dem .NET-Framework 2.x
Ich hoffe wirklich, dass mir wer helfen kann ...
MFG
Griever
echo $begrüßung;
Versuch doch bitte noch einmal verständlicher zu beschreiben, was du willst.
Ich möchte von einer Webseite ein permanent dynamisch generiertes Bild aus dem WebControl auslesen.
Du hast also eine URL zu einer Webseite oder in deinem Browser eine aufgerufen oder wie muss man sich das vorstellen? Und welche Rolle spielt das WebControl dabei?
Ich habe Google schon totgesucht, doch alles was ich bisher fand, basierte auf den 2 oben genannten Methoden, welche ich jedoch NICHT verwenden kann, weil das Programm KEINE fenster öffnen wird!
Was für ein Programm?
Ein Dateidownload via URL fällt weg, weil dazu noch die Cookie-, Referer- sowie UserAgent-Werte einfach unzureichend sind.
Was bedeutet "unzureichend" konkret? Du weißt aber schon, dass ein Request nichts weiter als ein Stück Text ist, den man auch selbst beliebig zusammenstellen kann?
Webseite aufrufen
Webseite fertig geladen
BildXYZ ansprechen
Bild direkt in einer Picturebox anzeigen (Debug!)
Womit soll denn das Ganze stattfinden?
echo "$verabschiedung $name";
echo $begrüßung;
Versuch doch bitte noch einmal verständlicher zu beschreiben, was du willst.
Ich möchte von einer Webseite ein permanent dynamisch generiertes Bild aus dem WebControl auslesen.
Du hast also eine URL zu einer Webseite oder in deinem Browser eine aufgerufen oder wie muss man sich das vorstellen? Und welche Rolle spielt das WebControl dabei?
Ich habe Google schon totgesucht, doch alles was ich bisher fand, basierte auf den 2 oben genannten Methoden, welche ich jedoch NICHT verwenden kann, weil das Programm KEINE fenster öffnen wird!
Was für ein Programm?
Ein Dateidownload via URL fällt weg, weil dazu noch die Cookie-, Referer- sowie UserAgent-Werte einfach unzureichend sind.
Was bedeutet "unzureichend" konkret? Du weißt aber schon, dass ein Request nichts weiter als ein Stück Text ist, den man auch selbst beliebig zusammenstellen kann?
Webseite aufrufen
Webseite fertig geladen
BildXYZ ansprechen
Bild direkt in einer Picturebox anzeigen (Debug!)
Womit soll denn das Ganze stattfinden?
echo "$verabschiedung $name";
Habe ich doch ausführlich beschrieben: WebBrowser in VB.NET
Übrigens meine ich NICHT das web"Control", Sondern den WebBrowser. (das ist ein Himmelweiter Unterschied zwischen VB.NET in SharpDevelo und VB.NET in Visual Studio!)
Was ich habe:
Größtes Problem ist, dass dieses Bild in einem iFrame angezeigt wird. Sowie ich den Inhalt dieses iFrames direkt anzeigen will, kommt ein leeres Bild zurück.
Es ist also mit Download nicht getan, da ich (trotz ausführlicher Suche) nicht herausfinden konnte, woran der erkennt, ob das Bild separat aufgerufen wird oder nicht mehr im iFrame steckt.
Wenn noch Fragen sein sollten, einfach stellen.
(DrawToBitmap habe ich schon versucht. Durch das iFrame bleibt die Ausgabe weiß ...)
MFG
Griever
echo $begrüßung;
Bitte zitiere in üblicher Weise und nicht im TUFO-Stil.
Habe ich doch ausführlich beschrieben: WebBrowser in VB.NET
Du schriebst WebControl.
Übrigens meine ich NICHT das web"Control", Sondern den WebBrowser. (das ist ein Himmelweiter Unterschied zwischen VB.NET in SharpDevelo und VB.NET in Visual Studio!)
SharpDevelop ist auch nichts weiter als eine Programmierumgebung für .NET. Der WebBrowser heißt unter .NET "WebBrowser" und wird auch im SD nicht anders heißen. Wenn du von WebControl schreibst, musst du davon ausgehen, dass man darunter auch "WebControl" versteht. Und von WebControls gibt es eine ganze Menge.
Was ich habe:
- Eine Webseite, die in dem WebControl aufgerufen wird.
Welches? Oder meinst du wieder WebBrowser?
- IN der Webseite befindet sich ein Bild, welches per PHP dynamisch generiert wird.
Dann hat das Bild also eine URL.
- Dieses bild kann ich NICHT via httpWebResponse und HttpWebRequest herunterladen, da ich dann IMMER ein Leeres bild bekomme, Egal, wie detailliert ich die Header ausfülle. (an Referer und Co. denk ich logischerweise mit)
Hast du die im "normalen" Browser ausgetauschten HTTP-Header analysiert oder probierst du einfach nur so rum?
- Ich möchte direkt das Bild, welches im WebBrowser angezeigt wird, haben. Ohne es neu laden zu müssen oder nen Screenshot machen zu müssen.
Es ist für einen Webserver nicht nachvollziehbar, wer einen Request wirklich stellt, egal ob das ein Browser oder dein selbst gestricktes Programm ist. Der Browser kann nichts anderes machen, als HTTP-Requests abzusetzen. Vielleicht musst du zunächst die Seite anfordern, darin nach der Bild-URL suchen und damit einen zweiten Request erzeugen. Eine Header-Analyse mit Tools wie der livehttpheaders-Extension für den Firefox ist zur Analyse des Request-Response-Spiels sehr hilfreich.
Größtes Problem ist, dass dieses Bild in einem iFrame angezeigt wird. Sowie ich den Inhalt dieses iFrames direkt anzeigen will, kommt ein leeres Bild zurück.
Das macht die Sache nur um einen Request aufwendiger.
echo "$verabschiedung $name";
Hi.
Welches? Oder meinst du wieder WebBrowser?
WebBrowser
- IN der Webseite befindet sich ein Bild, welches per PHP dynamisch generiert wird.
Dann hat das Bild also eine URL.
Ich will das bild NICHT via extra URL erneut herunterladen, da es dann ein anderes Bild ist, als auf der Webseite angezeigt!
Hast du die im "normalen" Browser ausgetauschten HTTP-Header analysiert oder probierst du einfach nur so rum?
Ich will das bild NICHT via extra URL erneut herunterladen, da es dann ein anderes Bild ist, als auf der Webseite angezeigt!
Es ist für einen Webserver nicht nachvollziehbar, wer einen Request wirklich stellt, egal ob das ein Browser oder dein selbst gestricktes Programm ist. Der Browser kann nichts anderes machen, als HTTP-Requests abzusetzen. Vielleicht musst du zunächst die Seite anfordern, darin nach der Bild-URL suchen und damit einen zweiten Request erzeugen. Eine Header-Analyse mit Tools wie der livehttpheaders-Extension für den Firefox ist zur Analyse des Request-Response-Spiels sehr hilfreich.
Ich will das bild NICHT via extra URL erneut herunterladen, da es dann ein anderes Bild ist, als auf der Webseite angezeigt!
Das macht die Sache nur um einen Request aufwendiger.
Ich will das bild NICHT via extra URL erneut herunterladen, da es dann ein anderes Bild ist, als auf der Webseite angezeigt!
MFG
Griever
Ich will das bild NICHT via extra URL erneut herunterladen, da es dann ein anderes Bild ist, als auf der Webseite angezeigt!
Diese Vermutung hatte ich gerade auch schon. (Captchas?) Dann scheiden eben Requests aus. Bleiben
Aber so mit fertigen Code vom Silbertablett naschen, wird's wohl nix.
Und tschüss
Frank
Habe es gelöst.
Lasse den Request einfach das Bild neu runterladen, sende dabei aber SÄMTLICHE Cookie-einträge, Header-Einträge und den (scheinbar erforderlichen) Referer, welchen ich erstmal rausfinden musste.
Nun stehe ich vor dem rieisgen Problem, diese kleine einzelne Zahl darin auszulesen.
das bild besteht aus einem 20x20 pixel großem feld, wo eine Zahl darin steht. Diese ist weder verdreht, noch verzerrt. Nur immer an einer variierenden Position. Jedoch stets voll innerhalb des Feldes
Habe manuell inzwischen die Bitset-Blöcke generieren lassen, um die Struktur der Zahlen zu haben:
11111110
11000000
11000000
11011100
11100110
00000011
00000011
11000011
01100110
00111100
Das wäre die 5 (markanteste Zahl.
Es ist nur eine Zahl von 1 bis 9 drin.
Könnte mir da wer helfen, diese Zahl da rauszufinden?
(ja. es ist ein captcha. jedoch mein eigenes.)
Am besten wär, wenn sich einer bei mir per ICQ: 413-432-780 oder MSN: sebastianschiess@hotmail.de melden würde. Bin quasi immer online. :)
MFG
Griever
Frames kann ich bereits direkt ansprechen und auf das HtmlDocument-Element zugreifen.
webBrowser1.Document.Window.Frames("Framename oder nummer").Document <<<
Ich will lediglich dieses (sorry für den Ausdruck) verdammte Bild haben, was angezeigt wird. OHNE extra Request oder Download ...
MFG
Griever