C# 获取错误“;远程服务器返回错误:(403)禁止“;使用HttpWebRequest.GetResponse()进行屏幕抓取时

C# 获取错误“;远程服务器返回错误:(403)禁止“;使用HttpWebRequest.GetResponse()进行屏幕抓取时,c#,httpwebrequest,screen-scraping,httpwebresponse,http-status-code-403,C#,Httpwebrequest,Screen Scraping,Httpwebresponse,Http Status Code 403,我们有一个工具,可以检查给定的URL是否是活动URL。如果给定的url是活动的,我们软件的另一部分可以从中删除内容 这是我用来检查url是否处于活动状态的代码 public static bool IsLiveUrl(string url) { HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest; webRequest.UserAgent = "Mozilla/5

我们有一个工具,可以检查给定的URL是否是活动URL。如果给定的url是活动的,我们软件的另一部分可以从中删除内容

这是我用来检查url是否处于活动状态的代码

    public static bool IsLiveUrl(string url)
    {
        HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest;
        webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5";
        webRequest.CookieContainer = new CookieContainer();
        WebResponse webResponse;
        try
        {
            webResponse = webRequest.GetResponse();
        }
        catch (WebException e)
        {
            return false;
        }
        catch (Exception ex)
        {

            return false;
        }
        return true;
    }
这段代码工作得很好,但对于apache上托管的特定站点,我收到一个web异常,并显示以下消息。“远程服务器返回错误:(403)禁止” 进一步检查后,我在WebException对象中发现了以下详细信息

Status=“ProtocolError” StatusDescription=“不良行为”

这是请求头“用户代理:Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.8.0.6)Gecko/20060728 Firefox/1.5 主持人:scenecpares.co.uk 连接:保持活动”

这是响应标题“保持活动:超时=4,最大值=512 连接:保持活力 传输编码:分块 内容类型:text/html 日期:2011年1月13日星期四格林威治标准时间10:29:36 服务器:Apache“


我在vs2008中使用手表提取了这些标题。使用的框架是3.5。

事实证明,我所需要做的就是遵循

            webRequest.Accept = "*/*";
            webResponse = webRequest.GetResponse();

而且它是固定的。

我相信有相当多的类似问题依赖于服务器应用程序。在我的特殊情况下,请参见:

Hello@syed,我面临同样的问题,并且已经添加了.Accept代码,但仍然出现了此错误。有什么想法吗?谢谢,我必须添加这三行,`webRequest.Method=“GET”;webRequest.UserAgent=“Foo”;webRequest.Accept=“text/html”`不同的服务器可能需要不同的设置。您的提示似乎解决了某些维基百科页面的问题。@swdev:谢谢。我错过了webRequest.UserAgent行。只是再次看到这个页面,我很高兴有人利用了我的提示:)