问题
我的 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 和从浏览器中检索到的 html(在 chrome 上查看源代码)粘贴到 notepad++ 上。
之后,我设法“计数”(ctrl+f -> 计数)这个字符串“#CCCCCC”,它表示某些表格行的背景颜色。
webrequest 的计数为 17,而浏览器的计数为 14。
此外,每个页面的“课程”都不同:网络请求课程是“Faculdade de Ciências Farmacêuticas”,而浏览器上的课程是“Faculdade de Economia, Administração e Contabilidade”(这些名称是葡萄牙语)。
TL:博士
不知道为什么,get on this link :https://uspdigital.usp.br/jupiterweb/listarGradeCurricular?codcg=12&codcur=12012&codhab=1&tipo=N
与我复制粘贴到浏览器时的结果相比,在 webrequest c# 中给了我一个不同的页面。
更新
我试图比较两个请求中的用户代理,它们匹配。
我发现通过 C# 的 Web 请求总是给我相同的页面,即“Faculdade de Ciências Farmacêuticas”课程的页面
我猜这与HTTPS有关。
在此先感谢,很抱歉发了这么长的帖子