2013-01-10 17 views
12

Non riesco a ottenere l'accesso a una pagina Web utilizzando Powershell. Continuo a ricevere una "(407) autenticazione proxy richiesta". Ho provato molte cose. Non so cosa sia il proxy o che tipo di autenticazione richieda. L'unica cosa a cui ho accesso è in IE utilizza uno script per la configurazione. Ho provato a usare alcuni IP da quello, ma senza fortuna. Qualche idea?Accesso web tramite PowerShell e Proxy

Ecco un esempio di quello che ho provato:

$wc = New-Object System.Net.WebClient 
$wc.Headers.Add("User-Agent","Mozilla/4.0+")   
$wc.Proxy = [System.Net.WebRequest]::DefaultWebProxy 
$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials 
$wc.DownloadString("http://stackoverflow.com") 
+1

qualsiasi soluzione finale con un esempio di codice sorgente completo? – Kiquenet

+1

Ho anche provato il codice sopra, e diverse varianti, ottenendo sempre l'errore 407. – Bratch

risposta

0

Se si conosce lo script - basta scaricarlo, aperto con il Blocco note e trovare IP e la porta del server proxy. Per quanto riguarda l'autenticazione, molto probabilmente le tue credenziali di Windows sono utilizzate, quindi in teoria dovresti essere in grado di tenerlo vuoto, a meno che non ci sia qualcosa di sospetto nella sceneggiatura.

0

credenziali di cache provare ad aggiungere ....

$domain = 'ChDom' 
$Client = new-object System.Net.WebClient 
$cc = New-object System.Net.CredentialCache 
$urlObj = New-object System.Uri($url) 

#these variables must be plaintext strings 
$creds = New-object System.Net.NetworkCredential($Username,$Password) 

#your auth might be different than mine 
$cc.add($urlobj,"NTLM",$creds) 
$client.Credentials = $cc 
$Client.Downloadfile($url, C:\Temp\TestPage.html) 
41

ho avuto un problema simile e risolto con solo due linee di PowerShell:

$browser = New-Object System.Net.WebClient 
$browser.Proxy.Credentials =[System.Net.CredentialCache]::DefaultNetworkCredentials 

Spero che questo aiuti.

+0

Mi ha aiutato anche. +1 – ulidtko

+0

Worked- grazie! –

+0

Non funziona per me in PowerShell 2. Ancora ottenere "(407) Autenticazione proxy richiesta." Win7, IE11. – Bratch

1

Se si utilizza la seguente riceverai una richiesta di immettere le credenziali:

$client.Credentials = Get-Credential 
+1

Questo ha funzionato per me quando tutti gli altri metodi per installare Leiningen ('lein self-install') non sono riusciti. Ho appena modificato questa modifica in 'lein.bat'. –

3

Se le risposte del proxy "407", "l'autenticazione proxy necessari", quindi l'autenticazione è richiesto:

$Username="Hugo" 
$Password="abcdefgh" 
$WebProxy = New-Object System.Net.WebProxy("http://webproxy:8080",$true) 
$url="http://aaa.bbb.ccc.ddd/rss.xml" 

$WebClient = New-Object net.webclient 

$WebClient.Proxy=$webproxy 
$WebClient.proxy.Credentials = New-Object System.Net.NetworkCredential($Username, $Password) 
$path="C:\Users\hugo\xml\test.xml" 
$WebClient.DownloadFile($url, $path) 

Content ora risiede a "test.xml"

3

non ho visto nessuno fare qualcosa di simile, ma c'è un modo per fare questo come una "impostazione globale" nel vostro Powershell script (Ricordo di averlo fatto in C# prima per le build di dev locali).

[System.Net.WebRequest]::DefaultWebProxy = [System.Net.WebRequest]::GetSystemWebProxy() 
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials 

In questo modo se non si desidera aggiornare tutti i Web-client con dati proxy, si può semplicemente ignorare l'impostazione globale (devono essere fatto ogni volta che si esegue lo script). Tuttavia, si presume che l'attuale utente registrato in Windows sia valido per il server proxy definito dal sistema.

NOTA: Direi che questo è utile solo come un modo rapido e sporco per ottenere uno script PS di lavoro che non era a conoscenza del proxy prima (come Cake build).