Problème
La page html récupérée par ma requête web c# est différente de celle que j'obtiens en utilisant le navigateur.
Détails
J'essaie d'obtenir le code HTML de la page référencée par cette URL :
https://sistemas.usp.br/jupiterweb/listarGradeCurricular?codcg=12&codcur=12012&codhab=1&tipo=N
Le code que j'utilise pour le WebRequest est le suivant :
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");
}
}
Comment j'ai compris qu'ils étaient différents
J'ai collé à la fois le html récupéré du code et celui du navigateur (view source code on chrome) sur notepad++.
Après cela, j'ai réussi à "compter" (ctrl+f -> compter) cette chaîne "#CCCCCC", qui représente la couleur de fond de certaines lignes du tableau. la couleur de fond de certaines lignes du tableau.
La requête web me donne un nombre de 17 alors que le navigateur me donne un nombre de 14.
De même, le "Cours" de chaque page est différent : le cours de la requête web est "Faculdade de Ciências Farmacêuticas" alors que celui du navigateur est "Faculdade de Economia, Administração e Contabilidade" (ces noms sont en portugais).
TL:DR
Je ne sais pas pourquoi, mais j'ai trouvé ce lien : https://uspdigital.usp.br/jupiterweb/listarGradeCurricular?codcg=12&codcur=12012&codhab=1&tipo=N
me donne une page différente dans le webrequest c# par rapport au résultat lorsque je le copie et le colle dans le navigateur.
Mises à jour
-
J'ai essayé de comparer l'agent utilisateur des deux requêtes, et ils correspondent.
-
Je me suis aperçu que la requête web via C#, me donne toujours la même page, qui est la page du cours "Faculdade de Ciências Farmacêuticas".
Je suppose qu'il y a quelque chose à faire avec le truc HTTPS.
Merci d'avance, et désolé pour ce long message.