Seite 1 von 1

Sneaker Bot

Verfasst: Samstag 20. Juni 2020, 22:29
von Jochen Wagner
Hallo zusammen, ich habe gerade angefangen, Python-Grundlagen zu lernen und mit Hilfe von Tutorials, dem Internet und meinen eigenen Grundkenntnissen versuche ich, meinen eigenen Sneaker-Bot zu erstellen. Damit meine ich ein Script, das die Größe eines Schuhs auswählen, in den Warenkorb legen und den Checkout-Prozess durchlaufen kann. Dies ist sehr nützlich für Schuhe, die nur in begrenzten Mengen released werden, wodurch ein Wiederverkaufswert entsteht. Ich habe bereits einige Scripts mit Selenium erstellt, einem Tool, das automatisch auf Schaltflächen klickt und Werte auf Websites ausfüllt. Dies ist jedoch nicht hilfreich, wenn es darum geht, als schnellstes das Produkt zu kaufen. Besonders wenn die Website aufgrund von zu viel Traffic lange Ladezeiten hat oder wenn sie Website sogar abstürzt. In diesem Fall kann man auf der Website nichts anklicken. Was man also machen muss ist, direkte Anfragen an einen Server zu senden, was ich derzeit mit der Python Requests-Library bei Snipes, einem Sneaker- und Streetwear-Geschäft, versuche. Ich habe bereits Code geschrieben, um die Produkt-URL und die URL, die die ausgewählte Größe enthält, mit der PID (dem Produktcode) zu generieren. Ich versuche jetzt, eine Anfrage zu senden, die die Größe des Artikels auswählt. Zuerst habe ich einen Fehler beim Verweigern des Zugriffs erhalten, aber ich glaube, ich habe diesen Fehler erhalten, weil ich Cookies benötige, um die Größe auszuwählen. Und hier habe ich das Problem. Das Senden von Cookies braucht man bei Selenium nicht, da es sich um eine menschliche Simulation in einem Browser handelt, welche man bei Requests nicht hat. Also untersuchte ich den Request, der die Größenauswahl enthält und entdeckte, einen Cookie. Der normale Befehl für einen Post-Request lautet wie folgt:
r = request.post (url = "UrlHierEinfügen")
Aber um den Cookie zu senden, tun Sie:
r = request.post (url = "UrlHierEinfügen", cookies = "CookieHierEinfügen")
Aber wenn ich das mache, bekomme ich den Fehler „TypeError: string indices must be integers“. Ich benutze übrigens Spyder mit Python 3.7. Vielleicht lässt sich hier jemand finden, der Erfahrung mit Requests in Python und Webautomatisierung hat. Ich würde mich sehr freuen, wenn mir jemand helfen könnte :)
Hier ist mein code (ich habe den cookie abgekürzt, damit das hier nicht zu lang wird):

Code: Alles auswählen

PID = "00013801762718"
url = "https://www.snipes.com/p/" + PID + ".html"
print(url)
print("...")
print("...")
print("...")
AtcUrl = url + "?chosen=size&dwvar_" + PID + "_212=46&format=ajax"
print(AtcUrl)

cookie = "test; __cfduid=d70e19d5d0eb69084e8b1b6f3c2b2067f1592685566; dwsid=QpUYEhZjW01rJT5VQWV-arMzkCRJcMV3TUBY3GGqxOXwMIINgfIBQYHjayWD2dUwtCHcZV8kh8jQRFWA7d3j2g........."

import requests
r = requests.get(url = "https://www.snipes.com/p/00013801762718.html?chosen=size&dwvar_00013801762718_212=46&format=ajax", cookies = cookie)
print(r.content)

Re: Sneaker Bot

Verfasst: Samstag 20. Juni 2020, 23:06
von Sirius3
Importe gehören an den Anfang der Datei. Konstanten schreibt man komplett gross, Variablennamen dagegen komplett klein. Für URL-Parameters benutzt man das params-Argument von request. `r` ist ein sehr schlechter Name, weil einbuchstabig. Oben definierst Du eine URL, unten hast Du aber die selbe nochmal stehen, das sollte immer über die Konstante laufen.
Und Cookies verwaltet man nicht selbst, sondern benutzt requests.Session.

Re: Sneaker Bot

Verfasst: Freitag 8. Januar 2021, 10:29
von WhiteCol
Und auf welcher Grundlage wählt das Skript die Schuhgröße?

Re: Sneaker Bot

Verfasst: Freitag 8. Januar 2021, 11:30
von __deets__
Der Schuhgroesse des Skripterstellers?

Re: Sneaker Bot

Verfasst: Freitag 8. Januar 2021, 13:23
von __blackjack__
Nee mit Machinelearning ermittelte Schuhgrösse mit den grössten Gewinnaussichten. 😉

Re: Sneaker Bot

Verfasst: Montag 8. Februar 2021, 20:19
von __deets__
War natürlich Link Spammer. Unsere herausragende, humorvolle Diskussion belasse ich mal als leuchtendes Beispiel für künftige Generationen stehen.