Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 10:46

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



re captcha anzeigen in vb.net?

Discussion on re captcha anzeigen in vb.net? within the .NET Languages forum part of the Coders Den category.

Reply
 
Old 10/31/2013, 13:54   #16
 
DeinMud's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 990
Received Thanks: 127
Joa oder ich verfolg den Thread hier weiter, vllt hat jmd nen Weg.
DeinMud is offline  
Old 10/31/2013, 14:35   #17
 
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
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.
dready is offline  
Old 10/31/2013, 14:36   #18


 
elite*gold: 0
Join Date: Feb 2010
Posts: 7,220
Received Thanks: 6,758
Code:
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
#SoNiice is offline  
Thanks
1 User
Old 10/31/2013, 16:33   #19
 
elite*gold: 0
Join Date: Aug 2009
Posts: 366
Received Thanks: 101
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.
schmir is offline  
Old 10/31/2013, 16:53   #20
 
DeinMud's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 990
Received Thanks: 127
@dready
Wenn man eine neue webrequest "aufmacht" ändert sich das captcha, oder nicht?!
DeinMud is offline  
Old 10/31/2013, 17:18   #21
 
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
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.
dready is offline  
Old 10/31/2013, 17:36   #22
 
DeinMud's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 990
Received Thanks: 127
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
DeinMud is offline  
Old 10/31/2013, 18:00   #23
 
elite*gold: 0
Join Date: Aug 2009
Posts: 366
Received Thanks: 101
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")
schmir is offline  
Old 10/31/2013, 18:05   #24
 
DeinMud's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 990
Received Thanks: 127
Hab ich doch, das Captcha wird angezeigt, aber wie soll ich es denn weiterverarbeiten ohne einen neuen Request zu senden?
DeinMud is offline  
Old 11/03/2013, 20:30   #25
 
Mithrandir.'s Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 1,867
Received Thanks: 401
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. :/
Mithrandir. is offline  
Old 11/03/2013, 21:09   #26
 
DeinMud's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 990
Received Thanks: 127
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.
DeinMud is offline  
Old 11/09/2013, 13:58   #27
Trade Restricted
 
elite*gold: 133
The Black Market: 221/0/1
Join Date: Jan 2013
Posts: 3,864
Received Thanks: 236
Benutzt du Httpwebrequest oder Webbrowser?
HogarthHughes is offline  
Old 11/12/2013, 22:24   #28
 
Certox's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 15
Received Thanks: 13
Kleine nette Funktion.
Code:
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 View Post
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 ()

Code:
private Image getCaptcha(String uri)
        {
            try
            {
                Uri myUri = new Uri("*******");
                captchaID = uri;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("https://www.google.com/recaptcha/api/image?c=" + uri));
                request.CookieContainer = cookieContainer;
                request.UserAgent = userAgent;
                //request.Proxy = proxy;
                request.KeepAlive = true;
                request.Referer = myUri.ToString();
                request.ContentType = "image/png";
                request.Method = "GET";
                request.Accept = "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3";

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                var stream = response.GetResponseStream();
                return Image.FromStream(stream);
            }
            catch (System.Exception e)
            {
                return null;
            }
        }
4. Captcha Lösen bzw DBC
5. POST Request

Code:
post(Url, Referer , "recaptcha_challenge_field=" + captchaID + "&recaptcha_response_field=" + captcha.Text.Replace(" ", "+")");
HTML Stuff
Code:
        public String userAgent = @"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0";
        private CookieContainer cookieContainer = new CookieContainer();

private String get(String url, String referer)
        {
            Uri myUri = new Uri(url);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri);
            request.CookieContainer = cookieContainer;
            request.UserAgent = userAgent;
            request.KeepAlive = true;
            request.Referer = referer;
            if (proxy != null)
                request.Proxy = proxy;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            foreach (Cookie cookie in response.Cookies)
            {
                cookieContainer.Add(cookie);
            }
            var stream = response.GetResponseStream();
            var reader = new StreamReader(stream);
            return reader.ReadToEnd();
        }

        private String post(String url, String referer, String postdata, String[] headers)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
            request.CookieContainer = cookieContainer;
            request.Method = "POST";
            byte[] data = Encoding.ASCII.GetBytes(postdata);
            request.ContentType = "application/x-www-form-urlencoded";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.ContentLength = data.Length;
            request.UserAgent = userAgent;
            request.KeepAlive = true;
            request.Referer = referer;
            if (proxy != null)
                request.Proxy = proxy;
            request.ServicePoint.Expect100Continue = false;
            foreach (String s in headers)
                request.Headers.Add(s.Split('|')[0], s.Split('|')[1]);

            Stream requestStream = request.GetRequestStream();
            requestStream.Write(data, 0, data.Length);
            requestStream.Close();

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            foreach (Cookie cookie in response.Cookies)
            {
                cookieContainer.Add(cookie);
            }
            var stream = response.GetResponseStream();
            var reader = new StreamReader(stream);
            return reader.ReadToEnd();
        }

        private String post(String url, String referer, String postdata)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
            request.CookieContainer = cookieContainer;
            request.Method = "POST";
            byte[] data = Encoding.ASCII.GetBytes(postdata);
            request.ContentType = "application/x-www-form-urlencoded";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.ContentLength = data.Length;
            request.UserAgent = userAgent;
            request.KeepAlive = true;
            request.Referer = referer;
            request.ServicePoint.Expect100Continue = false;

            Stream requestStream = request.GetRequestStream();
            requestStream.Write(data, 0, data.Length);
            requestStream.Close();

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            foreach (Cookie cookie in response.Cookies)
            {
                cookieContainer.Add(cookie);
            }
            var stream = response.GetResponseStream();
            var reader = new StreamReader(stream);
            return reader.ReadToEnd();
        }
Certox is offline  
Thanks
2 Users
Old 11/16/2013, 18:36   #29
 
DeinMud's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 990
Received Thanks: 127
@Certox
Funktioniert das nur bei Google Captcha's?
DeinMud is offline  
Reply


Similar Threads Similar Threads
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



All times are GMT +1. The time now is 10:48.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.