« Archives in August, 2009

NBN haut mal wieder Gewinne raus

Sascha von Netbooknews.de haut mal wieder Gewinne raus. Heute ist eure Kreativität gefragt, denn er sucht ein Subnotebook und braucht eure Beratung ;) Also gebt Gas, es gibt schließlich eine SSD zu gewinnen ;)

Ich hoffe ja es gibt wieder so eine tolle Liveziehung via Stream, war letztes mal sehr funny, auch wenn man meist leer ausgeht.

Na dann, Viel Glück!

Edit: Hier der Link zum Gewinnspieleintrag (*sry* fürs vergessen)

Einkaufen für Geeks (mit Curl)

Wer kennt sie nicht, die normalen Onlineshops mit ihrem typischen System ala “in den Warenkorb legen”.

EDIT: Da der Pollinshop sich geändert hat vor kurzem, wird das hier so nicht mehr gehen!

Für uns Geeks ist das natürlich viel zu grafisch und viel zu langsam, v.a. wenn man mal kurz 40 Artikel in nen Warenkorb pressen muss.

Natürlich wollen wir aber das Ergebnis trotzdem im Browser verifizieren ;)

Ich werde das mal kurz am Beispiel Pollin.de erläutern:

Warnung: Für Schäden wird keinerlei Haftung übernommen, Benutzung erfolgt absolut auf eigene Gefahr.

Software:Firefox, Windows, cURL, das FireFox Addon Live HTTP Headers

Voraussetzungen: leichte Ahnung von Batch, Lesen der cURL FAQ Abteilung, bisschen Live HTTP Headers Erfahrung

Dauer: 5 Minuten (wenn mans schonmal gemacht hat)

Also erst mal cURL runterladen, dann die curl.exe in irgendeinen neuen Ordner tun. (das ist sozusagen nun unser “Projektordner”).

Nun schauen wir uns unseren Shop in dem wir einkaufen wollen etwas genauer an:

Wenn wir den Link kopieren den wir beim Klick auf “Mein Warenkorb” bekommen, erhalten wir: http://www.pollin.de/shop/warenkorb.php

Danach erstellen wir mit Notepad (oder ähnl.) eine neue text Datei, Namen könnt ihr euch selbst aussuchen.

Nun ändern wir diese von .txt in .bat um und bearbeiten sie mit Notepad.

Nun schmeissen wir folgenden Batch-Befehl da rein:

curl -b “cookies.txt” -c “cookies.txt” –output “test.html” “http://www.pollin.de/shop/warenkorb.php”

(-b liest cookies.txt aus, -c cookies.txt schreibt cookies, –output legt die Outputdatei fest, und der rest ist der Link zum Warenkorb).

Weiterhin würde ich in die nächste Zeile ein

pause

schreiben, damit die Batch-Datei wartet nachdem der cURL Befehl ausgeführt wurde.

Danach führen wir das Ding aus, und erhalten test.html (kann man eig. gleich wieder löschen, oder kurz mal ansehen, stellt eig. nur nen leeren Warenkorb dar ohne jegliche Bilder) und cookies.txt.

Nun öffnen wir FireFox und gehen dort ebenfalls auf http://www.pollin.de/shop/warenkorb.php

Nun gehen wir im FF in Extras -> Einstellungen -> Datenschutz -> einzelne Cookies löschen und suchen mal nach Pollin.de

Da findet man dann zwei Cookies, interessant ist PHPSESSID. Den Wert kopiert man in die Cookies.txt Datei.

www.pollin.de    FALSE    /    FALSE    0    PHPSESSID   XXX

(XXX mit der PHPSESSIONID ersetzen.)

Was haben wir da nun gemacht? Nun wir haben die SessionIDs abgeglichen, d.h. der Webshop denkt nun das cURL und FF den gleichen Warenkorb (stark vereinfacht gesagt) benutzen. Somit sieht man jede Änderung auch im FF.

Nun kommt unser Lieblingsaddon Live HTTP Headers zum Einsatz:

Wir gehen dort rein im FF über Extras -> Live HTTP Headers, gehen auf Generator und drücken erstmal auf löschen.

Lasst das Fenster im FF offen und legt einfach mal einen zufälligen Artikel in den Warenkorb, aber nicht über den normalen Weg, sondern im Warenkorb selbst gebt ihr eine (echte!) Artikelnummer ein und eine Anzahl und drückt auf “aktualisieren”.

In Live HTTP Headers erhaltet ihr nun:

POST /shop/warenkorb.php wk_hinzu_anzahl=1&wk_hinzu_bestellnr1=44&wk_hinzu_bestellnr2=700963&wk_anzahl_0=2&btn_wkrefresh=Aktualisieren&katalogjn=0

Tada! Da steht nun alles was wir brauchen um einen cURL Befehl zu bauen:

curl -d “wk_hinzu_anzahl=1” -d “wk_hinzu_bestellnr1=44” -d “wk_hinzu_bestellnr2=700963” -b “cookies.txt” –output “Pollin.html” “http://www.pollin.de/shop/warenkorb.php”

Was geschieht hier? -d Postet eine Variable, somit wird die Anzahl und die zweigeteilte Bestellenummer übermittelt, den Rest der Variablen kann man mal weglassen. (man könnte das auch noch einbauen, ist ja kein großer Akt. -d “katalogjn=0” usw.), -b “cookies.txt” stellt sicher, dass wir die gleiche Session wie im FF nutzen.

Nun löschen wir aus unserer Batchdatei den alten Curl-Befehl raus (oder schreiben REM davor, dann wird er ignoriert) und schreiben den neuen hinein bzw. drunter. Diesen “neuen” Befehl können wir nun x Mal untereinander hinschreiben mit verschiedenen Artikelnummern.

Nach einem Klick auf die Batch füllt sich der Warenkorb. Im FF drückt ihr F5 und voilà ihr habt eure gewünschten Artikel drin :)

Was nutz das nun? fragt sich sicher der ein oder andere. Nunja, schreibt man sich noch ein Script welches die Artikelnummern aus einem Excelsheet oder sowas extrahiert, dann kann man größere Einkäufe nun sehr schnell abwickeln.

Übrigens wenn man das mal gemacht hat, kann man so ein Batch-Script sehr schnell schreiben, das geht dann schneller als die Artikel von Hand eintragen.

Geekig oder nicht?