PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Quellcode weiterverarbeiten?



Planxty
01.02.2009, 19:24
Hey ich hab auch seit längerem mal wieder ne frage ;-)
unzwar habe ich eine seite bei der will ich ne anticatcha basteln.
da hab ich mir den Quellcode angeguckt und bemerkt das es nur ca 20 verschiedene Links für die captchas gibt.
Nun will ich aus dem Quellcode der anmelden seite unter der id "captcha" und da src="..." den Link als Variable o.ä. Speichern und dann 20 If URL= ... Then Capcha.TExt = ... machen
solangs nicht mehr sind denke ich mal die einfachste Variante nur leider weiß ich nicht wie ich an den Link der hinter dem src=" steht rankomme (selbstverständlich im Prog und nicht mit rechtsklick Quelltextanzeigen :-D)

hoffe mal das jemand mir Helfen kann ;)

Mfg Planxty

Edit: kommt schon iwer muss das doch wissen...

Toastbrot
15.02.2009, 13:32
Da es hier immernoch keine Antwort gibt, so kommst du an den Quelltext:



Url = "Deine URL"
Dim Request As HttpWebRequest = CType(WebRequest.Create(Split(Url, "?")(0)), HttpWebRequest)

Request.CookieContainer() = DeinCookieContainer '(Falls benötigt)
Request.Method = "POST"
Request.Timeout = 12000
Request.ContentType = "application/x-www-form-urlencoded"

Dim Post As String = Split(Url, "?")(1)
Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
Request.ContentLength = byteArray.Length
Dim DataStream As Stream = Request.GetRequestStream()
DataStream.Write(byteArray, 0, byteArray.Length)
DataStream.Close()

Dim Response As HttpWebResponse = Request.GetResponse()
DataStream = Response.GetResponseStream()
Dim reader As New StreamReader(DataStream)
Dim ServerResponse As String = reader.ReadToEnd()
reader.Close()
DataStream.Close()
Response.Close()
Return ServerResponse


Diese Funktion schickt eine Request an die angegebene URL und erhält eine Response (der Quelltext) zurück.
An die URL kommst du dann mit der Split() Anweisung (die musst du auf den Quelltext zuschneiden)
Danach - wenn du also die URL hast - kannst du diese mit Select Case oder mehreren If Anweisungen auswerten (in deinem Fall mit 20 Captchas wäre Select case wohl sinnvoller).

Ich hoffe mal ich hab dich richtig verstanden^^

MfG

Planxty
18.02.2009, 16:23
sry das ich erst so spät Antworte :-P
also 100% klappts bisher noch nicht:

Dim Post As String = Split(Url, "?")(1)
bei ? wonach ich suche (ID der Capture)
1 hab ich zu 0 gemacht, da sonst das außerhalb des Arraybereichs war

nur mein Problem ist, wie komme ich nun an das geteilte ran?
Theoretisch wärs ja der String Post, aber ich hab ihn zum Testen mal in ne Txt box schreiben lassen und da kommt nix an...

Toastbrot
18.02.2009, 20:49
Also ich glaub du hast den Sinn von diesem Split nicht richtig verstanden.

Die Funktion erwartet eine URL mit GET Parametern, also in diesem Format:

www.example.de/index.php?a=1&b=2

Die URL ist alles was vor dem ? steht, also


www.example.de/index.php

Die Parameter dementsprechend alles was danach kommt, also:


a=1&b=2

Wenn du nur das Captcha der Seite haben willst, kann es natürlich sein, dass du garkeine Parameter hast. In diesem Fall musst du die Funktion ein wenig abändern. Die Funktion sollte dir einfach nur den Quellcode zurückgeben.

Wenn du es nicht schaffst, hier gibts noch ne andere Funktion die den Quelltext ausliest, der Rest ist ja vom Prinzip her gleich:

http://www.vbarchiv.net/forum/read.php?id=22&t=48336&i=48336&v=f

MfG

Planxty
19.02.2009, 14:28
Meine Capture hat ein Parameter, aber die anmeldeseite ansich nicht.

ich hab nachdem ich mit deiner Variante nicht weitergekommen bin einfahc mal die von der Seite Ausprobiert



Dim myWebClient As New Net.WebClient
Dim Quelltext As String = myWebClient.DownloadString( _
"http://www.example.de/Anmelden.html")
Dim QT As String = Quelltext.Substring(0, Quelltext.IndexOf("<!-- HT1 ENDE -->"))
TextBox1.Text = QT
"<!-- HT1 ENDE -->" steht sehr weit unten im Quelltext und da dachte ich mir erstmal alles Anzeigen zu lassen. Es hat auch recht gut geklapp an sich Zeigt er viel an, aber das wesentliche natürlich nciht^^ Alle Felder und auch die Capture werden dort nicht angezeigt, der rest aber schon. Woran könnte das denn liegen?

Toastbrot
19.02.2009, 15:14
Dafür müsstest du mir mal die URL von der Seite oder den Quelltext geben ;)
Meinst du, dass nach der Split Funktion nicht das gewünschte (also die URL zum Captcha) angezeigt wird, oder bereits vorher?

Planxty
19.02.2009, 17:19
Bereits voher
Da die Split funktion neu für mich war wäre das ja auch zu einfahc gewesen :-P
nein So wie oben im Code hab ichs gemacht mehr war da nciht dran und in der Textbox stand dann auch ein großteil des Quellcodes drin, nur nicht der von der Captcha, den Namen, Alter und was da es sonst noch so gibt.

Toastbrot
20.02.2009, 12:49
Danke für die URL,

also ich gehe jetzt mal davon aus, dass du den Quelltext hast. (Hat bei mir ohne Probleme funktioniert mit der Funktion)
Splitten tust du dann folgendermaßen:


CaptchaID = Split(Split(Source,"?cid=")(1),"""")(0)
So solltest du ohne Probleme ans Captcha kommen.

"""" entspricht dem Zeichen ", ist ein bisschen aufwendiger in VB zu escapen^^


MfG

Problem gelöst, Thread daher closed - Problem war ein Rechtscheibfehler in der URL