Ich versuche, eine PDF von einer URL mit einer Windows-Konsolenanwendung herunterzuladen. Ich verwende den folgenden Code:C# -Konsole Webclient gibt keine Daten zurück, aber der Browser tut
using (var webClient = new System.Net.WebClient())
{
webClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
byte[] data = webClient.DownloadData(url);
System.IO.File.WriteAllBytes(@"D:\Files\hello.pdf", data);
}
Wenn ich in dem obigen Code im Browser/Postbote die gleiche URL kopieren und einfügen, ich die Datei aber bekommen, wenn ich das gleiche in der C# Konsolenanwendung versuchen, ich Holen Sie sich eine andere HTML-Antwort. Ich habe die Anfrage/Antwort mit Fiddler abgefangen und der einzige Unterschied, den ich sehen konnte, ist, dass wenn die Anfrage über Browser/Postman ausgelöst wird, einige zusätzliche Cookies zur Anfrage hinzugefügt werden, die spezifisch für die Anwendung sind, an der wir gerade arbeiten. Ich bin verwirrt darüber, wie der Browser/Postbote Cookies für die Anwendung hinzufügen kann.
Ich versuchte, alle Cookies zu löschen und versuchte es erneut aus dem Browser, aber Fiddler zeigt die Cookies in der Anfrage. Irgendwelche Hinweise, was vor sich geht?
Was ist die URL? –
Häufig werden Cookies für die Authentifizierung verwendet ... Es liegt an Ihnen, Hacks zu entwickeln, um sie entweder zu erhalten (zB durch Anfordern der ersten Seite/fälschen Anmeldung) oder von Browser stehlen ... Im Allgemeinen Websites werden nicht getestet um richtig zu arbeiten, wenn jemand versucht, sie zu kratzen, und oft explizit eingerichtet, um ein solches Verhalten zu verhindern, indem Cookies/Referrer/versteckte automatisch generierte Felder und dergleichen überprüft werden. –