PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Webshop per Skript bedienen


Psychopat
2021-01-04, 17:12:24
Ich nutze die aktuelle Situation am Grafikkartenmarkt um mich programmiertechnisch weiterzubilden. Ich will mir ein Skript bauen um damit einen Webshop zu bedienen. Ich bin was Webanwendungen angeht ziemlicher Neuling, mal schauen wie weit ich komme...

1. Schritt:
Ich schaue mir an was der Browser sendet, wenn ich einen Webshop bediene. Um das auszulesen benutze ich Postman und das Chrome Plugin Postman Interceptor.

Zum Test nehme ich folgende Seite:
https://www.saturn.de/de/product/_gigabyte-geforce%C2%AE-gt-1030-low-profile-2gb-gv-n1030d5-2gl-2275827.html

Wenn ich die Grafikkarte dort in den Warenkorb lege, logge ich die folgenden vier Aktionen:

Post:
https://www.saturn.de/api/v1/graphql
Body:
{"operationName":"AddProduct","variables":{"items":[{"productId":"2275827","outletId":null,"quantity":1,"serviceId":null,"warrantyId":null}]},"extensions":{"pwa":{"salesLine":"Saturn","country":"DE","language":"de"},"persistedQuery":{"version":1,"sha256Hash":"404e7401c3363865cc3d92d5c5454ef7d382128c014c75f5fc39ed7ce549e2b9"}}}


Get:
https://www.saturn.de/rde_server/res/SEDE/event/basket/sid/f38ae688-a6a5-403e-bce0-9addabe48912?itemids=SEDE2275827&quantities=1


Get:
https://www.saturn.de/api/v1/graphql?operationName=GetDisplayBasket&variables=%7B%7D&extensions=%7B%22pwa%22%3A%7B%22salesLine%22%3A%22Saturn%22%2C%22country%22%3A%2 2DE%22%2C%22language%22%3A%22de%22%7D%2C%22persistedQuery%22%3A%7B%22version%22% 3A1%2C%22sha256Hash%22%3A%22b45a2826c4e654ce15a0e2d21942619300d859113e8c20e39217 1fa462939564%22%7D%7D

Dann kommt noch ein Post mit ewig langem Body.

Wenn ich das richtig sehe, ist das entscheidende der erste Post request. Den kann ich mit Postman auch manuell senden. Wenn ich das mache, kommt als Antwort ein 403 Fehler, in der Nachricht steht:
"Das ging uns leider zu schnell. Um fortzufahren und alle Angebote von Saturn zu sehen, vervollständigen Sie bitte nachfolgendes Captcha."

Bedeutet das, vom Ablauf her stimmt das was ich versuche? Ich habe leider nicht genug Wissen um das einordnen zu können. Die nächste Frage wäre dann, wie ich nicht in die Captcha Abfrage laufe...

Monger
2021-01-04, 17:59:17
Wie du ja auch am Captcha erkennst, ist das ein Szenario was ganz bewusst unterbunden werden soll. Browser führen spezielle Kennungen mit, die klar machen dass hier ein Mensch interagiert.
Manche Betreiber legen explizit ne API offen mit der man dann skripten kann. Ob und wie das aber bei Saturn funktioniert...

kadder
2021-01-05, 19:28:10
Wenn man das wirklich will, muss man in Richtung automatisierter Tests im Rahmen der Website-Entwicklung denken - dafür gibt es Tools, die komplett einen normalen Nutzer simulieren können (inkl. der richtigen "Kennungen", Timings etc.)

Konkrete Tools will ich nicht nennen, um mich nicht zu unbeliebt zu machen ;)

sei laut
2021-01-06, 09:37:37
Wenn man das wirklich will, muss man in Richtung automatisierter Tests im Rahmen der Website-Entwicklung denken - dafür gibt es Tools, die komplett einen normalen Nutzer simulieren können (inkl. der richtigen "Kennungen", Timings etc.)

Konkrete Tools will ich nicht nennen, um mich nicht zu unbeliebt zu machen ;)
Damit kommt er aber vermutlich nicht am Captcha vorbei.

@Psychopat: Dein Ansatz ist korrekt, du bist aber mind. 10 Jahre zu spät. In Zeiten, wo Bots blockiert werden müssen, kommst du mit deinen Anfragen nicht weit.
Höchstens irgendwelche kleinen Shops könnten das noch so zulassen. Aber auch da unwahrscheinlich, weil vieles von diesen Anti Bot Sachen bereits in der Shop Grundinstallation drin sind.

Monger
2021-01-06, 09:54:14
Ich kenn ja dein Szenario nicht, und hab mich da jetzt nicht sooo tief reingekniet - aber es gibt ja wohl Anbieter, die Entwicklern die Möglichkeit bieten, Shopping Angebote per API abzufragen.

https://www.bing.com/search?q=shopping+api&setmkt=de-DE&PC=EMMX20&form=LWS002&scope=web&refcv=lfgP2MFS5kQ%2FhPo2.0.0.2.13312

Ich weiß dass es ne API für Amazon gibt, Google Marketplaces wohl auch.
Aber allen APIs ist wohl gemein, dass man sich authentifizieren muss, und es Einschränkungen gibt, evtl. auch kostenpflichtig.

Ist leider im Internet so: alles was sich gut skripten lässt, verursacht halt Kosten, und der Betreiber muss das relativ schnell deckeln.

universaL
2021-01-09, 14:18:53
wenn man es selbst machen will: Selenium ;-)