【问题标题】:Loading an encrypted website content with C# and HtmlAgilityPack使用 C# 和 HtmlAgilityPack 加载加密的网站内容
【发布时间】:2019-01-12 23:24:25
【问题描述】:

我想用 C# 和 HtmlAgilityPack 加载页面内容,但我得到了它的加密版本。

HttpClient httpClient = new HttpClient();
string html = await httpClient.GetStringAsync("http://www.wordreference.com/definicion/mundo");

我应该如何解密?

【问题讨论】:

  • 您在问题中提供的网址中的网站内容加密。 “我应该如何解密?”由于内容没有加密,所以没有什么可以解密的……
  • @elgonzo 我的html 变量包含不可读的混合字符而不是有效的html
  • 可能是服务器发送了压缩的内容,但无论出于何种原因,HtmlAgilityPack 都无法解压...?从服务器请求网页内容时,您应该能够(我希望,我不知道 HtmlAgilityPack)告诉服务器交付未压缩的内容以设置特定的请求标头字段。我不知道从头顶上,给我一分钟,我可以告诉你请求头......
  • 好的,我指的 HTTP 标头字段是 Accept-Encoding (w3.org/Protocols/rfc2616/rfc2616-sec14.html)。请求网页时尝试将其设置为identity。如果这不起作用,请查看 HtmlAgilityPack 文档以了解它支持哪些内容压缩方案并尝试这些...
  • (旁注:安装 Telerik Fiddler (telerik.com/fiddler)。它将允许您监控和检查您的应用程序和 Web 服务器之间的请求和响应。使故障排除变得更加容易和痛苦。 ..)

标签: c# web web-crawler html-agility-pack


【解决方案1】:

正如@elgonzo 所说 - 我添加了接受编码标头并且它有效!顺便说一句,还需要将编码更改为 UTF8。最后,我的代码如下所示:

WebClient client = new WebClient();
client.Headers[HttpRequestHeader.AcceptLanguage] = "es-ES";
client.Headers[HttpRequestHeader.UserAgent] = "Accept-Encoding";
client.Encoding = Encoding.UTF8;

我转换为System.Net.WebClient,因为它看起来更容易。谢谢@elgonzo!

【讨论】:

  • 很高兴你让它工作了。但是client.Headers[HttpRequestHeader.UserAgent] = "Accept-Encoding"; 没有任何意义(查看 User-Agent 请求标头指定的内容)。要设置 Accept-Encoding 标头,应该使用 client.Headers[HttpRequestHeader.AcceptEncoding] = ...acceptable encodings...; 之类的东西,我猜...
猜你喜欢
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多