CSV Datei via PowerShell und API downloaden
Hallo zusammen,
ich versuche gerade über die API von Ariva eine CSV Datei über PowerShell zu laden.
Folgenden Fehler erhalte ich:
Wenn ich mir die $api ausgeben lasse (die Datumsangaben baue ich vorher zusammen, benötigtest Format:z.b. 01.01.2018) und zb in Chrome einfüge, lade ich ganz normal die .csv Datei runter.
Gebe ich der $api einen anderen Wert, von einer Datei die ich selbst hoste, funktioniert alles bestens.
Ich habe unter anderem "wget" (Im Endeffekt ein Invoke-WebRequest), die Methode mit einem WebClient und die BitTransfer Methode ausprobiert. Bei allen Methoden kommt immer ein Verbindungsfehler.
Was ich auch noch getestet haben ist, in Chrome die Entwickler Tools aufmachen und den API Request senden. Dann Bei dem entsprechenden Eintrag unter Network, Rechtsklick und als PowerShell Command kopieren. Dabei kommt auch ein Invoke-WebRequest dabei raus, der mit Header Parametern etc. gefüllt ist. Eben so, wie wenn Chrome den Request machen würde. Funktioniert trz. nicht.
Habt ihr noch eine Idee wie ich es noch probieren könnte? Die Seite scheint den Versuch mit Powershell irgendwie zu erkennen.
mfg
maddig
ich versuche gerade über die API von Ariva eine CSV Datei über PowerShell zu laden.
$path = "C:\temp\out.csv"
$api = "http://www.ariva.de/quote/historic/historic.csv?secu=40956&boerse_id=34&clean_split=1&clean_payout=0&clean_bezug=1&min_time="+$datepast+"&max_time="+$datecurrent+"&trenner=%3B&go=Download"
Invoke-WebRequest -Uri $api -OutFile $path -Proxy "http://proxyaddress:3128"
Folgenden Fehler erhalte ich:
Invoke-WebRequest : Die zugrunde liegende Verbindung wurde geschlossen: Unerwarteter Fehler beim Senden..
In C:\Users\User\Desktop\script.ps1:23 Zeichen:1
+ Invoke-WebRequest -Uri $api -OutFile $path -Proxy "http://proxyaddress. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Wenn ich mir die $api ausgeben lasse (die Datumsangaben baue ich vorher zusammen, benötigtest Format:z.b. 01.01.2018) und zb in Chrome einfüge, lade ich ganz normal die .csv Datei runter.
Gebe ich der $api einen anderen Wert, von einer Datei die ich selbst hoste, funktioniert alles bestens.
Ich habe unter anderem "wget" (Im Endeffekt ein Invoke-WebRequest), die Methode mit einem WebClient und die BitTransfer Methode ausprobiert. Bei allen Methoden kommt immer ein Verbindungsfehler.
Was ich auch noch getestet haben ist, in Chrome die Entwickler Tools aufmachen und den API Request senden. Dann Bei dem entsprechenden Eintrag unter Network, Rechtsklick und als PowerShell Command kopieren. Dabei kommt auch ein Invoke-WebRequest dabei raus, der mit Header Parametern etc. gefüllt ist. Eben so, wie wenn Chrome den Request machen würde. Funktioniert trz. nicht.
Habt ihr noch eine Idee wie ich es noch probieren könnte? Die Seite scheint den Versuch mit Powershell irgendwie zu erkennen.
mfg
maddig
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 427347
Url: https://administrator.de/contentid/427347
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
11 Kommentare
Neuester Kommentar
Moin,
Wenn das Dein Verdacht ist, hast Du dann schon mal mit -userAgent versucht, dem Aufruf z. B. Internet Explorer oder Firefox mitzugeben?
hth
Erik
Zitat von @maddig:
Habt ihr noch eine Idee wie ich es noch probieren könnte? Die Seite scheint den Versuch mit Powershell irgendwie zu erkennen.
Habt ihr noch eine Idee wie ich es noch probieren könnte? Die Seite scheint den Versuch mit Powershell irgendwie zu erkennen.
Wenn das Dein Verdacht ist, hast Du dann schon mal mit -userAgent versucht, dem Aufruf z. B. Internet Explorer oder Firefox mitzugeben?
Invoke-WebRequest [...] -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)
hth
Erik
Invoke-WebRequest verwendet einen IE-Kompatibilitätsmodus bei der Nutzung in der Powershell, der nur das Basis TLS und das alte SSL aktiviert hat. Da sich nun in den letzten Jahren die Seiten mit moderneren Ciphersuiten erhöht haben ist diese Option jetzt bi HTTPS Zugriff nötig geworden damit der Zugriff weiterhin möglich ist.
Zitat von @138810:
Invoke-WebRequest verwendet einen IE-Kompatibilitätsmodus bei der Nutzung in der Powershell, der nur das Basis TLS 1.0 aktiviert hat. Da sich nun in den letzten Jahren die Seiten mit moderneren Ciphersuiten erhöht haben ist diese Option jetzt nötig geworden.
Invoke-WebRequest verwendet einen IE-Kompatibilitätsmodus bei der Nutzung in der Powershell, der nur das Basis TLS 1.0 aktiviert hat. Da sich nun in den letzten Jahren die Seiten mit moderneren Ciphersuiten erhöht haben ist diese Option jetzt nötig geworden.
Ja schon. Aber im Browser geht der Download ohne TLS. Ich hatte ja den Verdacht und habe es im Browser ausprobiert, ob auf Verschlüsselung bestanden wird. Im Browser ging es nur mit http ohne TLS-Handshake. Deshalb hatte ich die Idee verworfen. Das ist es, was mich wundert.
Also hier macht das Ding einen Https Redirect 301, deswegen wundert es mich nicht.