【发布时间】:2020-10-01 17:39:23
【问题描述】:
我正在尝试从站点下载 HTML 并对其进行解析。我实际上只对 head 部分的 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 数据?
谢谢。
【问题讨论】:
-
链接包含:'throw' - 可能就是这个原因
-
@PoulBak 我尝试了同一个域中的其他内容...同样的错误。
标签: c# facebook-opengraph webclient