Tolles Tutorial!
Ich habe mal ein anderes Problem. Wie ist es möglich festzustellen ob eine Anfrage von einem realen Browser (z.B. Firefox) kommt oder ob der Request von einem Programm stammt.
Ich habe da eine Webseite die mir ständig 404 meldet obwohl ich den UserAgent-Parameter exakt an die Version von Firefox angepasst habe.
Ziel meiner Anwendung ist es einen EAN-Code an die Seite zu übergeben und im Quell-Code eine Produktbeschreibung zurück zu bekommen.
Link:
Die Ziffer ist der übergebene EAN-Code.
Per Firefox kein Problem mit VB.NET ständig die 404 (Webseite nicht gefunden).
Dann sendest du 2 Post messages.
Einmal mit dem Login und einmal das mit der Sicherheit. UNd wenn ein Captcha da ist, lies ihn in eine PictureBox ein und lass den User das manuell eingeben. Danach machst du normal weiter.
kannst du das mal bitte genauer erklären? wenn ich die loginseite lade alles auslese und dann ein request abschicke geht das nicht?
kannst du das mal bitte genauer erklären? wenn ich die loginseite lade alles auslese und dann ein request abschicke geht das nicht?
wie soll es dann mit 2 requests klappen?
Bin grad am Handy, deswegen kann ich dir nur nen kleinen Beispiel-Code zeigen, wie es mit der Http-Klasse funktionieren würde:
PHP Code:
With New Http
//login url aufrufen
Dim html As String = .GetResponse("login-url")
//daten auslesen, die für den login nötig sind (ist nur ein Beispiel)
Dim token1 As String = //entweder mit SubString/Split oder RegEx das Nötige aus der Variable "html" auslesen
Dim token2 As String = //hier genau das gleiche
//post request abschicken
Dim post As String = "tkn1=" & token1 & "&tkn2=" & token2
html = .GetResponse("post login-url", post)
//prüfen ob login erfolgreich war, indem du prüfst, ob die Variable "html" irgendwas enthält, was drauf schließen lässt, dass man eingeloggt ist. Alternative (die bessere/sichere Methode) wäre eben die Cookies zu prüfen
End With
Bin grad am Handy, deswegen kann ich dir nur nen kleinen Beispiel-Code zeigen, wie es mit der Http-Klasse funktionieren würde:
PHP Code:
With New Http
//login url aufrufen
Dim html As String = .GetResponse("login-url")
//daten auslesen, die für den login nötig sind (ist nur ein Beispiel)
Dim token1 As String = //entweder mit SubString/Split oder RegEx das Nötige aus der Variable "html" auslesen
Dim token2 As String = //hier genau das gleiche
//post request abschicken
Dim post As String = "tkn1=" & token1 & "&tkn2=" & token2
html = .GetResponse("post login-url", post)
//prüfen ob login erfolgreich war, indem du prüfst, ob die Variable "html" irgendwas enthält, was drauf schließen lässt, dass man eingeloggt ist. Alternative (die bessere/sichere Methode) wäre eben die Cookies zu prüfen
End With
jop und genauso hab ich es auch mal probiert, jedoch hat es nicht beim captcha geklappt, da er bei "html = .GetResponse("post login-url", post)"
die seite neu geladen hat und das captcha somit ungültig war, kann auch sein das ich da ein tippfehler hatte, jedoch hatte ich das 2 mal gecheckt
und über regex wurden die werte auch richtig ausgelesen...
da kann man jede seite als vergleich nehmen die ein captcha hat. als beispiel nimm doch einfach die regipage von epvpers oder einach
baut alles auf selbe auf, wie schon gesagt wenn er bei mir das postrequest abschickt lädt er neu und ein captcha ist ungültig, so wie ich das mitbekomen habe
Diesen Wert beim POST-Request mitübergeben (siehst du ja in LiveHttpHeaders).
Um das Captcha z.B. in einer PictureBox anzuzeigen, liest du einfach den Response-Stream aus:
PHP Code:
//Funktion: Public Function GetResponseStream(ByVal url As String) As Stream request = CType(HttpWebRequest.Create(url), HttpWebRequest) request.CookieContainer = cookieCon response = CType(request.GetResponse(), HttpWebResponse)
Return response.GetResponseStream() End Function
//Aufruf: PictureBox.Image = Image.FromStream(.GetResponseStream("https://www.google.com/recaptcha/api/image?c=" & challengeToken)) //challengeToken ist der Wert nach dem Doppelpunkt weiter oben in diesem Beitrag
Würde dann in etwa so aussehen (ist schnell und eher unschön gemacht, aber naja..)
PHP Code:
With New Http Dim html As String = .GetResponse("http://www.hidemyass.com/anonymous-email/") Dim captchaURL As String = html.Substring(html.IndexOf("https://www.google.com/recaptcha/api/challenge?k=")).Split(""""c)(0)
html = .GetResponse(captchaURL)
Dim captchaToken As String = html.Substring(html.IndexOf("challenge")).Split("'"c)(1) PictureBox.Image = Image.FromStream(.GetResponseStream("https://www.google.com/recaptcha/api/image?c=" & captchaToken))
//POST zusammensetzen und abschicken. Solltest du wohl selbst schaffen End With
Hast nun sogar C&P-Code bekommen, jedoch hoffe ich, dass du daraus auch lernst und nicht einfach nur stur kopierst und einfügst.
Ich erhalte nur leider (login anfrage an epvp) immer wieder die nachricht, dass ich nicht eingeloggt bin. Warum weiss ich leider nicht. Werde es mal bei einer anderen Seite versuchen.
Und eine Frage ist mir noch in den Sinn gekommen: Kann ich die "erhaltenen" Cookies jetzt eigentlich an den, bzw einen, normalen WebBrowser übergeben? Wenn ja, wie wäre dies möglich. (Das Steuerelement 'WebBrowser')
P.S.: Ja ich weiß, dieser Thread ist älter, doch ist er der einzige seiner Art und ich wollte keinen neuen eröffnen.
Ich erhalte nur leider (login anfrage an epvp) immer wieder die nachricht, dass ich nicht eingeloggt bin. Warum weiss ich leider nicht. Werde es mal bei einer anderen Seite versuchen.
Und eine Frage ist mir noch in den Sinn gekommen: Kann ich die "erhaltenen" Cookies jetzt eigentlich an den, bzw einen, normalen WebBrowser übergeben? Wenn ja, wie wäre dies möglich. (Das Steuerelement 'WebBrowser')
P.S.: Ja ich weiß, dieser Thread ist älter, doch ist er der einzige seiner Art und ich wollte keinen neuen eröffnen.
1. Versuchs mal mit
PHP Code:
Dim byteArr() As Byte = Encoding.GetEncoding("iso-8859-1").GetBytes(post)
2. Bin mir nicht sicher, da ich grad am Handy bin und es nicht testen kann, aber probier mal sowas in der Art
Um noch etwas kleines hinzuzufügen, Live HTTP Headers wird nicht gebraucht.
Man kann stattdessen auf die Network Tools von den Browsern zurückgreifen.
Chrome z.B. F12 un dann auf Network, der schneidet auch Pakete mit.
FF sowie IE bieten selbe Funktionen ohne Addon.
Ich habe es nun nach erneutem überprüfen des gesamten Codes endlich geschafft meinen unsäglichen Fehler zu finden. Die Lange und sehr lange (vllt war sie sogar länger), hat mich dazu verleitet, eine komplette Zeile des von dir genannten Posts#4:
Quote:
Edit: Oder schau dir mal Beitrag #4 an in folgendem Link:
zu überspringen, ja gar von dem Monitor verschwinden zu lassen.. Ich saß nämlich geschätzte 5 Minuten an diesen paar Zeilen, doch diese Zeile ist mir nicht eine Sekunde lang bewusst gewesen...Diese:
Eingefügt und das Problem mit den Cookies war erledigt.
So nun habe ich es geschafft, den HTTPRequest durchzuführen und das ganze an den WebBrowser1 zu übergeben. Mitsamt Cookie(s). Als ich dies nun testete, kam auch schon die nächste überraschung: Die anmeldung klappte, auch wenn diese If-Schleife die ich verwendete (wie eig zu erwarten) richtig funktionierte, mir jedoch immer einzureden versuchte, das irgendetwas schief gelaufen sei... Weil "Abmelden" nun einmal nicht auf der "Danke fürs einloggen"-Seite steht -.- But I DID IT!
Quote:
If html.Contains("Abmelden") Then
MessageBox.Show("logged in")
Else
MessageBox.Show("something went wrong")
End If
So diese abgeändert und taddaaaa... man man man..
ENDLICH KLAPPT ALLES!!!
Danke nochmals für die Hilfe!!! Schlafen ist wichtiger als so mancher denkt..
Ich lass den 'alten' Teil meines Posts aber (vorerst) noch da, weil ich meine unfähigkeit witzig finde und dies gerne zur Schau stelle, wenn es doch schon einmal da ist. (Falls nicht erwünscht bitte wegmachen/Ich mache dies sonst nach Aufforderung (gern). Danke fürs Lesen!
Da "WebBrowser.Document.Cookie" als String definiert ist - So klappts auch net(wär ja zu einfach xD)
Code:
Cstr(request.CookieContainer.GetCookies(url))
hmmm.. so nächste Info nutzen.. deinen Link.
ich habe mir den (wie ich denke) relevanten teil mal (jaja sogar selbst,obwohl ich die dort verwendete Sprache nicht kann >>Eigenlob stinkt nicht, nein<<) übersetzt:
Code:
Dim cookiebuilder As New StringBuilder()
For Each i As Cookie In response.Cookies
cookiebuilder.Append(i.ToString).Append(";")
Next
Form1.WebBrowser1.Document.Cookie = cookiebuilder.ToString
den Fehler: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."... Hm. Vielleicht hängt das damit zusammen, dass ich mich immernoch nicht erfolgreich einloggen kann. Da muss ja irgendwas nicht stimmen.
EDIT: Damit bestimmt nicht xD War wohl/bin wohl stark übermüdet, Nacht durchgemacht..... Cookies müssten ja da sein, eingeloggt oder nicht(doch nicht?)...Lass es mal so drin, finds ganz witzig irgendwie.
Aber das Problem besteht leider weiterhin.
Ich habe hier nochmal die gesamte Funktion im Spoiler, bitte bitte helft mir
//szg. eigener teil
Dim cookiebuilder As New StringBuilder()
For Each i As Cookie In response.Cookies
cookiebuilder.Append(i.ToString).Append(";")
Next
Form1.WebBrowser1.Document.Cookie = cookiebuilder.ToString
//ENDE eigener Teil
Return New StreamReader(response.GetResponseStream()).ReadToE nd()
End Function
Soo, neues Problem, neuer Post..
Wie gesagt kann ich mich erfolgreich einloggen und dies zuerst an den WebBrowser übergeben. Allerdings nur bis zur ersten "Thank you[...]" Seite, von welcher man dann weitergeleitet wird. Der WebBrowser verliert dann aber anscheinend die Cookies(oder ists nur eines(einer?)?) und mir wird ganz normal die "standart" epvpers Seite angezeigt.. Fragen über fragen.
Bitte helft mir ein wenig.
Soo, neues Problem, neuer Post..
Wie gesagt kann ich mich erfolgreich einloggen und dies zuerst an den WebBrowser übergeben. Allerdings nur bis zur ersten "Thank you[...]" Seite, von welcher man dann weitergeleitet wird. Der WebBrowser verliert dann aber anscheinend die Cookies(oder ists nur eines(einer?)?) und mir wird ganz normal die "standart" epvpers Seite angezeigt.. Fragen über fragen.
Bitte helft mir ein wenig.
Soo, neues Problem, neuer Post..
Wie gesagt kann ich mich erfolgreich einloggen und dies zuerst an den WebBrowser übergeben. Allerdings nur bis zur ersten "Thank you[...]" Seite, von welcher man dann weitergeleitet wird. Der WebBrowser verliert dann aber anscheinend die Cookies(oder ists nur eines(einer?)?) und mir wird ganz normal die "standart" epvpers Seite angezeigt.. Fragen über fragen.
Bitte helft mir ein wenig.
Soo, neues Problem, neuer Post..
Wie gesagt kann ich mich erfolgreich einloggen und dies zuerst an den WebBrowser übergeben. Allerdings nur bis zur ersten "Thank you[...]" Seite, von welcher man dann weitergeleitet wird. Der WebBrowser verliert dann aber anscheinend die Cookies(oder ists nur eines(einer?)?) und mir wird ganz normal die "standart" epvpers Seite angezeigt.. Fragen über fragen.
Bitte helft mir ein wenig.
HttpWebRequest C# Browsergame Bot 12/07/2017 - .NET Languages - 4 Replies Hi,
i have the following problem and it would be great if s.o. could help me.
I try to write a simple bot for a browsergame which uses the HttpWebRequest and Response classes from C#. Currently i try to log in with the following script but i only get back to the login page. When i try to catch a site for logged in members only i also only get the login page. There has to be a problem with the cookie but i don't know where :(
class HttpHelper
{
private CookieContainer...
c# httpwebrequest Travian 12/07/2017 - .NET Languages - 2 Replies Gude Leute ich hätt da mal ein anliegen ich will mir ein kleines Tool zur vereinfachten bedinung von Travian schreiben nur leider bekomme ich das irgendwie nicht auf die Reihe.
da mein Code nicht so recht funktioniert hat habe ich mir den code von jemand anderes mal geklaut aber der ergibt das gleiche problem.
Das Probleme ist er zeigt die Seite nicht richtig an und er baut keine truppen wenn ich auf Button1 click.
wenn mir einer das vielleicht mal flicken könnte oder mir erklären...
[C#]Mit HttpWebRequest auf Seite einloggen. 12/07/2017 - .NET Languages - 2 Replies Hallo,
Ich möchte mich gerne über ein Kleines Programm mit 2 Eingabefeldern und einem Login Button auf einer Seite einloggen.
Mein Ziel ist es, nach dem Login die Cookies auslesen zu können, da dort für mich wichtige Infos gespeichert werden ;)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
[TUTORIAL] Starter friendly tutorial to searching for Nuke casting time [TUTORIAL] 02/09/2011 - 9Dragons - 12 Replies If you already have Cheat Engine and know how to use it, skip to part 4 of the tutorial.
1. Introduction
This forum has helped me quite a bit, so I decided to give something back :)
Now I've noticed there are quite a few who ask for nuke casting time hacks / address', and I've also noticed, that there are quite a few who are REALLY annoyed with these questions, so I decided to write this so both sides can benefit from it.
2. Getting started
First off, you need to have Cheat Engine...
[C#]MD5-Cheksumme mit HttpWebRequest oä 08/18/2010 - .NET Languages - 1 Replies Ich will mir mal einen gescheiten Patcher für Metin2 machen..
Jetzt soll er von den Files auf meinem Server die Checksummen ausspucken.
Die Datei sollte nicht heruntergeladen werden...
System.IO.FileStream FileCheck = System.IO.File.OpenRead(Dateipfad);
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvi der();
byte md5Hash = md5.ComputeHash(FileCheck);