C#WebClient从站点获取html时收到403

问题描述

我正在尝试从网站下载HTML并进行解析。我实际上只对头部的OpenGraph数据感兴趣。对于大多数使用WebClient的站点,HttpClient或HtmlAgilityPack均可使用,但某些域却显示403,例如:westelm.com

我尝试将标头设置为与使用浏览器时的标头完全相同,但仍然得到403。这是一些代码

string url = "https://www.westelm.com/m/products/brushed-herringbone-throw-t5792/?";

var doc = new HtmlDocument();

using(WebClient client = new WebClient()) {
  client.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/85.0.4183.102 Safari/537.36";
  client.Headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9";
  client.Headers["Accept-Encoding"] = "gzip,deflate,br";
  client.Headers["Accept-Language"] = "en-US,en;q=0.9";
  doc.Load(client.OpenRead(url));
}

这时我得到了403。

我是否缺少某些信息,或者网站管理员正在保护网站免受API请求的侵害?

我该如何进行这项工作?是否有更好的方法站点获取OpenGraph数据?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)