gpt4 book ai didi

c# - WebRequest 正在检索与浏览器不同的 HTML

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:31 25 4
gpt4 key购买 nike

问题

我的 C# Web 请求检索到的 html 页面与我使用浏览器获得的不同。

详情

我正在尝试获取此 URL 引用的页面的 HTML:

https://sistemas.usp.br/jupiterweb/listarGradeCurricular?codcg=12&codcur=12012&codhab=1&tipo=N

我用于 WebRequest 的代码是这个:

public string HttpsGet (string url)
{
string response = string.Empty;
if (!string.IsNullOrEmpty(url))
{
HttpWebRequest WReq = (HttpWebRequest)WebRequest.Create("https://uspdigital.usp.br/jupiterweb/listarGradeCurricular?codcg=9&codcur=9012&codhab=100&tipo=N");
WReq.Credentials = CredentialCache.DefaultCredentials;

ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);

try
{
WReq.Proxy = new WebProxy();
WReq.Method = "GET";
WReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1";
WReq.ServicePoint.ConnectionLimit = 800;
WReq.Timeout = 80000;
WReq.ContentType = "application/x-www-form-urlencoded";
WReq.Referer = "";
WReq.AllowAutoRedirect = true;

HttpWebResponse resp = (HttpWebResponse)WReq.GetResponse();
using (resp)
{
response = (new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding("ISO-8859-1"))).ReadToEnd();
}
}
catch (Exception exception)
{
Exception ex = exception;
}
return response;
}
else
{
throw new Exception("URL is empty or null");
}
}

我是怎么发现它们不同的

我将从代码中检索到的 html 和从浏览器(在 chrome 上查看源代码)中检索到的 html 都粘贴到了 notepad++ 上。

在那之后,我设法“数”(ctrl+f -> 数)这个字符串“#CCCCCC”,它代表一些表格行的背景颜色。

webrequest 的计数为 17,而浏览器的计数为 14。

此外,每个页面的“类(class)”也不同:网络请求类(class)是“Faculdade de Ciências Farmacêuticas”,而浏览器上的类(class)是“Faculdade de Economia, Administração e Contabilidade”(这些名称是葡萄牙语)。

TL:DR

不知道为什么,访问此链接:https://uspdigital.usp.br/jupiterweb/listarGradeCurricular?codcg=12&codcur=12012&codhab=1&tipo=N 给了我一个不同的页面在 webrequest c# 中与我将其复制并粘贴到浏览器时的结果进行比较。

更新

  1. 我尝试比较来自两个请求的用户代理,它们匹配。

  2. 我发现通过 C# 的 Web 请求总是给我相同的页面,即“Faculdade de Ciências Farmacêuticas”类(class)的页面

我猜这与 HTTPS 相关。

提前致谢,抱歉发了这么长的帖子

最佳答案

找出浏览器的用户代理字符串,然后在 WebRequest 上设置用户代理字符串以匹配。许多网站提供基于 UA 的变体内容/标记/样式/脚本。

更新

如果您使用的是 HttpWebRequest,则可以通过 UserAgent 属性设置 UA。

关于c# - WebRequest 正在检索与浏览器不同的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397536/

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