HTMLagilityPack 与 Powershell、Windows 身份验证相结合

2024-01-11

所以我有一个叫做lansweeper的工具。它在本地服务器上运行。现在我想从中抓取一个页面,但它使用 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 做过这个吗?


我找到了如何做到这一点:我希望它对将来的人有所帮助。 这并不容易理解,但一旦你看到它就很容易了。

[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)
#>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTMLagilityPack 与 Powershell、Windows 身份验证相结合 的相关文章

随机推荐

  • Xcode Playground 中的自定义字体

    我正在用代码编写界面布局 由于每次我逐像素测试字体大小或视图布局时重新加载应用程序很烦人 所以我开始在操场上这样做 这确实有很大帮助 但我确实很怀念那里的自定义字体 有没有办法向您的游乐场添加自定义字体 首先 将 ttf 文件添加到 Pla
  • Mysql 中 SQL join ON 不相等

    我有两张桌子 两者都包含问题 ID 字段 我想从第一个表中获取第二个表中不存在的所有记录 我不想使用 NOT IN 约束作为具有超过 400000 条记录的第二个表 尝试类似的东西 SELECt t1 FROM Table1 t1 LEFT
  • 还没有适用于 Python 3(或 3.3)的 wxPython 吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想开始使用 wxPython 但我发现它没有针对 Python 3 进行更新 我正在使用最新版本的 Python 即 3 3 所以我开始
  • sonarqube 5.2 后台任务有时会失败且没有日志

    似乎有超过一半的时间我尝试使用 Sonar Runner 2 4 对几个不同的项目执行分析 分析成功完成 但发布 通过后台任务 到 SonarQube 失败 我在 SonarQube 服务器上找不到包含失败任务相关信息的日志 至少我找不到任
  • ERROR:ssl_client_socket_openssl.cc(1158)] ChromeDriver Chrome 浏览器和 Selenium 握手失败

    当使用 Chrome 驱动程序运行我的 python selenium 脚本时 每次加载页面时我都会收到以下大约三个错误消息 即使一切正常 有没有办法抑制这些消息 24412 18772 0617 090708 错误 ssl client
  • 激活/停用移动菜单并调整大小后桌面菜单消失

    该网站是响应式网站 您可以通过以下方式复制问题 以桌面宽度加载网站 导航元素加载良好 调整大小为平板电脑或手机大小 菜单转换为带有三栏图标的移动式下拉菜单 打开和关闭移动导航菜单 设置为显示 无 现在 当您调整大小到桌面宽度时 导航栏仍设置
  • 使用 Perl 访问 BerkeleyDB 的正确方法是什么?

    我在使用 BerkeleyDB 时遇到了一些问题 我有相同代码的多个实例指向单个数据库文件存储库 并且一切正常运行 5 32 小时 然后突然出现死锁 命令提示符会在执行 db get 或 db put 或游标创建调用之前停止 所以我只是询问
  • 在selenium webdriver中什么是manage() [driver.manage()]

    我的一个朋友问了我一个问题 下面是最大化窗口的代码 driver manage window maximize what is manage here 据我所知manage 是抽象方法 请任何人解释一下下面这一行的含义 我们如何使用maxi
  • 当我尝试通过控制面板打开 xampp shell 时,应用程序无法正确启动 0xc0000142 错误

    将最新的 Xampp 版本与 PHP 7 结合使用 cmd exe 应用程序无法正确启动 0xc000142 单击 确定 即可关闭应用程序 当我单击shellXAMPP 控制面板中的按钮 我重新安装了 XAMPP 但它不起作用 我将环境表更
  • 谁能解释一下 chrome 扩展的清单文件中的“match_about_blank”有什么用?

    我是 chrome 扩展的新手 但不知道清单文件中 match about blank 属性的使用 谁能用简单的话解释一下 让我首先引用 match about blank 的文档 https developer chrome com ex
  • 导航视图和半透明状态栏

    我遵循了有关如何实现这一目标的所有提示 但到目前为止没有成功 我想要一个半透明 透明 不确定区别 状态栏 2016 年 3 月 25 日更新 我尝试了各种Theme属性都没有进展 更新了我对 v21 样式文件的尝试和Bounty 有人有想法
  • Promise.resolve() 什么时候触发 then() 方法? [复制]

    这个问题在这里已经有答案了 我正在学习js中的Promise 我对此有一些疑问 这是代码 Promise resolve then gt console log 0 return Promise resolve 4 then res gt
  • 如何使用 openssl 验证电子邮件中的 DKIM 签名?

    我已经为我的 postfix 设置了 opendkim 现在所有外发邮件都有 DKIM Signature 标题 我想要做的是手动验证 无需 DNS 和外部实用程序 最好仅使用 openssl 消息是否获得正确的签名 所以作为输入数据我有
  • 嵌套 FOR 循环和 IF 条件的问题

    我有几行文字 然后我有一个包含测试词的列表 我喜欢查找文本的每一行并检查其中是否出现一个测试词 在此之前 这与如下命令配合使用效果很好 IF not stringToTest searchstring stringToTest 但是 现在这
  • 删除MySQL查询中的重复结果

    MySQL 查询检索 totalpoints name 55 John Doe 55 John Doe 55 John Doe 55 John Doe 55 John Doe 21 Jean London 21 Jean London 13
  • RTTI 可以在设计时询问项目代码中的类型吗?

    我想使用 RTTI 在设计时而不是运行时检查项目源文件中包含的类型 据我所知 这是不受支持的 但评论中的讨论这个问题 https stackoverflow com questions 9046778 class reference as
  • 替换 hg 分支的内容

    我有一个 hg 仓库 我曾经有一个名为 1 x 的短暂分支 它在某个时间点终止了 默认 它被关闭是因为我觉得在那个特定时刻不需要使用该分支 然而 我被迫放弃 默认 的开发方式 并在创建 1 x 之前的更早版本中创建另一个分支 我无法使用 1
  • 当我尝试使用或返回枚举值时,可以避免强制转换它吗?

    如果我有以下枚举 public enum ReturnValue Success 0 FailReason1 1 FailReason2 2 Etc 我可以在返回时避免强制转换吗 如下所示 public static int main st
  • Keycloak 中的资源、范围、权限和策略

    我想使用 Keycloak 的授权系统创建一个相当简单的基于角色的访问控制系统 Keycloak 正在取代的系统允许我们创建一个 用户 他是一个或多个 组 的成员 在这个遗留系统中 通过组成员身份 其中为组分配了权限 或直接向用户授予权限
  • HTMLagilityPack 与 Powershell、Windows 身份验证相结合

    所以我有一个叫做lansweeper的工具 它在本地服务器上运行 现在我想从中抓取一个页面 但它使用 Windows 身份验证 我使用 Powershell 作为脚本语言 我主要使用HTMLAgilityPack来抓取 但我从来没有抓取过使