|
You last visited: Today at 10:46
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.
10/31/2013, 13:54
|
#16
|
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.
|
|
|
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.
|
|
|
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
|
|
|
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.
|
|
|
10/31/2013, 16:53
|
#20
|
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?!
|
|
|
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.
|
|
|
10/31/2013, 17:36
|
#22
|
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
|
|
|
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")
|
|
|
10/31/2013, 18:05
|
#24
|
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?
|
|
|
11/03/2013, 20:30
|
#25
|
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. :/
|
|
|
11/03/2013, 21:09
|
#26
|
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.
|
|
|
11/09/2013, 13:58
|
#27
|
Trade Restricted
elite*gold: 133
Join Date: Jan 2013
Posts: 3,864
Received Thanks: 236
|
Benutzt du Httpwebrequest oder Webbrowser?
|
|
|
11/12/2013, 22:24
|
#28
|
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
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();
}
|
|
|
11/16/2013, 18:36
|
#29
|
elite*gold: 0
Join Date: Jan 2010
Posts: 990
Received Thanks: 127
|
@Certox
Funktioniert das nur bei Google Captcha's?
|
|
|
 |
|
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.
|
|