Also habe ich ein Tool namens Lansweeper. Es läuft auf einem lokalen Server. Jetzt möchte ich eine Seite davon abkratzen, aber es verwendet Windows-Authentifizierung. Ich verwende Powershell als Skriptsprache. Ich benutze hauptsächlich HTMLAgilityPack um zu kratzen. Aber ich habe nie eine Seite gekratzt, die Windows-Authentifizierung verwendet.
Weiß jemand, wie ich meine Anmeldeinformationen damit übergebe? Damit es unter bestimmten Anmeldeinformationen die Seite öffnet? (wie mein Administratorkonto anstelle meines normalen). (Ja, ich könnte meinen normalen Benutzer zu den erlaubten Benutzern in Lansweeper hinzufügen, aber das ist keine Lösung, die ich gerne benutzen würde).
Ich habe Folgendes versucht, aber es funktioniert nicht.
[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")
Ich habe die Funktionen untersucht und bin auf zwei Möglichkeiten gestoßen:
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)
Aber ich kann keinen von ihnen zur Arbeit bekommen. Hat das jemals jemand mit Powershell gemacht?
Ich habe herausgefunden, wie es geht: Ich hoffe, es hilft jemandem in der Zukunft. Es war nicht einfach, es herauszufinden, aber es ist einfach, wenn du es siehst.
[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)
#>