McDonald’s - Mein Burger Voting Bot (Top 10 in 3 Stunden)

11
eingestellt am 17. Apr 2020
Derzeit gibt es bei McDonald’s ein Voting, bei dem man für seinen oder andere Burger stimmen kann. Je mehr Stimmen, desto höher wird man auch im Ranking positioniert. Aus den Top 10 werden 3 Burger ausgewählt, die in ganz Österreich in allen Fillialen erhältlich sein werden und die Gewinner bekommen zusätzlich noch 2.000 Ms. Da ich schon vor über 2 Jahren einen Bot für das Ostereierfärben Spiel geschrieben habe, dachte ich mir, dass ich auch für dises Voting einen automatisierten Bot schreiben kann und hier eine Anleitung dazu poste.

Wie kann man öfter als 1 Mal voten?
Als erstes habe ich mir die Seite angeschaut und Schwachstellen gesucht. Ich habe herausfinden wollen, wie man auf einem Gerät öfter als 1 Mal voten kann.
Beim Seitenaufruf wird man als erstes gefragt, ob man alle Cookies, oder nur die Erforderlichen akzeptieren will. Diese abgespeicherten Cookies verrate beim erneuten Seitenaufruf also, dass man sich bereits auf der Website befunden hat und vielleicht auch schon gevotet hat. Meine Idee: Ganz einfach das Anlegen von Cookies im Browser deaktivieren (Und natürlich auch die schon vorhandenen Cookies löschen). Aktualisiert man nun die Seite, kommt immer die Meldung mit dem akzeptieren der Cookies und man kann wieder Voten.
Aber nicht zu früh gefreut! Nach dem fünften Vote funktioniert es plötzlich nicht mehr. Ich habe länger über legt warum und bin auf folgendes gestoßen: Pro IP-Adresse ist es nur 5 Mal möglich zu Voten, denn dann akzeptiert der Server keine Votes mehr. D. h. man muss alle 5 Votes seine IP-Adresse ändern. Es gibt viele Möglichkeiten um das zu bewerkstelligen, hier einige aufgelistet:
  • Proxyserver
  • VPN
  • Tor Browser
Gleich vorab: Mit dem Tor Browser funktionierte es bie mir komischerweise nicht. Ich habe keine Antwort wieso, aber ich konnte damit kein einziges Mal voten.
Der Proxyserver wäre auch eine Möglichkeit, aber ich habe mich für VPN entschieden, da es einige Vorteile hat, auf die ich noch später eingehen werde.

Wie funktioniert der Bot?
Diese Schritte durchläuft der Bot beim automatisiertem Voten:
  • Der Bot fragt beim Starten, wie viele Votes man haben möchte. Genauergesagt fragt er, wie viele IP-Adressen-Durchgänge er machen soll. Gibt man also 25 ein, wird der Bot 25 Mal die IP-Adresse ändern und jeweils 5 Mal voten (25*5=125Votes).
  • Als nächstes offnet der Bot den Browser, aber noch nicht die Seite, wo gevotet wird
  • Die IP-Adresse wird mittels VPN verschleiert. Das macht der Bot ganz automatisch und wartet kurz, bis eine Verbindung mit einem Server hergestellt worden ist.
  • Jetzt wird die Seite mit dem Burger aufgemacht.
  • Es wird der Button Cookies erlauben angeklickt.
  • Und dann noch der Button zum Voten.
  • Danach wird die Seite noch 4 Mal neu geladen und erneut gevotet.
  • Nach dem fünften Mal wird mit einem anderen VPN-Server gearbeitet und es geht von vorne los (der Browser bleibt aber offen, es wird einfach wieder aktualisiert)

Welche Programme und Tools wurden verwendet?
  • Selenium: Um den Browser automatisiert zu verwenden habe ich Selenium verwendet. Vorteilhaft daran ist, dass die Maus dabei nicht verwendet wird und man sogar den Browser minimieren kann und es wird trotzdem gevotet.
  • NordVPN: Als VPN habe ich NordVPN gewählt, da man mittels Befehl (nordvpn -connect) in der Shell die Verbindung aufbauen kann. Andere VPN anbieter haben dieses Feature nicht.
  • Python: Den Bot habe ich in Python geschrieben. Das war sogar mein erstes Python Programm, ist also nicht perfekt geschriben, aber erfüllt seinen Zweck. Hier ist es auch wichtig den richtigen Treiber für den Browser zu verwenden, um Python mit Selenium zu verwenden.
  • Firefox: Erst habe ich den Bot mit Chrome realisieren wollen, aber mit Firefox habe ich weniger Progleme beim Automatisieren gehabt.

Wie kann ich den Bot verwenden?
Die Vorasusetzungen sind die 4 Programme und Tools. Erst würde ich Python und dann Selenium installieren. Als nächstes ist NordVPN notwendig. NordVPN ist zwar kostenpflichtig, es gibt aber eine Geld zurück Garantie. Firefox würde ich empfehlen, aber es kann auch ein andere Browser verwendet werden, da muss aber der Code vom Bot ein wenig umgeschrieben werden.
Der Bot besteht aus Lediglich 90 Zeilen Code. Hier ein Link zu dem Code: drive.google.com/fil…ing
Ich habe die wichtigsten Zeilen von dem Code mit Kommentaren beschrieben. Es sollte auf jeden Fall der Link zu dem Burger, der Pfad zum Programm NordVPN und die Wartezeit pro Vote im Code geändert werden.
Als nächstes erstellt man einen Ordner. Ich habe meinen "Mein Burger Bot" benannt und in diesen kommt die "Mein_Burger_Bot.py" Datei. In einem CMD Fenster kann der Bot nun mit dem Befehl "Mein_Burger_Bot.py" gestartet werden. Man gibt die Anzahl der Durchgänge ein und es geht schon los.
229176-E7lSh.jpgEs wird ein zufälliger Server aus einem zufälligem Land gewählt. Da es auch passieren kann, dass ein Server nochmal verwendet wird und somit die IP-Adresse wieder dieselbe ist, wird das sofort erkannt und der nächste Server wird gesucht (Siehe # 3: Voting from Germany). Es kann auch zu anderen Fehlern beim Laden der Seite kommen, die werden mit "ERR m" oder "ERR v" gekennzeichnet. Die abgegebenen Votes werden immer wieder angezeigt (Votes: (14 of 16)) um den Prozess mitzuverfolgen.



Ich habe schon 4 Burger in die Top 100 gevotet und so langsam nähern sich diese den Top 10. Es ist noch Platz für ein paar Burger, also wer mag kann auch mitmachen.
Für Fragen zum Aufsetzen des Bots oder zum Programmcode stehe ich gerne zur Verfügung. Einfach hier unten kommentieren
Zusätzliche Info
Gewinnspiele
11 Kommentare
wehe du fakest da nen grauslichen Burger rein...
Der_Prophet17/04/2020 13:03

wehe du fakest da nen grauslichen Burger rein...


Keine Sorge, sind gut
EggerMoney17/04/2020 13:05

Keine Sorge, sind gut


Votest du deine Erfindungen hoch oder suchst du eh gute Burger aus
Das schlimme daran ist ja das es Mc donalds sicher egal ist wie die ganzen votes zustande gekommen sind
KoltesPunti17/04/2020 14:17

Das schlimme daran ist ja das es Mc donalds sicher egal ist wie die ganzen …Das schlimme daran ist ja das es Mc donalds sicher egal ist wie die ganzen votes zustande gekommen sind



Ich hab mir leider keinen Burger erstellt und mittlerweile ist das nicht mehr möglich. Aber ich Vote die von Freunden hoch
KoltesPunti17/04/2020 14:17

Das schlimme daran ist ja das es Mc donalds sicher egal ist wie die ganzen …Das schlimme daran ist ja das es Mc donalds sicher egal ist wie die ganzen votes zustande gekommen sind



Nicht ganz. Bei dem ersten Burger den ich geboostet hab sind viele Votes gelöscht worden, weil ich ihn zu schnell in die top 25 gebracht hab. Der Bot jetzt ist viel "humaner" und votet in bestimmten Zeitabständen. Ich nehme an, dass ein Mitarbeiter drüber schaut.
@STP_HipHop hat es bei dir damals geklappt mit dem Ostereierfärber?

Ich hab mir damals auch einen Bot geschrieben und mich auf Platz #1 gebotet. Habe das Gewinnspiel aber nicht gewonnen sondern es haben 3 ganz andere Eier gewonnen. Bin damals mit der Erkenntnis ausgestiegen, dass es eh fake Gewinnspiele sind. Hat es damals bei dir geklappt?
Bearbeitet von: "Fridoo" 17. April
Fridoo17/04/2020 16:31

@STP_HipHop hat es bei dir damals geklappt mit dem Ostereierfärber? Ich …@STP_HipHop hat es bei dir damals geklappt mit dem Ostereierfärber? Ich hab mir damals auch einen Bot geschrieben und mich auf Platz #1 gebotet. Habe das Gewinnspiel aber nicht gewonnen sondern es haben 3 ganz andere Eier gewonnen. Bin damals mit der Erkenntnis ausgestiegen, dass es eh fake Gewinnspiele sind. Hat es damals bei dir geklappt?


Also für dieses Spiel hab ich den Bot programmiert. Da hat man ja Gutscheine für Gratis Produkte bekommen. Der Bot hat sich in der App registriert, die e-Mail bestätigt, sich eingeloggt und hat das Spiel gespielt. Leider war der Bot sehr verbuggt und ist oft abgestüzt (Würde ich nochmal einen Bot machen, dann würde ich wahrscheinlich emulieren und nicht den Bildschirm übertragen). Aber da hat es ja kein Gewinnspiel mit Ranking gegeben oder?
3502418-gwzg1.jpg
Bearbeitet von: "EggerMoney" 17. April
EggerMoney17/04/2020 16:42

Also für dieses Spiel hab ich den Bot programmiert. Da hat man ja …Also für dieses Spiel hab ich den Bot programmiert. Da hat man ja Gutscheine für Gratis Produkte bekommen. Der Bot hat sich in der App registriert, die e-Mail bestätigt, sich eingeloggt und hat das Spiel gespielt. Leider war der Bot sehr verbuggt und ist oft abgestüzt (Würde ich nochmal einen Bot machen, dann würde ich wahrscheinlich emulieren und nicht den Bildschirm übertragen). Aber da hat es ja kein Gewinnspiel mit Ranking gegeben oder?[Bild]


Achso dann reden wir von 2 verschiedenen Dingen. Es gab mal ein Gewinnspiel bei welchen man ein Osterei designt hat und nach ein paar Wochen hat das Ei mit den meisten Upvotes gewonnen. Wenn ich so darüber nachdenke bin ich mir gar nicht mehr sicher ob es von McDonald's war
Auf alle Fälle gab es dort keine offizielle Rangliste, man konnte sich nur durch die Eier durchklicken und upvotes vergeben. Ich hab aber alle erstellten Eier (waren einfach durchnummeriert auf der Webseite) einmal pro Stunde automatisiert durchgescannt und die Likes gezählt. Hab mir also meine eigene Rangliste erstellt und mir immer paar mehr Likes gegeben als #2. Naja gewonnen haben dann 3 Eier welche nicht in meiner Rangliste aufschienen und weniger Likes hatten als die Top 5 aus meiner Liste. Ich bin mir bis heute nicht sicher ob ich einfach etwas übersehen habe (sie bots ziemlich gut erkannt und gelöscht haben) oder das ganze Gewinnspiel fake war
Warum gehst du den Umweg via Selenium und Browser?
Du kannst ja eine http library in python verwenden und die entsprechenden requests selbst absetzen. Mal mit fiddler mit sniffen was da passiert.
Und in weiterer Folge könnte man dann evtl noch diverse proxy listen anzapfen für die requests. So hätte man alle abhängigkeiten eliminiert und der bot wäre einfacher einsetzbar
shys17/04/2020 18:52

Warum gehst du den Umweg via Selenium und Browser?Du kannst ja eine http …Warum gehst du den Umweg via Selenium und Browser?Du kannst ja eine http library in python verwenden und die entsprechenden requests selbst absetzen. Mal mit fiddler mit sniffen was da passiert.Und in weiterer Folge könnte man dann evtl noch diverse proxy listen anzapfen für die requests. So hätte man alle abhängigkeiten eliminiert und der bot wäre einfacher einsetzbar


Ich habe es bereits mit http Requests versucht, aber leider ohne Erfolg. Ich habe mir angeschaut wie die URL zusammengestellt wird aber konnte es nicht richtig reproduzieren. Grundsätzlich wird beim Seitenaufruf eine GUID erstellt und als Cookie gespeichert. Diese wird dann immer aus dem Cookie gelesen und in der URL mitgeschickt. Weiter wird noch ein Timestamp in der URL mitgeschickt, wann man gevotet hat. Leider war das Voten mit den URL Requests bei mir immer ungültig.
Und wie würdest du das mit der Proxy machen? Wie bekomm ich immer eine andere? Ich habe mittlerweile knapp 1000 verschiedene VPN server verwendet. Da bräuchte man eine lange Proxy Liste.
Dein Kommentar
Avatar
@
    Text