使用PowerShell和代理服务器访问网络(Access web using Powershell

2019-07-18 01:55发布

我似乎无法获得访问使用PowerShell的网页。 我不断收到一个“(407)代理身份验证”。 我试过很多东西。 我不知道什么是代理还是它需要什么样的认证。 我曾访问是在IE中的唯一的事情是使用脚本配置。 我试图使用从一些IP地址,但没有运气。 有任何想法吗?

这里是什么,我试过一个例子:

$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")

Answer 1:

我也有类似的问题,只有两个PowerShell中的行解决它:

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

希望这可以帮助。



Answer 2:

我还没有看到任何人做这样的事情,但有一个办法做到这一点在你的PowerShell脚本一个“全局设置”(我记得在C#之前做这个本地开发版本)。

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

这样,如果你不想更新代理的详细信息你所有的Web客户,你可以覆盖全局设置(必须完成每次运行脚本)。 但这是假设在Windows用户的当前登录的有效期为系统定义的代理服务器。

:我会说,这只是作为一个快速和肮脏的方式有用得到一个PS脚本的工作,这不是代理知道之前(如蛋糕构建 )。



Answer 3:

如果代理回答“407”,“代理身份验证要求”,则认证是必需的:

$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)

内容现在居住“的test.xml”



Answer 4:

如果您使用下面的您会收到一个提示输入您的凭据:

$client.Credentials = Get-Credential


Answer 5:

如果您知道脚本 - 只要下载它,用记事本打开,找到你的代理服务器的IP和端口。 至于认证 - 最有可能你的Windows凭据被使用,所以从理论上讲,你应该能够保持它的空白,除非有什么东西在脚本可疑。



Answer 6:

尝试添加缓存凭证....

$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)


文章来源: Access web using Powershell and Proxy