Visualizzazione post con etichetta Invoke-WebRequest. Mostra tutti i post
Visualizzazione post con etichetta Invoke-WebRequest. Mostra tutti i post

giovedì 28 aprile 2022

PowerShell: Download di file da Internet

Nell'articolo PowerShell: Visualizzare l'intestazione HTTP di un sito web è stato mostrato come, utilizzando il cmdlet Invoke-WebRequest, recuperare le informazioni contenute all'interno dell'intestazione HTTP di un sito web. 
Invoke-WebRequest, oltre a consentire di inviare richieste a servizi web, può essere utilizzato anche per comunicare con sistemi remoti e per il trasferimento di dati. Le istruzioni mostrate di seguito utilizzano il cmdlet Invoke-WebRequest per per scaricare un file da Internet (in questo caso si tratta di un'immagine) in un modo molto semplice:
 $url = 'https://images-assets.nasa.gov/image/iss066e174306/iss066e174306~orig.jpg'  
 $dest= "c:\temp\picture_iss.jpg"  
   
 Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $dest   
   
 Invoke-Item -Path $dest  

Le prime due righe permettono di specificare il percorso del file da scaricare (variabile $url) e il percorso dove salvarlo (variabile $dest).
Nella riga successiva viene eseguito il cmdlet Invoke-Webrequest a cui vengono passate le variabili $url e $dest inizializzate precedentemente. Il parametro -UseBasicParsing impedisce al cmdlet di usare il vecchio e deprecato modello di oggetto "Internet Explorer" che può causare problemi. Prima di utilizzare il codice sopra riportato è bene ricordare che Invoke-WebRequest potrebbe non funzionare con i vecchi protocolli di rete e TLS.

L'ultima riga non fa altro che aprire l'immagine scaricata con il visualizzatore predefinito.





giovedì 10 febbraio 2022

PowerShell: Visualizzare l'intestazione HTTP di un sito web

Quando si naviga su un sito web il browser riceve diverse meta informazioni all'interno dell'intestazione HTTP che normalmente non vengono visualizzate all'utente. 
Per visualizzare le informazioni dell'intestazione HTTP di un sito web è possibile utilizzare il cmdlet PowerShell Invoke-WebRequest e passare al parametro -Method il valore "Head" per ottenere le informazioni dell'intestazione invece del contenuto della pagina web. Il codice da utilizzare sarà simile a questo
 # In URL inserire il sito di cui si intende visualizzare l'header HTTP  
 $url = 'www.google.com'  
 (Invoke-WebRequest -Method Head -Uri $url -UseBasicParsing).RawContent  

L'output sarà simile a quello mostrato in FIG 1.
Header HTTP
FIG 1 - Header HTTP

Le informazioni contenute nelle intestazioni HTTP restituite dalle pagine web possono variare di molto. Nell'intestazione sono presenti istruzioni inviate al browser ed è possibile verificare se la pagina web istruisce il browser ad impostare nuovi cookie.

Per visualizzare le informazioni in forma tabellare basta sostituire semplicemente RawContent con Headers all'interno del comando.
 # In URL inserire il sito di cui si intende visualizzare l'header HTTP  
 $url = 'www.google.com'  
 (Invoke-WebRequest -Method Head -Uri $url -UseBasicParsing).Headers  
L'output, in questo caso, sarà simile a come mostrato in FIG 2.
Header HTTP in formato tabella
FIG 2 - Header HTTP in formato tabella