gpt4 book ai didi

c# - 使用 HtmlAgilityPack 下载网页时违反 HTTP 协议(protocol)

转载 作者:行者123 更新时间:2023-11-30 22:41:56 26 4
gpt4 key购买 nike

我正在尝试解析来自 www.mediafire.com 的下载页面,但当我尝试将页面加载到HtmlDocument:

The server committed a protocol violation. Section=ResponseStatusLine

这是我的代码:

HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();

HtmlAgilityPack.HtmlDocument doc = null;

string url = www.mediafire.com/?abcdefghijkl //There are many different links

try
{
doc = web.Load(url); //From 30 links, usually only 10 load properly
}

catch (WebException)
{

}

知道为什么 30 个链接中只有 10 个有效(链接每次都在变化,因为我的程序是“搜索引擎”),我该如何解决这个问题?

当我在浏览器中加载这些网站时,一切正常。


我尝试将以下行添加到我的 app.config,但这也无济于事

<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>

最佳答案

这与 Html Agility Pack 没有直接关系,而是与底层 HTTP/套接字层有关。此错误表示服务器未发回正确的 HTTP 状态行。

状态行在此处可用的 HTTP RFC 中定义:http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html

我引用:

The first line of a Response message is the Status-Line, consisting of the protocol version followed by a numeric status code and its associated textual phrase, with each element separated by SP characters. No CR or LF is allowed except in the final CRLF sequence.

   Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

您可以添加带有完整十六进制报告的套接字跟踪来检查这一点:

<configuration>
<system.diagnostics>
<sources>
<source name="System.Net.Sockets" tracemode="includehex">
<listeners>
<add name="System.Net.Sockets" type="System.Diagnostics.TextWriterTraceListener" initializeData="SocketTrace.log" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Net.Sockets" value="Verbose"/>
</switches>
<trace autoflush="true" />
</system.diagnostics>
</configuration>

这将在当前执行目录中创建一个 SocketTrace.log 文件。看看那里,违反协议(protocol)的行为应该是可见的。如果不是太大,您可以将其张贴在这里:-)

不幸的是,如果您不拥有服务器,您无能为力(如果您已经添加了 useUnsafeHeaderParsing 设置,这很好)但在这些情况下会优雅地失败。

关于c# - 使用 HtmlAgilityPack 下载网页时违反 HTTP 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com