« Posts tagged for

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?

Twitter It!

Undervolting for beginners

So gleich mal eines meiner Tutorials “übernehmen” um den Blog etwas zu füllen,

Vorhaben: Undervolting, d.h. die Corespannung der CPU absetzen um Strom zu sparen und v.a. die Wärmeentwicklung einzudämmen.

Testobjekt: IBM T42, Ati 7500, Intel Pentium M 1,7 GHZ Dothan 2MB Cache

Software:wPrime und RMClock

Dauer: 4 – 6 Stunden

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

Step 1: Download von Wprime(ich nutze 1.60) und Download von RMClock(die kostenlose Version reicht)

Step 2: RMClock starten und konfigurieren.
Folgende Konfiguration wird zum “Testen” benutzt:

(wichtig beim 3. Bild: Ich habe es unter mit dem Ladekabel angesteckt getestet, wenn ihr es ohne Kabel testet, stellt unter Battery ebenfalls “Performance on demand” ein.)
Damit wäre die Testkonfiguration erledigt.

Step 3: Spannungen setzen für den niedrigsten Multiplikator.
Ziel ist es hierbei bei dem niedrigsten Multiplikator die optimale Spannung zu finden.
Dazu schaut ihr unter “Profiles” mal auf die Spalte FID. Die erste Zeile ist der niedrigste Multiplikator (bei mir 6.0x) und ganz unten steht der höchste (bei mir 17.0x).
Also finden wir nun in diesem Beispiel Werte für 6.0x und 17.0x .
Beginnen wir mit dem 6.0x Multiplikator:
Wir setzen diese 2 Häkchen unter Profiles -> Performance on Demand.(Wichtig: Nur der niedrigste Multiplikator soll angehakt sein)

Nun stellen wir eine Spannung ein:

(Wichtig für später: den Haken bei “Auto-adjust intermediate states VIDs” gesetzt lassen, dann berechnet er automatisch die Zwischenwerte)
Nun wählen wir im Rot markierten Teil eine Spannung aus und drücken auf Apply.
Der Spannung wurde gesetzt und der Prozessor wechselt nun seinen Multiplikator nicht mehr.
(Könnt ihr unter CPU-Info prüfen. Dort sollte unter “Current” euer gewählter Multiplikator stehen und die gewählte Spannung. Sollte sich nun nicht mehr verändern!).

Nun wählen wir die niedrigste Spannung welche geht, bei mir ist das 0,700v. Sobald ein Bluescreen kommt oder andere Probleme auftauchen, geht diese Spannungsstufe nicht. Nach einem Neustart ist alles wieder wie im originalen Zustand.
Merkt euch also eure gewählten Werte, und wählt bei einem Absturz/Problemen eine Spannungsstufe höher. Das macht ihr solange bis im Idlezustand nichts abstürzt. (ihr wiederholt immer wieder die fett markierte Schritte)
Nun zum Stabilitätstest: Habt ihr eine Spannungsstufe gefunden welche im Idle stabil ist, startet ihr wPrime und drückt auf Stability Test. Sollte nun dort eine Fehlermeldung erscheinen/ein Bluescreen auftreten so stoppt ihr den Benchmark/Startet neu und wählt in RMClock wieder eine Spannungsstufe höher aus, und wiederholt wieder die Prozedur.
So sollte es in wPrime aussehen:

Sobald wPrime was anderes schreibt wie “Cheat” oder sowas, -> Fehler.
Diese Fettgedruckten Schritte wiederholt ihr mehrmals. D.h. bis ihr eine “fehlerfreie Spannung” habt. Als fehlerfrei lassen wir gelten, wenn wPrime 120 Minuten ohne Fehler läuft und sonst keine Probleme auftreten.

Step 4: Spannungen setzen für den höchsten Multiplikator.
Ziel ist es hierbei bei dem höchsten Multiplikator die optimale Spannung zu finden.
Dazu schaut ihr unter “Profiles” mal auf die Spalte FID. Die erste Zeile ist der niedrigste Multiplikator (bei mir 6.0x) und ganz unten steht der höchste (bei mir 17.0x).
Also finden wir nun in diesem Beispiel Werte für 6.0x und 17.0x .
Auf zum 17.0x Multiplikator:
Wir setzen diese 2 Häkchen unter Profiles -> Performance on Demand.
(Wichtig: Das Häckchen bei 6.0x muss nun weg!! Nur der höchste Multiplikator soll angehakt sein!)

Nun stellen wir eine Spannung ein:

(Wichtig für später: den Haken bei “Auto-adjust intermediate states VIDs” gesetzt lassen, dann berechnet er automatisch die Zwischenwerte)
Nun wählen wir bei 17.0x eine Spannung aus und drücken auf Apply.
Der Spannung wurde gesetzt und der Prozessor wechselt nun seinen Multiplikator nicht mehr.
(Könnt ihr unter CPU-Info prüfen. Dort sollte unter “Current” euer gewählter Multiplikator stehen und die gewählte Spannung. Sollte sich nun nicht mehr verändern!).

Nun wählen wir die niedrigste Spannung welche geht, bei mir ist das 0,956v. Sobald ein Bluescreen kommt oder andere Probleme auftauchen geht diese Stufe nicht. Nach einem Neustart ist alles wieder wie im originalen Zustand.
Merkt euch also eure gewählten Werte, und wählt bei einem Absturz/Problemen eine Spannungsstufe höher. Das macht ihr solange bis im Idlezustand nichts abstürzt. (ihr wiederholt immer wieder die fett markierte Schritte)
Nun zum Stabilitätstest: Habt ihr eine Spannungsstufe gefunden welche im Idle stabil ist, startet ihr wPrime und drückt auf Stability Test. Sollte nun dort eine Fehlermeldung erscheinen/ein Bluescreen auftreten so stoppt ihr den Benchmark/Startet neu und wählt in RMClock wieder eine Spannungsstufe höher aus, und wiederholt wieder die Prozedur.
So sollte es in wPrime aussehen:

Sobald wPrime was anderes schreibt wie “Cheat” oder sowas, -> Fehler.
Diese Fettgedruckten Schritte wiederholt ihr mehrmals. D.h. bis ihr eine “fehlerfreie Spannung” habt. Als fehlerfrei lassen wir gelten, wenn wPrime 120 Minuten ohne Fehler läuft und sonst keine Probleme auftreten.

Step 5: Abschließendes & dauerhafte Konfiguration.
(Bilder hab ich mir hier gespart, sollte alles klar sein)
Herzlichen Glückwunsch, ihr habt eure Spannungen gefunden :-)
Nun konfigurieren wir RMClock so, dass es uns nicht nervt und einfach nur die Spannungen setzt. (Ich werde weiterhin den Battermaximiser einsetzen)
In RMClock stellen wir unter Profiles folgendes ein:
Beim niedrigsten Multiplikator unsere ermittelte Spannung und beim höchsten auch die entsprechende Spannung eintragen. Da nun das Häckchen “Auto-Adjust…” gesetzt ist, (s.o.) werden die Zwischenwerte berechnet und sollten stabil laufen.
Weiterhin stellen wir oebn bei Current und bei Startup sowohl bei Batterie als auch bei AC “Performance on demand” ein. (Also bei allen 4 Feldern).
Dann im Bereich Profiles ->” Performance on demand” Setzen wir Haken bei: “Use p-state transitions” und bei allen Multiplikatoren 6.0x , 8.0x,usw.) sowohl bei Battery als auch bei AC.
Bei “Settings” müsst ihr noch “Run at Windows Startup” -> via Startup Registry Key wählen. (Apply nicht vergessen).
Den Rest könnt ihr wählen wie ihr wollt, kurz meine restliche Konfig:
Bei Battery Info alle Haken weg. Bei Settings: Start minimized, keine balloontips. Kein Application Button in der Taskleiste.

Step 6: Im IBM BatterieMaximiser erstellt/wählt ihr nun ein Profil welches bei AC als auch bei battery als CPU Speed “Adaptive” gewählt hat, alles andere ist euch überlassen.
Andere Profile mit “Slow” “Very Slow” und co. könnt ihr zwar wählen aber ich weiß nicht wie es sich verträgt. Aber im Endeffekt ist Adaptive sowieso das einzig sinnvolle.
(Ich bleibe z.B. immer in dem Profil, somit taktet es bei Bedarf hoch. Adaptive = Taktet nach Bedarf oder für uns Fortgeschrittene: Wählt den Multiplikator nach Bedarf ;)).
Ihr könnt natürlich auch alles über RMClock machen, ich mag halt den Battery Maximiser ;)

Ich hoffe euer Thinkpad lebt noch und ich hoffe ich konnte euch helfen, es klingt/sieht alles bisschen Wirrwarr aus, ist aber eig. nicht schwierig.
Meine Ergebnisse sind sehr gut: 0,7v bei 6.0x und 0,956v bei 17.0x …absoluter Hammer diese Werte. Wie stark das die Akkulaufzeit steigert..wird man sehen, wobei das mehr bei hoher Last etwas bringt. Viel wichtiger: Temperaturen gehen in den Keller und in Verbindung mit TPFancontrol ists nun richtig schön leise und kühl.
(Bei mir: bei 17.0x Vollast 54 Grad C Bei Lüfterstufe 1. Bei 6.0x Vollast 49 Grad C ohne Lüfter)

Mehr gibts nicht zu sagen, ausser: Werte schwanken selbst bei gleichen CPUs, d.h. jeder muss das selbst austesten.

Und noch was: Während wPrime läuft könnt ihr ruhig nebenher Surfen/Arbeiten/usw., das macht den Test sogar realistischer. (Ist halt alles bisschen lahm dann, aber besser wie 2 Stunden nichts tun.)
Bedenkt aber: Der Rechner kann Absturzen -> Datenverlust. Ich selbst hab nebenher eine Runde Openttd gespielt ;)

Nachtrag: Also es ist wohl so, das jegliche Profile im Battery Maximiser im Hinblick auf die CPU Geschwindigkeit keinerlei Wirkung haben solange RMClock läuft. (Alle anderen Einstellungen wie Helligkeit und co. natürlich schon).

Und nach korrekter Konfiguration siehts dann übrigens so aus: schön aufgeräumt. Und falls man immernoch Interesse an Profilen hat, kann man auf das RMClock zeichen klicken und wechseln, sofern man andere Profile konfiguriert hat.

Ich wollte euch die Ergebnisse mit meinem HP Notebook mit Intel® Core™ 2 Duo-Prozessor T5300 (2x 1.73GHz) nicht vorenthalten:

Das Tutorial stammt aus dem Thinkpad-forum, dort habe ich es verfasst, dementsprechend findet die Diskussion hier statt.
Feedbacks/Fragen/Anregungen nehme ich gerne an. (Einfach einen Kommentar hinterlassen oder im Thread posten.)

Twitter It!