Wie botter2k erklärt hat, die Anfrage selbst machen bei der Webrequest, die Letze Anfrage sollte dir das Bild zurückgeben.
Danach hast du alle Daten um eine neue Request aufzumachen und zu beantworten?
Er hat es dir doch Schritt für Schritt erkärt.
@botter2k
Warum sind Cookies ein Problem ?
Werden welche mit JS gesetzt ? Konnt ich mich bei Recaptcha jetzt nicht dran erinnern.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.Web;
using System.Drawing;
class ReCaptchaViewer {
CookieContainer cookies = new CookieContainer();
Image captchaImage = null;
string challengeField = string.Empty;
public ReCaptchaViewer(string noScript) {
GetCaptchaImage(noScript);
}
public Image CaptchaImage {
get { return captchaImage; }
}
public string ChallengeField {
get { return challengeField; }
}
private void GetCaptchaImage(string noScript) {
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com/recaptcha/api/noscript?k=" + noScript);
req.CookieContainer = cookies;
string src = new StreamReader(req.GetResponse().GetResponseStream()).ReadToEnd();
challengeField = new Regex("id=\"recaptcha_challenge_field\" value=\"([^\"]+)\">").Match(src).Groups[1].Value;
string imageLocation = Regex.Match(src, "src=\"([^\"]+)\"").Groups[1].Value;
req = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com/recaptcha/api/" + imageLocation);
captchaImage = Image.FromStream(req.GetResponse().GetResponseStream());
}
public string GetNoScriptField(string src) {
return Regex.Match(src, "iframe src=\"http://api.recaptcha.net/noscript\\?k=([A-Za-z0-9-_]+)\"").Groups[1].Value;
}
}
Das ist eine C# Klasse, die ich vor etlichen Monaten (oder vielleicht auch vor 1 - 2 Jahren?) genutzt habe, weiß daher nicht ob diese überhaupt noch so funktioniert bezüglich der ReCaptcha-Geschichte. Einfach mal testen ;O
html code auslesen und in richtextbox wieder anzeigen lassen.
Falls das Captcha als Bild hinterlegt ist einfach nur aus dem Quellcode den Bilderlink nehmen und in einer Picturebox anzeigen lassen.
Ich vermute mal das dein Problem sein wird das du über das Browser Control gehst und dort nicht so einfach den Quellcode nutzen kannst.
Mache die Anfrage per httpwebrequest und les es aus der response aus. Dann überlege dir eine Logik für das Captcha und lasse es automatisch knacken. Oder mache dir eine Lernfunktion.
Die Webrequest holt dir nur den QuellCode, da läuft kein Parsing ab, heißt das ganze Laden des Captachs machst du ja selbst -> wird auch nur einmal angefragt.
Also, ich hatte es hier mal versucht, leider hat sich das Captcha immer geändert;
Code:
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions
Public Class Form1
Private cookiecon As New CookieContainer
Private UserAgent As String = "Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0"
Private ContentType As String = "application/x-www-form-urlencoded"
Private request As HttpWebRequest
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
request = DirectCast(HttpWebRequest.Create("https://signup.leagueoflegends.com/de/signup/index"), HttpWebRequest)
Dim response As HttpWebResponse = DirectCast(request.GetResponse, HttpWebResponse)
Using sr As New StreamReader(response.GetResponseStream)
Dim input As String = sr.ReadToEnd
Dim match As Regex = New Regex("/de/signup/captcha/.+?""")
PictureBox1.ImageLocation = String.Concat("http://signup.leagueoflegends.com", match.Match(input).Value)
End Using
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
request = DirectCast(HttpWebRequest.Create("https://signup.leagueoflegends.com/de/signup/index"), HttpWebRequest)
request.Method = "POST"
request.CookieContainer = cookiecon
request.UserAgent = UserAgent
request.ContentType = ContentType
Dim POST As String = String.Format("_method=POST&data%5B_Token%5D%5Bkey%5D=a61fe015f89e4843902f7cfd1d7ed33ba4a244a1&data%5BPvpnetAccount%5D%5Bname%5D={0}&data%5BPvpnetAccount%5D%5Bpassword%5D={1}&data%5BPvpnetAccount%5D%5Bconfirm_password%5D={1}&data%5BPvpnetAccount%5D%5Bemail_address%5D={2}&data%5BPvpnetAccount%5D%5Bdate_of_birth_day%5D=11&data%5BPvpnetAccount%5D%5Bdate_of_birth_month%5D=11&data%5BPvpnetAccount%5D%5Bdate_of_birth_year%5D=1981&data%5BPvpnetAccount%5D%5Brealm%5D=euw&data%5BPvpnetAccount%5D%5Btou_agree%5D=0&data%5BPvpnetAccount%5D%5Btou_agree%5D=1&data%5BPvpnetAccount%5D%5Bnewsletter%5D=0&data%5BPvpnetAccount%5D%5Bnewsletter%5D=1&data%5BPvpnetAccount%5D%5Bcaptcha%5D={3}&data%5B_Token%5D%5Bfields%5D=d56e711ef2a60053f53b82f8d657e87a89e93b62%253An%253A0%253A%257B%257D", TextBox1.Text.Replace("@"c, "%40"), TextBox2.Text, TextBox3.Text.Replace("@"c, "%40"), TextBox4.Text)
Dim bytes() As Byte = Encoding.Default.GetBytes(POST)
request.ContentLength = bytes.Length
Dim datastream As Stream = request.GetRequestStream
datastream.Write(bytes, 0, bytes.Length)
datastream.Close()
Dim response As HttpWebResponse = DirectCast(request.GetResponse, HttpWebResponse)
Using sr As New StreamReader(response.GetResponseStream)
Dim input As String = sr.ReadToEnd
If input.Contains("Dein Konto wurde erstellt!") Then
MessageBox.Show("Erfolg")
End If
End Using
End Sub
End Class
Natürlich ändert sich das Captcha bei jeder anfrage du musst es schon selbstständig aus der Response holen und verarbeiten. In deinem Fall steht es dann in Input drin. Du fragst ja auch in deinem Code schon einen Teil ab, das musst du erweitern.
If input.Contains("Dein Konto wurde erstellt!") Then
MessageBox.Show("Erfolg")
Immer noch sehr interessant, leider blick ichs einfach nicht.
wenn jemand mir ne vernüftige vb.net source schicken könnte die bei der Seite die ich auf der 1. Seite gepostet hab wäre ich auch bereit was zu zahlen
Ist nur leider nicht so leicht habe zwar was gefunden aber es refesht das captcha halt immer, sehr kompliziert. :/
Das mit dem refreshen ist auch mein Problem, mit nem webbrowser krieg ich's hin aber bei einem request, wird die session immer erneuert.
Habe gelesen, dass das Captcha erst existiert, wenn man sich die antwort holt -> Hab ich beim zweiten mal keine antwort geholt ging trotzdem nicht.
Mit cookies rumgespielt -> ging auch nicht.
private IEnumerable<string> GetSubStrings(string input, string start, string end)
{
Regex r = new Regex(Regex.Escape(start) + "(.*?)" + Regex.Escape(end));
MatchCollection matches = r.Matches(input);
foreach (Match match in matches)
yield return match.Groups[1].Value;
}
Code:
GetSubStrings(html, "scr=\""", "\""").First();
Quote:
Originally Posted by DeinMud
Mal ne Frage, ich hatte selbst versucht einen Bot zu schreiben mit Captcha Eingabe etc. (httpwebrequest)
Das filtern des Captchas und Anzeigen war kein Problem, doch um das Captcha anzeigen zu lassen musste ich die Antwort auslesen & dort mit Regex halt den Captcha link filtern. Dannach konnte ich jedoch nicht mehr in den Stream schreiben & einen neuen Request zu senden ginge auch nicht da sich dann das Captcha ändern würde. Wie müsste ich da den vorgehen?
1. Per GET HTML laden
2. Mit meiner Funktion oben parsen
3. Captcha ID auslesen und bild per GET laden ()
Automatische Captcha Eingabe Arcor Bot ( Kein Captcha ) 07/23/2013 - elite*gold Trading - 83 Replies Ich biete hier ein Programm an, welches das Captcha des Arcor Bottes liest und Automatisch einfügt :)
So funktioniert es :) (Video)
Automatische Captcha Eingabe Arcor Bot - YouTube
So sieht alles aus :)
Lizenz - Login
http://i.epvpimg.com/s1OJg.png
[VB 2010] Web.de Captcha in Picturebox anzeigen lassen 09/18/2012 - .NET Languages - 5 Replies Hallo Leute,
Ich bin gerade an einem Web.de Emailgenerator, bei dem man die Captchas aber manuell eingeben muss.
Ich verwende einen Webbrowser, bis das mit dem Captcha funktioniert, dann werde ich in httpwebrequest umcoden.
Nun wollte ich fragen, wie man das Captcha in einer Picturebox anzeigen lassen kann?
Captcha Boxen/Captcha Boxes 10/28/2011 - DarkOrbit - 1 Replies Hey Epvp.
Wie ihr wisst gibt es diese doofen Captcha Boxen
Meine Freunde und ich benutzen den KBot. (ja wir botten :D)
Also insgesamt sind wir 5 Leute keiner von denen bekommt
n' captcha nur ich bekomme immer welche.
Also wollte ich euch fragen und leute die Ahnung so vom Coden haben
ob sie nicht mal ein Programm erstellen könnten was die Captchas eingibt.
Ich weiß es gibt den reCaptcha Trader von The_Warrior aber erstens ist
es nicht umsonst und zweitens weiß ich nicht wie man das...
[Captcha]Warrock Korea Captcha 12/21/2009 - WarRock - 15 Replies Hallo liebe e*pvp..
Ich mache für euch eure Warrock Korea Captchas einfach Bild einfügen und
ich erstelle es für euch...
Wie spielt man Warrock Korea?
Korean Warrock !!
Beispiel:
[Look Captcha]Captcha Code Programme 04/03/2009 - Metin2 Private Server - 4 Replies Hallo bins mal wieder^^
Naja ich benutze diese Seite um den Captcha heraus zubekommen
Link:nciku - Online English Chinese Dictionary, Learn Chinese Mandarin Online
Suche aber ein einfacheres Programm um die Suche der anderen Foren mitglieder zu erleichtern das Programm und der Download Link Posten=)
Thx sind bst garantiert ein Link zur Erklärung wäre auch hilfreich^^
Ps:bin der König der Rechtschreib fehler^^ also nicht meckern:D