2017-10-25 13 views
1

私はlansweeperというツールを持っています。ローカルサーバー上で実行されます。今、私はそれからページをこすりたいですが、Windows認証を使用します。 私はスクリプト言語としてPowershellを使用します。 私は主にHTMLAgilityPackを使用してスクレイプします。しかし、私はWindowsの認証を使用するページを擦ったことはありません。Powershellと組み合わせたHTMLagilityPack、Windows認証

誰もが自分の信任状をどのように渡すのか知っていますか?それは特定の資格情報の下でページを開くように? (通常のアカウントではなく管理者アカウントのように)。 (はい、通常のユーザーをLansweeperの許可されたユーザーに追加することはできますが、それは使用したいソリューションではありません)。

私は以下を試しましたが、動作しません。

[Reflection.Assembly]::LoadFile("C:\Scraping\HtmlAgilityPack\lib\Net45\HtmlAgilityPack.dll”) 
[HtmlAgilityPack.HtmlWeb]$web = @{} 
$webclient = new-object System.Net.WebClient 
$username = "user" 
$password = "passw0rd-" 
$domain = "mydomain" 
$webclient.Credentials = new-object System.Net.NetworkCredential($username, $password, $domain) 
[HtmlAgilityPack.HtmlDocument]$doc = $web.Load("http://lansweeper:81/user.aspx?username=sam&userdomain=mydomain","","",$webclient.Credentials) 
[HtmlAgilityPack.HtmlNodeCollection]$nodes = $doc.DocumentNode.SelectNodes("//body") 

私は関数に見て、二つの可能性に出くわしされています:

TypeName : HtmlAgilityPack.HtmlWeb 
Name  : Load 
HtmlAgilityPack.HtmlDocument Load(string url), 
HtmlAgilityPack.HtmlDocument Load(string url, string proxyHost, int proxyPort, string userId, string password), 
HtmlAgilityPack.HtmlDocument Load(string url, string method), 
HtmlAgilityPack.HtmlDocument Load(string url, string method, System.Net.WebProxy proxy, System.Net.NetworkCredential credentials) 

Name  : Get 
MemberType : Method 
void Get(string url, string path), 
void Get(string url, string path, System.Net.WebProxy proxy, System.Net.NetworkCredential credentials), 
void Get(string url, string path, string method), 
void Get(string url, string path, System.Net.WebProxy proxy, System.Net.NetworkCredential credentials, string method) 

しかし、私はそれらのいずれかを動作させることはできません。誰もPowershellでこれをやったことがありますか?

答えて

2

私はそれを行う方法を見つけました:将来誰かを助けることを願っています。 把握するのは簡単ではありませんでしたが、一度確認すれば簡単です。

[Reflection.Assembly]::LoadFile("C:\temp\HtmlAgilityPack\lib\Net45\HtmlAgilityPack.dll”) | Out-Null 
[HtmlAgilityPack.HtmlWeb]$web = @{} 
$url = "http://lansweeper:81/user.aspx?username=sam&userdomain=mydomain" 
$webclient = new-object System.Net.WebClient 

    $cred = new-object System.Net.NetworkCredential 
    $defaultCredentials = $cred.UseDefaultCredentials 

$proxyAddr = (get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').ProxyServer 
$proxy = new-object System.Net.WebProxy 
$proxy.Address = $proxyAddr 
$proxy.useDefaultCredentials = $true 
$proxy 

[HtmlAgilityPack.HtmlDocument]$doc = $web.Load($url,"GET","$proxy",$defaultCredentials) 
[HtmlAgilityPack.HtmlNodeCollection]$nodes = $doc.DocumentNode.SelectNodes("//html[1]/body[1]") 

$nodes 

<# USER RESOURCES 
https://msdn.microsoft.com/en-us/library/system.net.webclient.usedefaultcredentials(v=vs.110).aspx 
https://forums.asp.net/t/2027997.aspx?HtmlAgilityPack+Stuck+trying+to+understand+HtmlWeb+Load+NetworkCredential 
https://msdn.microsoft.com/en-us/library/system.net.webclient.usedefaultcredentials.aspx 
https://stackoverflow.com/questions/571429/powershell-web-requests-and-proxies 

TypeName : HtmlAgilityPack.HtmlWeb 
Name  : Load 
HtmlAgilityPack.HtmlDocument Load(string url, string proxyHost, int proxyPort, string userId, string password), 
HtmlAgilityPack.HtmlDocument Load(string url, string method, System.Net.WebProxy proxy, System.Net.NetworkCredential credentials) 
#> 
関連する問題