[VB.NET]Webbrowser Control Button ohne ID anklicken

11/12/2013 11:52 ShishaHaZe#1
Hey

Da ich keine lust mehr auf webrequest habe, hab ich versucht einen Bot mit Webbrowser Control zu coden. Nun weiß ich aber nicht, wie man einen Button anklickt, der keine ID besitzt.

Button:
Code:
<input type="submit" name="login_button" value="Login" tabindex="3" class="login">
Auf Google finde ich nur Müll der nicht funktioniert, egal wieviel ich damit experimentiere.
11/12/2013 11:57 Syc#2
Quote:
Originally Posted by .Psyko View Post
Da ich keine lust mehr auf webrequest habe
Keine lust mehr auf effektives Programmieren?

[Only registered and activated users can see links. Click Here To Register...] z.b. Google hat bestimmt ein paar richtige Antworten, du musst nur richtig suchen.
11/12/2013 11:58 ShishaHaZe#3
Quote:
Originally Posted by Sycophantic View Post
Keine lust mehr auf effektives Programmieren?

[Only registered and activated users can see links. Click Here To Register...] z.b. Google hat bestimmt ein paar richtige Antworten, du musst nur richtig suchen.
danke dir

Ne will aber wieder was dazu lernen und nicht immer das selbe Wissen nutzen:rolleyes:
11/12/2013 14:39 dready#4
Hier gehts nicht um dazulernen, das Problem ist in 99,99% aller Fälle dürfte es der Falsche Ansatz sein.

Sollte es ums reine Parsing gehen schau dir ein entsprechendes Framework an

z.b.
[Only registered and activated users can see links. Click Here To Register...]

Wenn du was lernen willst, bau dir ne eigene Webrequest Klasse.
Du wirst am ende auf jedenfall mehr davon haben als wenn du weißt wie du um die drölfzig Probleme die die Browerscontrol so auslöst rumprogrammierst.
11/12/2013 22:42 Certox#5
paar Funktionen von mir vll helfen sie dir ja ;)

c#
Code:
private Image getImage(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;
            }
        }


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();
        }
vb übersetzt
Code:
Private Function getImage(uri As [String]) As Image
	Try
		Dim myUri As New Uri("*******")
		captchaID = uri
		Dim request As HttpWebRequest = DirectCast(WebRequest.Create(New Uri("https://www.google.com/recaptcha/api/image?c=" & Convert.ToString(uri))), HttpWebRequest)
		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"

		Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
		Dim stream = response.GetResponseStream()
		Return Image.FromStream(stream)
	Catch e As System.Exception
		Return Nothing
	End Try
End Function


Public userAgent As [String] = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"
Private cookieContainer As New CookieContainer()

Private Function [get](url As [String], referer As [String]) As [String]
	Dim myUri As New Uri(url)
	Dim request As HttpWebRequest = DirectCast(WebRequest.Create(myUri), HttpWebRequest)
	request.CookieContainer = cookieContainer
	request.UserAgent = userAgent
	request.KeepAlive = True
	request.Referer = referer
	If proxy IsNot Nothing Then
		request.Proxy = proxy
	End If
	Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
	For Each cookie As Cookie In response.Cookies
		cookieContainer.Add(cookie)
	Next
	Dim stream = response.GetResponseStream()
	Dim reader = New StreamReader(stream)
	Return reader.ReadToEnd()
End Function

Private Function post(url As [String], referer As [String], postdata As [String], headers As [String]()) As [String]
	Dim request As HttpWebRequest = DirectCast(WebRequest.Create(New Uri(url)), HttpWebRequest)
	request.CookieContainer = cookieContainer
	request.Method = "POST"
	Dim data As Byte() = 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 IsNot Nothing Then
		request.Proxy = proxy
	End If
	request.ServicePoint.Expect100Continue = False
	For Each s As [String] In headers
		request.Headers.Add(s.Split("|"C)(0), s.Split("|"C)(1))
	Next

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

	Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
	For Each cookie As Cookie In response.Cookies
		cookieContainer.Add(cookie)
	Next
	Dim stream = response.GetResponseStream()
	Dim reader = New StreamReader(stream)
	Return reader.ReadToEnd()
End Function

Private Function post(url As [String], referer As [String], postdata As [String]) As [String]
	Dim request As HttpWebRequest = DirectCast(WebRequest.Create(New Uri(url)), HttpWebRequest)
	request.CookieContainer = cookieContainer
	request.Method = "POST"
	Dim data As Byte() = 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

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

	Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
	For Each cookie As Cookie In response.Cookies
		cookieContainer.Add(cookie)
	Next
	Dim stream = response.GetResponseStream()
	Dim reader = New StreamReader(stream)
	Return reader.ReadToEnd()
End Function
11/13/2013 19:12 DeinMud#6
benutz httpwebrequest -> siehe Certox