从网站解析返回403禁止

 mobiledu2502912527 发布于 2023-02-10 14:40

实际上,我正在编写一个Windows商店应用程序,我尝试解析一个网站,但响应返回它在请求中有错误是不需要的.我有一个快照,可能有助于我们找到一个解决方案,这个代码适用于我尝试过的所有网站,但是没有用.

我用这个源代码:

private async void parsingActualites()
    {
        HttpClient http = new System.Net.Http.HttpClient();
        HttpClientHandler newClientHandler = new HttpClientHandler();
        System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
        ***var reponse = await http.GetByteArrayAsync("http://.........../");***
        str3 = Encoding.UTF8.GetString(reponse, 0, reponse.Length - 1);
        var strdecodet = System.Net.WebUtility.HtmlDecode(str3);
        HtmlAgilityPack.HtmlDocument document2 = new HtmlAgilityPack.HtmlDocument();
        document2.LoadHtml(str3);

显示给我的错误是:

响应状态代码不表示成功:403(禁止).

RES

这是一张描述更多错误的图片请你能帮助我:)

2 个回答
  • 有些Web服务器希望User-Agent在请求中接收标头(如果他们没有看到,则返回403).您可以添加User-Agent标题,例如如下:

    HttpClient httpClient = new HttpClient();
    HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get,"http://example.com");
    // Add our custom headers
    requestMessage.Headers.Add("User-Agent", "User-Agent-Here");
    HttpResponseMessage response = await httpClient.SendAsync(requestMessage);
    

    2023-02-10 14:42 回答
  • 您遇到的原因可能有多种。例如,该站点可能要求您的程序不执行身份验证,但您在浏览时手动进行了身份验证。或网站期望您的程序没有提供的标题。

    解决此问题的正确方法是了解浏览器的功能,而您不知道。下载Fiddler,运行它,然后浏览到URL。Fiddler将显示您的浏览器发出的实际请求。这是一个例子-

    如您所见,浏览器发送了多个头文件,您应该执行相同的操作(实际上,您应该找到可以使用的最小集)。要添加标头,请查看http://massivescale.com/pages/custom-headers-with-httpclient/或如何为HttpClient请求设置Content-Type标头?

    2023-02-10 14:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有