在HttpTests中,有一种方法可以使用
进行身份验证request.Credentials = CredentialCache.DefaultCredentials;
Html Agility Pack中有类似的东西吗?我想测试我的localhost项目,但它收到了:
HTTP错误401.2 - 未经授权您无权查看此页面
答案 0 :(得分:7)
我找到了Jon Gallant的博客:http://blog.jongallant.com/2012/07/htmlagilitypack-windows-authentication.html#.UJEQam8xol8
创建一个新的HtmlWeb实例,创建一个新的WebProxy,将UseDefaultCredentials设置为true,在webload上创建一个名为document的新变量,将URL设置为GET请求,插入默认凭据并获取应用程序的系统凭据。 / p>
var web = new HtmlWeb();
web.PreRequest = delegate(HttpWebRequest webRequest)
{
webRequest.Timeout = 1200000;
return true;
};
var proxy = new WebProxy() { UseDefaultCredentials = true };
var doc = web.Load("http://localhost:2120", "GET", proxy,
CredentialCache.DefaultNetworkCredentials);
var linksOnPage = from lnks in document.DocumentNode.Descendants()
where lnks.Name == "a" &&
lnks.Attributes["href"] != null &&
lnks.InnerText.Trim().Length > 0
select new
{
Url = lnks.Attributes["href"].Value,
Text = lnks.InnerText
};
linksOnPage.All(t => { Console.WriteLine(t.Text + " : " + t.Url); return true; });
答案 1 :(得分:2)
有没有办法在Html Agility Pack中验证经过Windows身份验证的用户?
没有
Html Agility Pack(HAP)究竟是什么?
这是一个敏捷的HTML解析器,可构建读/写DOM并支持普通的XPATH或XSLT。
它是一个.NET代码库,允许您解析“out of the web”HTML文件。解析器非常容忍“真实世界”格式错误的HTML。对象模型与提出System.Xml非常相似,但对于HTML文档(或流)。
Html Agility Pack现在支持Linq to Objects(通过LINQ to Xml Like界面)。
示例应用
页面修复或生成:您可以按照自己的方式修改页面,修改DOM,添加节点,复制节点等等......您可以为其命名。
网络扫描仪:您可以通过一堆XPATH查询轻松访问img / src或/ hrefs。
网络抓取工具:您可以轻松地将任何现有网页废弃为RSS Feed,例如,仅使用XSLT文件作为绑定。提供了一个例子。