|
You last visited: Today at 22:16
Advertisement
[C# - JS] Webrequest mit Evercookie
Discussion on [C# - JS] Webrequest mit Evercookie within the .NET Languages forum part of the Coders Den category.
03/01/2015, 22:52
|
#1
|
elite*gold: 574
Join Date: Nov 2010
Posts: 2,498
Received Thanks: 726
|
[C# - JS] Webrequest mit Evercookie
Guten Abend,
ich habe ein Problem mit der Javascript API Evercookie (  ,  ) im Zusammenhang mit Httpwebrequests in C#. Sobald ich versuche, für (in diesem Beispiel) eine Seite abzustimmen, werde ich vom Server als Bot enttarnt. Selbst wenn ich besagte Cookies manuell erstelle, hilft es nicht.
www(.)topliste.top(-)pserver.com/in/3635-kizu2-org.html
Anhand des Beispieles dieser Seite habe ich versucht, eine Lösung zu finden, Evercookie zu umgehen bzw. auszutricksen, jedoch ohne erfolg.
Das Hauptproblem scheint darin zu liegen, den Cookie, in diesem Fall heißt dieser "topl", manuell so zu erstellen, dass die Seite diesen annimmt und mich nicht als Bot enttarnt. Dies kann getestet werden, indem man Javascript in seinem Browser deaktiviert.
All das soll über Httpwebrequests geschehen, jedoch habe ich bislang nach langer Suche und Recherche keine Lösung meines Problems gefunden.
Nun meine Frage - Kennt sich damit jemand aus oder hat damit bereits Erfahrungen gemacht?
Grüße
|
|
|
03/03/2015, 11:18
|
#2
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Wenn der Cookie (oder was auch immer da notwendig ist, geht aus deinem Post nicht so ganz hervor und ich habe gerade keine Zeit mir die Seite genauer anzuschauen) durch JavaScript Code gesetzt/modifiziert/berechnet wird, hast du so wie ich das sehe nur 2 Möglichkeiten:
- Du emulierst einen Browser der JavaScript Code ausführen kann und tust exakt das selbe mit diesem Browser, was du auch sonst tun würdest. Dazu gibt's beispielsweise im WinForms Framework ein WebBrowser Control, welches du auch verstecken kannst.
- Du findest heraus, was der JavaScript Code macht (also wie er den Cookie berechnet) und nutzt das, um einen gültigen HTTP Request zu bauen.
Wie sieht's mit deinem Code aus? Vielleicht machst du ja dort etwas falsch?
|
|
|
03/03/2015, 17:15
|
#3
|
elite*gold: 574
Join Date: Nov 2010
Posts: 2,498
Received Thanks: 726
|
Quote:
Originally Posted by Mostey
Wenn der Cookie (oder was auch immer da notwendig ist, geht aus deinem Post nicht so ganz hervor und ich habe gerade keine Zeit mir die Seite genauer anzuschauen) durch JavaScript Code gesetzt/modifiziert/berechnet wird, hast du so wie ich das sehe nur 2 Möglichkeiten:
- Du emulierst einen Browser der JavaScript Code ausführen kann und tust exakt das selbe mit diesem Browser, was du auch sonst tun würdest. Dazu gibt's beispielsweise im WinForms Framework ein WebBrowser Control, welches du auch verstecken kannst.
- Du findest heraus, was der JavaScript Code macht (also wie er den Cookie berechnet) und nutzt das, um einen gültigen HTTP Request zu bauen.
Wie sieht's mit deinem Code aus? Vielleicht machst du ja dort etwas falsch?
|
Erst einmal danke für die Antwort.
Die erste Idee kam mir selbst schon einmal in den Sinn, jedoch möchte ich diese nur in Erwägung ziehen, wenn ich keine andere Möglichkeit habe.
Das Inhalt des Cookies ist ein String, der durch die Funktion hex_md5 verschlüsselt wurde ('Math.random() + "un"+ new Date().getTime()'). Soweit kein Problem, außer, dass es mein Problem nicht löst, selbst wenn ich mir den besagten Hex selbst generiere und als Cookie mitgebe.
Mein momentaner Code sieht so aus
Main.cs
Code:
lx = [WebLX];
Uri _uri = new Uri("http://www.topliste.*****************/");
Cookie _cookie = new Cookie();
_cookie.Expires = UnixTimeStampToDateTime(1924905600);
_cookie.Path = ""; _cookie.Domain = "topliste.*****************";
_cookie.Name = "topl"; _cookie.Value = "56c592d627f4e51262f0990fd78c1ef9";
lx.Cookie.Add(_uri, _cookie);
try
{
String post_data =
String.Format("CSRF_TOKEN={0}&verifyCode={1}&submit={2}&additional={3}", csrftoken, captchacode, "Zugang+mit+Abstimmung", "nk55j"); ;
String response = lx.cSend(voteurl, post_data);
Match m = Regex.Match(_s, "<ul class=\"flashes\"><li><div class=\"flash-error\">(.*)</div></li>");
if (m.Success) Console.WriteLine("Error: {0}", m.Groups[1].Value);
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
throw;
}
//
public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
{
System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime();
return dtDateTime;
}
WebLX.cs
Code:
public string cSend(string URL, string post, string referer = "")
{
UTF8Encoding encoding = new UTF8Encoding();
byte[] byteData = encoding.GetBytes(post);
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(URL);
if (proxy.Address != null) Request.Proxy = proxy;
//Request.Accept = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
Request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
Request.UserAgent = UserAgent;
Request.Method = "POST";
Request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
Request.Host = "www.topliste.*****************";
Request.KeepAlive = true;
Request.AllowAutoRedirect = true;
Request.CookieContainer = Cookie;
Request.Referer = referer;
Request.Headers.Add("Accept-Language", "de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2,tr;q=0.2");
Request.ContentType = "application/x-www-form-urlencoded";
Request.ContentLength = byteData.Length;
Stream RequestStream;
RequestStream = Request.GetRequestStream();
RequestStream.Write(byteData, 0, byteData.Length);
RequestStream.Close();
HttpWebResponse SendResponse = null;
SendResponse = (HttpWebResponse)Request.GetResponse();
Cookie.Add(SendResponse.Cookies);
StreamReader RequestReader = new StreamReader(SendResponse.GetResponseStream());
string html = RequestReader.ReadToEnd();
SendResponse.Close();
return html;
}
So sieht der Request Header aus:
Code:
POST /in/3596.html HTTP/1.1
Host: www.topliste.*****************
Connection: keep-alive
Content-Length: 112
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://www.topliste.*****************
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://www.topliste.*****************/in/3596.html
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2,tr;q=0.2
Cookie: 0cda=e1c694; language=16a382fa92e8b60f7d78d87e37f7aaaeb757097ds%3A2%3A%22de%22%3B; PHPSESSID=b96jrmsm5nturoob76gep1feg3; CSRF_TOKEN=6c0daa1b3b93f3a4eedd78e747a8bf15edef9af4s%3A40%3A%22b863988800cab9f6e686160e1fa72fb912478779%22%3B; __cfduid=df79419951a445b0cd153ab223092ea451425396777; __utmt=1; __utma=99825691.2066308117.1425143621.1425392639.1425399059.4; __utmb=99825691.2.10.1425399059; __utmc=99825691; __utmz=99825691.1425143621.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); topl_png=f62852d32967e60f4883d93a0002c29a; topl_etag=f62852d32967e60f4883d93a0002c29a; topl_cache=f62852d32967e60f4883d93a0002c29a; topl=f62852d32967e60f4883d93a0002c29a
Ich bedanke mich nochmal für die Antwort
Grüße
|
|
|
03/06/2015, 13:27
|
#4
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Ich persönlich würde die Generierung dieses ominösen Cookies mal rausnehmen. Wird der Cookie sofort gesetzt, wenn du die Seite besuchst oder erst nach dem Login? Grundsätzlich würde ich vor dem Login einen einfachen GET Request auf die Hauptseite setzen, den CookieContainer mitgeben und zwischenspeichern, damit du ihn beim nächsten POST Request mitgeben kannst. Vielleicht setzt die Seite einige Cookies beim ersten Seitenaufruf und kann so sicherstellen, dass es sich um einen Bot handelt. (Niemand kann sich über den Browser einloggen ohne die Loginmaske gesehen zu haben. Da der Browser zuerst ein GET Request absetzt, wäre das hier das erste, was ich testen würde)
Ein 1:1 Vergleich zwischen Request und Response mit dem Browser und deinem Programm wäre hilfreich.
|
|
|
 |
Similar Threads
|
[C]HTTP Webrequest
10/16/2014 - C/C++ - 15 Replies
Hi, ich fange gerade an C zu lernen und versuche mich so langsam an einen Webrequest heranzuarbeiten. Das Problem ist nur, ich finde weder hier einen Thread darüber und google mag mir anscheinend auch nicht helfen.
Es werden nur ganze Codes gezeigt ohne es zu erklären und Copy und Paste möchte ich vermeiden.
Darum wollte ich mal fragen ob einer da eine gute Seite oder ein Tutorial kennt das mir weiter helfen könnte.
(Bei Youtube bekomme ich immer nur Ergebnisse mit C# und das kann ich...
|
[S]C# WebRequest Programmierer
09/26/2014 - Coders Trading - 2 Replies
Hallo,
ich suche jemanden für eine komplizierte Aufgabe in C#.
Dabei geht es um einen Bot für eine Homepage mit WebRequests.
Bezahlung: 50€+
Genauere Infos per Skype oder PN.
Gruß
|
C# Webrequest
09/25/2014 - .NET Languages - 4 Replies
Hallo Epvp,
suche jemanden der C# Erfahrung hat und mir mal per Skype etwas helfen kann.
Es geht dabei eigl. nur um einen webrequest.
Wäre wirklich sehr nett wenn mir einer hilft!
Gruß
.Tobias
|
C# WebRequest Login
03/11/2013 - .NET Languages - 7 Replies
Hey ho,
Ich versuche jetzt schon seit einiger Zeit mich auf einer gewissen Seite per Programm einzuloggen, doch irgendwie funktioniert das nicht und ich weiss einfach nicht wieso. Habe schon zahlreiche Sachen ausprobiert, ich bekomme aber nie ein Resultat.
Im Moment benutze ich folgenden Code:
try
{
string user = textBox1.Text;
string pass = textBox2.Text;
ASCIIEncoding encoding = new ASCIIEncoding();
|
[C#] Hilfe für Webrequest
09/20/2011 - .NET Languages - 5 Replies
Hallo,
ich möchte ein Programm von mir per hwid absichern.
Also ich habe aus versch. komponenten mir eine hwid zusammen gebastelt.
Jetzt möchte ich eien funktion einbauen die es mir erlaubt leute zuzulassen oder nicht.
Also ich will verhindern das sich das prog zu schnell verbreitet.
|
All times are GMT +1. The time now is 22:16.
|
|