Joa oder ich verfolg den Thread hier weiter, vllt hat jmd nen Weg.
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;
}
}
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
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;
}
GetSubStrings(html, "scr=\""", "\""").First();
1. Per GET HTML ladenQuote:
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?
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;
}
}
post(Url, Referer , "recaptcha_challenge_field=" + captchaID + "&recaptcha_response_field=" + captcha.Text.Replace(" ", "+")");
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();
}