|
You last visited: Today at 10:45
Advertisement
Exception bei Captcha-Eintragung
Discussion on Exception bei Captcha-Eintragung within the .NET Languages forum part of the Coders Den category.
04/16/2016, 14:08
|
#1
|
elite*gold: 0
Join Date: Jul 2012
Posts: 2,327
Received Thanks: 604
|
Exception bei Captcha-Eintragung
Nabend liebe Coder,
versuche mich gerade an ein kleines Mail-Creator-Tool mit C# aber habe Probleme mit dem Captcha.
Sobald ich versuche im Browser das Captcha einzutragen, kriege ich eine NullReference-Meldung. Aber ich verstehe nicht warum und bin nach längerem Googlen auch auf nichts hilfreiches gestoßen.
HTML:
Code:
<input type="text" class="feedback-panel-trigger" value="" name="captchaPanel:captcha-response:textfield" id="idd1" maxlength="50">
C#:
Code:
wB.Document.GetElementById("idd1").SetAttribute("value", "Test");
Bei allen anderen Elementen funktioniert es genau so, nur nicht beim Captcha. Würde mich freuen, wenn mir jemand dabei helfen kann.
Cheers
|
|
|
04/16/2016, 14:43
|
#2
|
elite*gold: 1472
Join Date: Jun 2014
Posts: 2,663
Received Thanks: 541
|
Warum denn mit nem Webbrowser?
Willst du das Captcha in einer Picturebox abbilden und/oder den Text des Captchas in eine Textbox?
|
|
|
04/16/2016, 14:54
|
#3
|
elite*gold: 0
Join Date: Jul 2012
Posts: 2,327
Received Thanks: 604
|
Das Captcha in eine Picturebox zu laden war kein Problem.
Ich möchte das Registrierungsformular auf der Website ausfüllen lassen. Aber sobald ich irgendetwas in das Textfeld des Captchas schreiben möchte, kriege ich die exception. Aber bei allen anderen Textboxen funktioniert meine Methode.
Achja und den Webbrowser nutze ich, weil mir das am Trivialsten erschien.
|
|
|
04/16/2016, 15:14
|
#4
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
Sicher, dass die ID immer gleich ist beim erneuten Aufruf der Seite? Gibt genug Seiten, bei denen die IDs immer neu generiert werden. Um welche Seite handelt es sich denn?
Würde dir übrigens empfehlen, lieber HttpRequests zu benutzen, statt dem WebBrowser. Ist 1. um ein vielfaches schneller und 2. meiner Meinung nach viel simpler und du musst dich nicht mit solchen IDs rumschlagen.
|
|
|
04/16/2016, 15:28
|
#5
|
elite*gold: 0
Join Date: Jul 2012
Posts: 2,327
Received Thanks: 604
|
Quote:
Originally Posted by Kraizy
Sicher, dass die ID immer gleich ist beim erneuten Aufruf der Seite? Gibt genug Seiten, bei denen die IDs immer neu generiert werden. Um welche Seite handelt es sich denn?
Würde dir übrigens empfehlen, lieber HttpRequests zu benutzen, statt dem WebBrowser. Ist 1. um ein vielfaches schneller und 2. meiner Meinung nach viel simpler und du musst dich nicht mit solchen IDs rumschlagen.
|
Ja die IDs scheinen sich nach Aktualisierung zu ändern. Dennoch füllt mein Programm alle Felder aus (sollte er doch eigentlich garnicht mehr?). Bis auf das des Captchas.
Und ich habe bisher noch nie in C# mit Websites gearbeitet, deswegen danke für den Tipp. HttpRequests ist doch von System.Web vererbt oder nicht? Trotz hinzufügen in die using-Direktive kennt er HttpRequests nicht. Muss ich mir erst irgendein Verweis runterladen?
|
|
|
04/16/2016, 15:29
|
#6
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
|
|
|
04/16/2016, 17:24
|
#7
|
elite*gold: 0
Join Date: Jul 2012
Posts: 2,327
Received Thanks: 604
|
Quote:
Originally Posted by Kraizy
|
Erstmal vielen Dank, das scheint mir auch eine effizientere Methode.
Ich hatte auch grundlegend PHP in der Schule, weswegen ich mit der POST-Methode was anfangen kann aber ich verstehe noch nicht ganz, wie ich das jetzt in C# abschicke bzw. realisiere.
Habe jetzt folgendes dazu gefunden:
Aber ich blick die Vererbungs- also "Legacy"-Methode, die er meint nicht wirklich, kann mir jemand kurz sagen was genau jetzt was macht?
|
|
|
04/17/2016, 20:41
|
#8
|
elite*gold: 0
Join Date: Jul 2012
Posts: 2,327
Received Thanks: 604
|
^
|
|
|
04/17/2016, 21:59
|
#9
|
elite*gold: 0
Join Date: Mar 2016
Posts: 63
Received Thanks: 10
|
Ich würde dir empfehlen den WebClient mit seiner Methode UploadValues(POST) zu benutzen. Macht im Endeffekt genau das selbe wie ein HttpWebRequest, nur ist der WebClient meiner Meinung nach einfacher zu handhaben ist!
Hier etwas Pseudo Code als Denkanstoss:
Code:
//WebClient erstellen
dim wc as new webclient
wc.proxy = nothing
wc.encoding = utf8
//Optional Request Header bearbeiten/setzen
wc.headers.add("User-Agent", "firefox 42 whatever")
//Eine Collection mit den zu sendenden Daten(POST Values) erstellen
dim postColl as new namevaluecollection
postColl.add("VARIABLE", "WERT")
postColl.add("VARIABLE", "WERT")
postColl.add("VARIABLE", "WERT")
..............
//Nun die POST Values uploaden
dim respStr as string = utf8.getString(httpClient.uploadValues("URL", "POST", postColl)
Ähmm, ja sieht jz nicht besonders aus aber ich hoffe mal dieses "Snippet" kann dir helfen!
|
|
|
04/19/2016, 21:14
|
#10
|
elite*gold: 45
Join Date: Apr 2009
Posts: 896
Received Thanks: 399
|
Quote:
Originally Posted by exceble
Ja die IDs scheinen sich nach Aktualisierung zu ändern. Dennoch füllt mein Programm alle Felder aus (sollte er doch eigentlich garnicht mehr?). Bis auf das des Captchas.
Und ich habe bisher noch nie in C# mit Websites gearbeitet, deswegen danke für den Tipp. HttpRequests ist doch von System.Web vererbt oder nicht? Trotz hinzufügen in die using-Direktive kennt er HttpRequests nicht. Muss ich mir erst irgendein Verweis runterladen?
|
Nur die ID vom Captcha wird sich höchstwahrscheinlich ändern, da es eine art "Botschutz" ist. Du kannst dir wenn du die Seite geladen hast den Quelltext in einen String speichern und mit regex oder substring (einfach mal googlen) die neue ID auslesen.
MfG
|
|
|
04/19/2016, 22:13
|
#11
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
Quote:
Originally Posted by exceble
Erstmal vielen Dank, das scheint mir auch eine effizientere Methode.
Ich hatte auch grundlegend PHP in der Schule, weswegen ich mit der POST-Methode was anfangen kann aber ich verstehe noch nicht ganz, wie ich das jetzt in C# abschicke bzw. realisiere.
Habe jetzt folgendes dazu gefunden:
Aber ich blick die Vererbungs- also "Legacy"-Methode, die er meint nicht wirklich, kann mir jemand kurz sagen was genau jetzt was macht?
|
Ist eig relativ selbsterklärend, wenn man Zeile für Zeile durchgeht.
Es wird ein Http Request, in dem Fall ein POST Request -> request.Method = "POST"; an die Seite  erstellt. postData ist ein String, welches die Daten enthält, die übertragen werden sollen. Bei einem (simplen) Login würde der Post z.B. so ausschauen: username=abc123&password=123abc. Der String wird anschließend als Bytearray in den Stream geschrieben (abgeschickt). Danach wird die response Variable erstellt, welche wie der Name schon sagt, die Antwort vom Server empfängt. Mit .ReadToEnd() wird dann quasi die Antwort als String ausgelesen (Seitenquelltext).
Wie du an die richtigen Daten kommst, die du als POST senden musst, bzw an welchen Link du das senden musst, findest du in zahlreichen Tutorials zum Thema HttpWebRequests, zum Teil auch hier auf Epvp. Da habe ich damals mal ein Tutorial geschrieben, zwar in VB.NET aber sollte kein allzugroßer Unterschied zu C# sein. Vllt hilft dieser dir ja weiter.
|
|
|
04/27/2016, 21:41
|
#12
|
elite*gold: 300
Join Date: Apr 2013
Posts: 3,234
Received Thanks: 1,205
|
Bei Web.de oder gmx.net kannst du Webbrowser vergessen.
|
|
|
Similar Threads
|
[B] wr-c vip GUID eintragung [S] e*Gold
06/09/2014 - WarRock Trading - 3 Replies
^topic
möchte nur bisschen e*Gold dafür, brauch den vip zur zeit nicht deswegen..
50-100 e*Gold müssen schon drin sein.
|
[Buying] Suche VIP Eintragung!!
04/07/2013 - WarRock Trading - 3 Replies
Hey Leute wer kann mir VIP Guid Eintragen Für ein Paar Stunden..
Biete 11E-Gold
Sirosix VIP...
|
[S] Sirosix VIP Guid eintragung [B] 7 E*G
08/13/2012 - WarRock Trading - 2 Replies
topci.. brauche schnell
|
the exception unknown software exception
02/04/2012 - Archlord - 4 Replies
Hello all!When i start the game i select europe and after says the exception unknown software exception click ok to terminate the program.PLease help me guys to solve this problem1Have a nice day
|
All times are GMT +1. The time now is 10:45.
|
|