Powershell invoke webrequest Login daten übernehmen?
Guten Abend zusammen,
Ich möchte mich aus dem Steamstore Preise mit Powershell abfragen.
$w = Invoke-WebRequest "https://steamcommunity.com/market/listings/730/AWP%20%7C%20Mortis%20%28Field-Tested%29"
[array]$price = $w.AllElements | where class -eq "market_listing_price_listings_block" | select outerText
Mit diesem Script bekomme ich die Preise auf der rechten Seite.
Output Powershell:
Das Problem ist jedoch, dass die Preise in unterschiedlichen Währungen angezeigt werden. Wenn ich mich mit einem Steam Account anmelde, währen die Preise einheitlich.
Mit diesem Script kann ich mich anmelden auf Steam:
$R = Invoke-WebRequest https://steamcommunity.com/login -SessionVariable fb
$Form = $R.Forms[0]
$Form.fields
$Form.Fields["input_username"]="XYYYY"
$Form.Fields["input_password"]="XYYYY"
$Uri = "https://steamcommunity.com/login" + $Form.Action
$R = Invoke-WebRequest -Uri $Uri -WebSession $FB -Method POST -Body $Form.Fields
$R.StatusDescription
$FB.UseDefaultCredentials = $true
Jetzt müsste ich mit diesen Anmeldedaten auch die Webrequest vom Beginn meiner Frage durchführen.
Ich frage mich, wie ich das genau machen kann.
Danke für die Hilfe
4 Antworten
Ich bin derzeit leider Unterwegs und es wäre mühsam Dir ein adäquates Beispiel auf dem Handy zu schreiben🤮.
Arbeite mit der sessionvariable und cookies...
https://www.gngrninja.com/script-ninja/2016/7/8/powershell-getting-started-utilizing-the-web
http://www.powershellcookbook.com/recipe/vODQ/script-a-web-application-session
https://davidhamann.de/2019/04/12/powershell-invoke-webrequest-by-example/
Sehr elegant läßt es sich mit der "Fernsteuerung" des klassischen Internetexplorers arbeiten .
...damit agierst Du als würdest Du von Hand auf einer Seite surfen. Diese Variante ist unumgänglich, wenn Teile der Webseite dynamisch durch Javascript erstellt werden.
Es gibt ja auch noch Taschenrechner ...
LG Culles
Ah ja wäre eine Möglichkeit, jedoch kann es jede erdenkliche Währung sein, wenn ich bei jeder Abfrage noch jede Währung Filtern und umrechnen muss ist nicht unbedingt effizient.
entweder hast du eine Session die du mitgeben kannst oder ein Token , da kenn ich die seite halt nicht im login .
Ich verstehe nicht ganz was du meinst. Die Login Seite ist folgende : https://steamcommunity.com/login
naja , wie halt ein browser so arbeitet , wenn es eine session gibt wird das im browser via cookie mitgeschickt oder es gibt ein token der dir den zugriff erlaubt . bei facebook hole ich mir einen token um weiter zu machen und den muss ich auch mitgeben bei der/jeder anfrage . irgendwie muss ja der server wissen wer ich bin es gibt ja keine Statefull connection , sondern meist so stateless http und damit weis die andere seite schon nach abschicken der datei nix mehr von dir .
Andere Idee: Euro raus filtern und den Rest verwerfen, dann würde das Anmelden wegfallen ;)
Ja, aber das Problem ist dann, falls kein Angebot in Euro angeboten wird, wird nicht herausgefiltert. Ebenfalls kann es auch sein, dass es nur sehr wenige Angebote gibt (1-3 Angebote) In diesen Fällen ist die Wahrscheinlichkeit auf ein Angebot in Euro noch viel kleiner.
Wofür einen Taschenrechner?