Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 02:32

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Browsergame Bot | Informationen wie Geld, Zeit, Status usw...

Discussion on Browsergame Bot | Informationen wie Geld, Zeit, Status usw... within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2011
Posts: 225
Received Thanks: 8
Browsergame Bot | Informationen wie Geld, Zeit, Status usw...

Hallo

Ich bin gerade dabei einen Bot für "Pennergame" zu schreiben.

Dieser sieht bisher so aus:

PHP Code:
//#include <stdio.h>
#include <iostream>
#include <curl\curl.h>
#include <time.h>
void sammeln(CURL *test);
void leeren(CURL *test);


int main()
{
    
CURL *test;
    
curl_global_init(CURL_GLOBAL_ALL);
    
test curl_easy_init();
    
time_t beginendbuffer;
    
buffer 0;
    if (
test)
    {
        
        
curl_easy_setopt(testCURLOPT_URL"http://www.pennergame.de/login/check/");
        
curl_easy_setopt(testCURLOPT_POSTFIELDS"username=XXX&password=XXX&submitForm=Login");
        
curl_easy_setopt(testCURLOPT_COOKIEJAR"cookie");
        
curl_easy_perform(test);
        
curl_easy_reset(test);
        while (
true)
        {
            
sammeln(test);
            
begin time(0);
            do
            {
                
end time(0);
                if (
end != buffer)
                {
                    
system("cls");
                    
std::cout << "Noch " << 605 - (end begin) << " Sekunden!" << std::endl;
                }
                
buffer end;
            
            } while ((
end begin) < 605);
            
leeren(test);
        }
        
    }
    
curl_global_cleanup();
    return 
0;
}

void sammeln(CURL *test)
{
    
curl_easy_setopt(testCURLOPT_URL"http://www.pennergame.de/activities/");
    
curl_easy_setopt(testCURLOPT_COOKIELIST"cookie");
    
curl_easy_perform(test);
    
curl_easy_reset(test);
    
curl_easy_setopt(testCURLOPT_URL"http://www.pennergame.de/activities/bottle/");
    
curl_easy_setopt(testCURLOPT_POSTFIELDS"sammeln=10&konzentrieren=1");
    
curl_easy_setopt(testCURLOPT_COOKIELIST"cookie");
    
curl_easy_perform(test);
    
curl_easy_reset(test);
    
}

void leeren(CURL *test)
{
    
curl_easy_setopt(testCURLOPT_URL"http://www.pennergame.de/activities/");
    
curl_easy_setopt(testCURLOPT_COOKIELIST"cookie");
    
curl_easy_perform(test);
    
curl_easy_reset(test);
    
curl_easy_setopt(testCURLOPT_URL"http://www.pennergame.de/activities/bottle/");
    
curl_easy_setopt(testCURLOPT_POSTFIELDS"type=1&time=10&bottlecollect_pending=True&Submit2=Einkaufswagen ausleeren");
    
curl_easy_setopt(testCURLOPT_COOKIELIST"cookie");
    
curl_easy_perform(test);
    
curl_easy_reset(test);

Der Bot ist ja noch sehr low. Er sucht automatisch nach Flaschen und leert den Einkaufswagen auch im 10 min. Takt aus. Nun würde ich die Flaschen gerne automatisch verkaufen sollte der Preis stimmen (der schwankt).

Bloß ich weiß nicht wie ich an diese Information ran komme, oder an eine Information wie z.B. wv. Geld ich habe o.Ä.

Hoffe jemand kann mir ein paar "Denkanstöße" geben
Krabat2 is offline  
Old 07/31/2015, 02:07   #2

 
xEgoist's Avatar
 
elite*gold: 126
The Black Market: 151/0/1
Join Date: May 2009
Posts: 6,876
Received Thanks: 1,269
Ich hab selbst vor kurzem nen Pennergame bot geschrieben aber mit C#, kann dir aber sagen wie du an die Infos ran kommst.



Wenn du Auf der Seite bist lies den Seitenquelltext

Scroll runter bis du das siehst.



Hier steht der Kurs, dein Geld, max Flaschen einfach alles sogar die Rechnung
Das du z.B. nur so viele Flaschen verkaufst wie es dein Geldbeutel zulässt.
xEgoist is offline  
Thanks
1 User
Old 07/31/2015, 02:57   #3
 
elite*gold: 0
Join Date: Jun 2011
Posts: 225
Received Thanks: 8
Und wie "extrahiere" ich diese Informationen? Mittels einem HTML Parser oder gibt es da bessere Lösungen?
Krabat2 is offline  
Old 07/31/2015, 03:11   #4

 
xEgoist's Avatar
 
elite*gold: 126
The Black Market: 151/0/1
Join Date: May 2009
Posts: 6,876
Received Thanks: 1,269
Quote:
Originally Posted by Krabat2 View Post
Und wie "extrahiere" ich diese Informationen? Mittels einem HTML Parser oder gibt es da bessere Lösungen?
Naja für das bisschen Infos reicht doch regex.

Du kannst den Seitenquelltext mit deinem BOT runterladen, right?

Dann speicher ihn in einen String und such nach der Info ich hab leider keine Ahnung wie das bei C++ ist aber hier sollte ebenfalls regex gehen.

Quote:
Match alle_flaschen = Regex.Match(Seitenquelltext, ".value = (\\d+)");

Hier mal nen kleiner Ausschnitt mit regex aus C# kannst ja mal googeln wie du das bei C++ benutzt es gibt auch viele "Regex Tester" zum schauen ob dein Regex funktionieren würde.

Regex durchsucht dann den ganzen String nach .value = (\\d+) d steht für zahl + steht für mindestens 1 zahl.
xEgoist is offline  
Thanks
1 User
Old 07/31/2015, 12:01   #5
 
elite*gold: 0
Join Date: Jun 2011
Posts: 225
Received Thanks: 8
Bis jetzt habe ich noch keine gescheite Möglichkeit gefunden den Quelltext abzuspeichern, aber ich werde sicherlich noch etwas finden

EDIT:

Habe jetzt herausgefunden wie ich den Quelltext abespeicher, aber wie kopiere ich die Zahl dann? Wie ich sie mit REGEX finde ist kein problem aber wie nutze ich sie dann
Krabat2 is offline  
Old 08/02/2015, 01:29   #6

 
xEgoist's Avatar
 
elite*gold: 126
The Black Market: 151/0/1
Join Date: May 2009
Posts: 6,876
Received Thanks: 1,269
Da gibts ja nicht nur eine Zahl du musst damit rechnen.

Kannst ja auf der Pennergame Seite die Rechnung mal anschauen die ist im Seitenquelltext also hab ja oben auch nen link gepostet.

Hab hier auch noch mein Code
Hab da ebenfalls geübt, Rechtschreib- und Grammatikfehler inc. :P
(Natürlich wieder C#, aber wolltest ja nur wissen was du mit den Zahlen machst)


Am Ende musst du nur noch die Verkaufsmenge an die Website schicken. Machst du genauso wie nen Login.
xEgoist is offline  
Old 08/04/2015, 00:43   #7
 
elite*gold: 0
Join Date: Jun 2011
Posts: 225
Received Thanks: 8
Ich hab jetzt alles geschafft ist nur leider ein "konsolen" bot, ich muss mich mal damit beschäftigen wie ich eine Oberfläche gescheit hinkriege
Krabat2 is offline  
Old 08/04/2015, 11:52   #8
 
const*'s Avatar
 
elite*gold: 0
Join Date: Mar 2015
Posts: 776
Received Thanks: 313
Quote:
Originally Posted by Krabat2 View Post
Ich hab jetzt alles geschafft ist nur leider ein "konsolen" bot, ich muss mich mal damit beschäftigen wie ich eine Oberfläche gescheit hinkriege
Du kannst unter Visual Studio (2010) ganz einfach Forms erstellen und auch designen, dir wird aber auffallen, dass der Code syntaktisch anders ist und von C# Funktionen klaut.
const* is offline  
Old 08/04/2015, 17:26   #9
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
oder man nimmt eine vernünftige gui library oder die win api.
Also entweder QT, GTK oder CreateWindow und die dazugehörigen standrad controls.

Für deinen fall dürfte die WinApi vollkommen reichen. Da sind alle standard schaltflächen und textfelder vorhanden. siehe dazu Google: CreateWindow und
YatoDev is offline  
Old 08/05/2015, 10:54   #10
 
elite*gold: 0
Join Date: May 2010
Posts: 107
Received Thanks: 30
Quote:
Originally Posted by »FlutterShy™ View Post
oder man nimmt eine vernünftige gui library oder die win api.
Also entweder QT, GTK oder CreateWindow und die dazugehörigen standrad controls.

Für deinen fall dürfte die WinApi vollkommen reichen.
Ja du Held, und das nächste 3D-MMORPG programmieren wir dann in Assembler oder was?
Ninjotzu is offline  
Old 08/05/2015, 11:12   #11
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Was ist denn dein Problem?
Kein Grund so assi zu reagieren, er hat völlig Recht damit, dass die WinApi völlig ausreicht.
Er will nur eine einfache Oberfläche bauen, die vermutlich nur paar Sachen anzeigt und ein oder zwei Eingabefelder. Dafür ist ein so aufgeblasenes Toolkit wie Qt oder sogar wxWidgets völlig übertrieben, und schadet vermutlich mehr als es hilft (Als Anfänger ist man schnell überfordert)

Padmak
Padmak is offline  
Old 08/05/2015, 13:19   #12
 
elite*gold: 0
Join Date: May 2010
Posts: 107
Received Thanks: 30
Quote:
Originally Posted by Padmak View Post
Was ist denn dein Problem?
Kein Grund so assi zu reagieren, er hat völlig Recht damit, dass die WinApi völlig ausreicht.
Er will nur eine einfache Oberfläche bauen, die vermutlich nur paar Sachen anzeigt und ein oder zwei Eingabefelder. Dafür ist ein so aufgeblasenes Toolkit wie Qt oder sogar wxWidgets völlig übertrieben, und schadet vermutlich mehr als es hilft (Als Anfänger ist man schnell überfordert)

Padmak
Sorry, aber das ist ja an Naivität gar nicht mehr zu überschreiten... . Jetzt mal Klartext.

Die WinApi ist eine von Microsoft,- für Windows,- bereitgestellte, spezifizierte Schnittstelle zum Betriebssystem.
In erster Linie ist damit also nicht die GUI-Programmierung beabsichtigt, sondern pure ,- und vor allem uneingeschränkte, - Windows-Entwicklung verbunden.

Der ganze Windowsspezifische Kram resultiert dann mit 60-80 Zeilen Code für ein leeres Fenster, das studieren der Nachrichtenverarbeitung, dem rumschlagen mit Ansi und Unicode Strings, der Bitmanipulierung (oder Verwendung von fehleranfälligen Makros) zur korrekten Nachrichtenauswertung, dem notwendigen Wissen bzgl. der Fehlerbehandlung,- sowie Auswertung und viele viele weitere Themen die bei Unwissenheit zu Bugs führen können, nach denen man Stunden lang suchen kann.


Vor mir liegt also ein nativer Code mit einem Umfang von schätzungsweise nicht mehr als 80 Zeilen, dessen Funktionalität in eine GUI auszulagern ist.
Warum sollte man also auf die Benutzung von QT, dem damit verbundenen ausgereiften Toolkit zur GUI-Erstellung, dem nativen C++ und dem vermutlich um 90% gekürzten Quellcode verzichten?
Etwa weil er auf die WinApi angewiesen ist? Nein. Kein Stück.

Ich zitiere dich:

Quote:
Originally Posted by Padmak View Post
Er will nur eine einfache Oberfläche bauen, die vermutlich nur paar Sachen anzeigt und ein oder zwei Eingabefelder.
Die Tatsache, dass du einem Anfänger die WinApi, nicht aber QT bzw. wxWidgets zumutest war natürlich auch sehr interessant..

Quote:
Originally Posted by Padmak View Post
Dafür ist ein so aufgeblasenes Toolkit wie Qt oder sogar wxWidgets völlig übertrieben, und schadet vermutlich mehr als es hilft (Als Anfänger ist man schnell überfordert)
Ninjotzu is offline  
Old 08/05/2015, 14:01   #13
 
elite*gold: 0
Join Date: Mar 2010
Posts: 360
Received Thanks: 132
so schlimm is die WinApi gar nicht, und 80 Zeilen Code für ein Leeres Fenster ist übertrieben

Ein wenig künstlerische Freiheit, hier ein paar Manuell gezeichnete Linien, da ein paar Linien und man kann auch was schönes damit erreichen xD



Das einlesen in die WinAPI dauert aber schon sehr lange.. und bis man den ganzen subclass kram verstanden hat.
Daifoku is offline  
Old 08/05/2015, 14:22   #14
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
Quote:
Originally Posted by Ninjotzu View Post
Sorry, aber das ist ja an Naivität gar nicht mehr zu überschreiten... . Jetzt mal Klartext.

Die WinApi ist eine von Microsoft,- für Windows,- bereitgestellte, spezifizierte Schnittstelle zum Betriebssystem.
In erster Linie ist damit also nicht die GUI-Programmierung beabsichtigt, sondern pure ,- und vor allem uneingeschränkte, - Windows-Entwicklung verbunden.
No shit sherlock die Windows API (Application Programming Interface) ist eine Schnittstelle (Interface) für die Anwendungsentwicklung (Application Programming) unter Windows (Windows)? Wie kommst du bloß darauf

Quote:
Originally Posted by Ninjotzu View Post
Der ganze Windowsspezifische Kram resultiert dann mit 60-80 Zeilen Code für ein leeres Fenster, das studieren der Nachrichtenverarbeitung, dem rumschlagen mit Ansi und Unicode Strings, der Bitmanipulierung (oder Verwendung von fehleranfälligen Makros) zur korrekten Nachrichtenauswertung, dem notwendigen Wissen bzgl. der Fehlerbehandlung,- sowie Auswertung und viele viele weitere Themen die bei Unwissenheit zu Bugs führen können, nach denen man Stunden lang suchen kann.


Vor mir liegt also ein nativer Code mit einem Umfang von schätzungsweise nicht mehr als 80 Zeilen, dessen Funktionalität in eine GUI auszulagern ist.
Warum sollte man also auf die Benutzung von QT, dem damit verbundenen ausgereiften Toolkit zur GUI-Erstellung, dem nativen C++ und dem vermutlich um 90% gekürzten Quellcode verzichten?
Etwa weil er auf die WinApi angewiesen ist? Nein. Kein Stück.
80 Zeilen für ein Leeres window? 30 Zeilen vielleicht für das leere window, die man einfach copy&pasten kann, pro Control einfügen 2 weitere Zeilen, die man selbst machen muss. Pro Messageabfrage dann vielleicht noch 2 Zeilen.

Der aufwand (für kleine GUI's natürlich nur) ist mit windows API da fast nichts, im vergleich mit dem Einarbeiten in ein Komplett neues Framework.


Und dein problem mit der Windows API verstehe ich auch nicht so ganz, hat dir ein Böser Microsoft Entwickler mal als Kind die Süßigkeiten geklaut? Als Entwickler muss man ab und an auf die System API's zurückgreifen, und da ich denke dass der TE sowieso windows Entwicklung betreibt warum sollte er sie nicht nutzen wollen?
warfley is offline  
Thanks
1 User
Old 08/05/2015, 16:28   #15
 
elite*gold: 0
Join Date: May 2010
Posts: 107
Received Thanks: 30
Quote:
30 Zeilen vielleicht für das leere window, die man einfach copy&pasten kann, pro Control einfügen 2 weitere Zeilen, die man selbst machen muss.
Anhand dieser Aussage kann man deine Fähigkeiten als Programmierer ja schon mal gut einschätzen. Wenn sich der Wundercode deines Fensters auf 30 Zeilen beschränkt, dann kann ich aus dem "Copy & Paste" nur schließen, dass du nicht eine einzige Zeile davon verstanden hast.

Quote:
Und dein problem mit der Windows API verstehe ich auch nicht so ganz, hat dir ein Böser Microsoft Entwickler mal als Kind die Süßigkeiten geklaut?
Woher nimmst du denn bitte die Annahme, dass ich ein Problem mit der WinApi habe? Ich habe mich Jahrelang sehr ausführlich mit der WinApi beschäftigt, während du nicht einmal Ansatzweise verstehst worum es dabei geht, geschweige denn den Umfang einschätzen kannst.
Nicht zuletzt habe ich als (SL)Treiberentwickler für sowohl UMDF,- als auch KMDF-Driver und Kernel-Reverse Engineerer so einige nette Erfahrungen im Low-Level Bereich gemacht und kann davon auch heute noch extrem gut profetieren. Als ich den APC-TimeOut für LoL verkauft habe haben die kleinen Racker schließlich auch noch versucht mit ihrer DLL-Injection weiter zu kommen .

Also du Gartenzwerg ich würde dir jetzt mal empfehlen ins AutoIt Forum zu maschieren, denn da liegen deine Chancen immerhin bei einem 6er im Lotto mal etwas zu erreichen.
Ninjotzu is offline  
Reply




All times are GMT +1. The time now is 02:33.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.