2013-01-10 19 views
12

Nie mogę uzyskać dostępu do strony internetowej przy użyciu Powershell. Ciągle otrzymuję "(407) Wymagane uwierzytelnienie proxy". Próbowałem wielu rzeczy. Nie wiem, czym jest proxy ani jakiego rodzaju uwierzytelnienia wymaga. Jedyną rzeczą, do której mam dostęp jest to, że w IE używa skryptu do konfiguracji. Próbowałem użyć niektórych adresów IP, ale bez powodzenia. Jakieś pomysły?Dostęp do sieci Web przy użyciu Powershell i Proxy

Oto jeden z przykładów tego, co starałem:

$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

jakiekolwiek ostateczne rozwiązanie z pełnym przykładem kodu źródłowego? – Kiquenet

+1

Próbowałem również powyższego kodu i kilka odmian, zawsze otrzymujących błąd 407. – Bratch

Odpowiedz

0

Jeśli znasz skrypt - po prostu go pobrać, otwarty w Notatniku i znajdź adres IP i port serwera proxy. Jeśli chodzi o uwierzytelnianie - najprawdopodobniej używane są twoje poświadczenia systemu Windows, więc teoretycznie powinieneś być w stanie zachować to puste, chyba że w skrypcie jest coś podejrzanego.

0

spróbuj dodać poświadczenia cache ....

$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

miałem podobny problem i postanowił go z zaledwie dwóch liniach PowerShell:

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

nadzieję, że to pomaga.

+0

Pomógł mi też. +1 – ulidtko

+0

Pracowałem- dzięki! –

+0

Nie działa dla mnie w PowerShell 2. Nadal dostaję "(407) Wymagane uwierzytelnienie proxy." Win7, IE11. – Bratch

1

Jeśli użyć następujących otrzymasz monit o wprowadzenie poświadczeń:

$client.Credentials = Get-Credential 
+1

To działało dla mnie, gdy wszystkie inne metody instalacji Leiningen ('lein self-install') nie powiodły się. Właśnie zmieniłem tę zmianę na "lein.bat". –

3

Jeśli odpowiedzi proxy „407”, „proxy wymaga uwierzytelnienia”, wówczas wymagane jest uwierzytelnienie:

$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 teraz rezyduje w „test.xml”

3

nie widziałem nikogo robi coś takiego, ale istnieje sposób, aby zrobić to jako „Global Setting” w swojej PowerShell skrypt (pamiętam, jak robiłem to w C# wcześniej dla lokalnych buildów dev).

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

ten sposób, jeśli nie chcesz zaktualizować wszystkie WebClients ze szczegółami proxy, można po prostu zastąpić ustawienie globalne (muszą być wykonywane przy każdym uruchomieniu skryptu). Ale to zakłada, że ​​bieżący zalogowany użytkownik systemu Windows jest ważny dla zdefiniowanego przez system serwera proxy.

UWAGA: Powiedziałbym, że to ma sens tylko jako szybki i brudny sposób, aby uzyskać skrypt PS pracy, że nie był świadomy przed proxy (jak Cake build).

Powiązane problemy