Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Daten einer Https-Website via Login abrufen
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

Daten einer Https-Website via Login abrufen

beantworten | zitieren | melden

Hallo zusammen,

ich möchte gern Daten von einer Website extrahieren, diese sind aber erst sichtbar, wenn man sich via login authorisiert. Dann sind die entsprechenden Daten anwählbar.

Jetzt meine Frage, wie kann ich auf eine Flash-Website mich zuerst mit meinem Account/Login anmelden, um dann Daten abzurufen! Mit dem HttpWebRequest bzw. WebRequest habe ich es nicht hin bekommen. Daher die Uri die ich setze, wird nicht korrekt ausgelöst, sondern nur die startseite zurück gegeben da ich mich nicht authorisiert habe.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rollerfreak2 am .
Again what learned...
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Ich poste mal ein bisschen code, vielleicht seht ihr ja was ich falsch mache.


HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(new Uri(@"https://www.domain.com/file.html"));
CredentialCache credCache = new CredentialCache();
NetworkCredential creds = new NetworkCredential("username", "password");
credCache.Add(@"https://www.domain.com", 80, "Basic", creds);
webRequest.Credentials = credCache.GetCredential(@"https:/www.domain.com", 80, "Basic");
webRequest.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
webRequest.PreAuthenticate = true; 
                
WebResponse webResponse = webRequest.GetResponse();
StreamReader stream = new StreamReader(webResponse.GetResponseStream());
HtmlDocument document = new HtmlDocument();
document.Load(stream);
Again what learned...
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Du hast also eine Flash-Webseite(?) D.h., die Daten, die du auslesen willst, sind nicht im HTML-Format? Die Authentifizierung geschieht auch nicht über HTML-Post und Cookies(?)

Das in der Uri ein Doppelslash fehlt ist nur ein Schreibfehler beim Pseudocode?
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Hallo dN!3L,
Zitat
Du hast also eine Flash-Webseite(?)
Nicht direkt, also einige Sachen der Seite sind in Html codiert, diese sind auch wichtig für mich.
Zitat
Die Authentifizierung geschieht auch nicht über HTML-Post und Cookies(?)

Ich vermute schon, bin mir dabei aber nicht ganz sicher, der Login Java script lautet jedenfalls wie folgt.

<div id="login">
<form id="signinform" action="https://www.xmzDomain.com/login/" method="post">
<input type="text" name="username" /><label>Benutzername:</label><br />
<input type="password" name="password" /><label>Passwort:</label><br />
button style="float: right; margin-right: 10px; margin-top: 12px;" id="signin">Anmelden</button>
Zitat
Das in der Uri ein Doppelslash fehlt ist nur ein Schreibfehler beim Pseudocode?

Ja das ist nur ein Schreibfehler. Was ich auch schon versucht habe, aber nicht funktioniert hat ist folgendes.


WebClient client = new WebClient();
client.Headers.Add("Content-Type", "text/html");
client.UploadData(
    "https://www.xmzDomain.com/login/",
    "post",
    Encoding.UTF8.GetBytes("username=<username>&password=<password>"));
client.Headers.Clear();
client.Headers.Add("Content-Type", "text/html"); 
client.Headers.Add("Cookie", client.ResponseHeaders["Set-Cookie"]);
byte[] response = client.DownloadData("https://www.xmzDomain.com/Infomations/12345");
Console.WriteLine(Encoding.ASCII.GetString(response));

Leider wird hier auch nur die Home Seite zurück gegeben und nicht die eigentliche die hinter dem Link verborgen ist (wenn man sich normal mit dem Browser autorisiert.) Was jedoch interessant ist das hinter dem ResponseHeader bei Set-Cookie wirklich etwas steht. Funktionieren tut es trotzdem nicht.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rollerfreak2 am .
Again what learned...
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Zitat von rollerfreak2
der Login Java script lautet jedenfalls wie folgt.
<form id="signinform" action="https://www.xmzDomain.com/login/" method="post">
Das ist doch ganz normales HTML - kein JavaScript. Also doch ein ganz stinknormales HTTP-Post (siehe das "method"-Attribut).
Dann dürfte dafür der WebClient mit HTTP-POST- und Cookie-Unterstützung reichen:


ExtendedWebClient extendedWebClient  = new ExtendedWebClient();
extendedWebClient.Post("https://www.xmzDomain.com/login/",new
{
    username = "carnivore",
    password = "secret_password"
});

string content = extendedWebClient.DownloadString("https://www.xmzDomain.com/Infomations/12345"); [/csharp]

Gruß,
dN!3L
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Zitat
Das ist doch ganz normales HTML - kein JavaScript.

Das ist natürlich korrekt, das was ich gepostet habe ist reines Html, aber unter anderem war auch JavaScript enthalten.

Mit deinem Extended Web Client funzt es hervorangend. Kann man sich dann auch wieder abmelden? Sorry für die blöden Fragen bin nicht so bewandert in der Materie.

Danke auf jedenfall erst einmal für deine Hilfe!
Again what learned...
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

Zitat von rollerfreak2
Kann man sich dann auch wieder abmelden?
Dann musst du gucken, was auf der Seite getan wird, im dich abzumelden. Sicherlich auch wieder ein Post mit bestimmten Parametern an einen bestimmten URI.
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

Themenstarter:

beantworten | zitieren | melden

Danke dN!3L, habs hinbekommen.
Again what learned...
private Nachricht | Beiträge des Benutzers