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
Social Network Messenger?
djCalypso
myCSharp.de - Member



Dabei seit:
Beiträge: 96
Herkunft: Köln

Themenstarter:

Social Network Messenger?

beantworten | zitieren | melden

Hallo alle zusammen,
ich habe demletzt gesehen, dass GMX eine Art Multi Messenger hat auf dem man permanent eingeloggt ist und die Messages von diesen Sozialen Netzwerken direkt bekommt.
Nun frage ich mich, wie man solche Infos auf deren Page ausliest.
Ich könnte mir momentan nur vorstellen, das eine Art Webbrowser Client in diesem Programm vorhanden ist, welcher durchgehend checkt, ob es neue Infos gibt, etc.

Vielleicht habt ihr noch ein paar weitere Ideen, denn ich möchte mir einen solchen Messenger für den Privatgebrauch selber basteln.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von djCalypso am .
private Nachricht | Beiträge des Benutzers
Ploetzi
myCSharp.de - Member

Avatar #avatar-2940.gif


Dabei seit:
Beiträge: 313

beantworten | zitieren | melden

ja du kannsd das machen mit webbrowser
und aber auch per http request, da musst du aber cookies usw speichern
private Nachricht | Beiträge des Benutzers
djCalypso
myCSharp.de - Member



Dabei seit:
Beiträge: 96
Herkunft: Köln

Themenstarter:

beantworten | zitieren | melden

Danke Ploetzi,

folgendes Beispiel habe ich eben gefunden.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("URL");
CookieContainer cc = new CookieContainer();
cc.Add(cookie);
request.CookieContainer = cc;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Müsste man halt nur nen globalen Cookie für die Laufzeit erstellen und bei jedem Abruf mitsenden wie ich denke.
Hat hier denn schon jmd. gute Cookie Erfahrungen wie ich sowas ziemlich gut umsetzen könnte?
Ansonsten müsste ich mal bei MSDN, etc. im Web gucken wie ich sowas realisiere.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von djCalypso am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.207

beantworten | zitieren | melden

Das ging relativ gut auf der meinVZ-Seite.
Ich hatte mir das mal für das alte Webdesign gebastelt, aber leider nicht dynamisch, was mir dann die Lust an der Anpassung für das neue Design insbesondere mit dem Javascript / AJAX-Quatsch letzten Endes genommen hatte.

Man könnte dies evtl. als Kleinprojekt für ein paar Social-Webpages entwickeln (kwick, VZ und Co).
Musst Dich ja nur am Anfang einloggen, den Cookie speichern und dann in regelmäßigen Abständen prüfen, ob neue Nachrichten vorhanden sind.
Eine Push-Methode wie es ICQ oder MSN hat wird das aber sicherlich nicht.

Evtl. musst Du gar keine Cookie setzen, sondern via POST-Methode die Daten zusenden (Stichwort Barrierefreiheit, da wäre POST die Alternative von Cookies ).

Kannst aber alles eigentlich recht einfach mit FireFox (2/3) und dem Web Development-Addon testen. (Cookies via POST-Übergeben etc etc... )

---
Edit: Mit der Namensgestaltung für das Projekt - auch wenns am Anfang nur für Dich sein sollte, man weiß ja nie - solltest aber aufpassen, da die VZler meinen alles mit VZ am Ende im Namen verklagen zu müssen.
MusikVZ, ImageVZ......
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Abt am .
private Nachricht | Beiträge des Benutzers
Puppetmaster
myCSharp.de - Member

Avatar #avatar-2715.jpeg


Dabei seit:
Beiträge: 225

beantworten | zitieren | melden

aloha,

@djCalypso
kannst du mal nen link dazu posten? ich will mir das teil auch mal näher anschauen.
thx


a hui hau
puppet
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Puppetmaster am .
Yunky: was fürn operator muss ich den nehmen wenn ich sagen will nichtgrößergleich??
Yunky: !>3??
Yunky: !≥ ??
Puppetmaster: *G*
Yunky: aja ka
Puppetmaster: kleiner (<)
Yunky: stimmt^^
private Nachricht | Beiträge des Benutzers
djCalypso
myCSharp.de - Member



Dabei seit:
Beiträge: 96
Herkunft: Köln

Themenstarter:

beantworten | zitieren | melden

Ein kleines Projekt wie du schon meintest könnte man auf jeden Fall daraus machen (OpenSource).
Interesse besteht auf meiner Seite auf jeden Fall
Namen kann man ja im Endeffekt auch noch finden, muss ja nicht der Name VZ vorhanden sein. Bsp. "Social Network Messenger" oder soetwas ähnliches.

Man könnte bei einem solchen Projekt viellt. so ähnlich wie bei Miranda machen, wo man diese verschiedenen Webseiten "Vz, Kwick, Myspace, ..." per Plugin einbindet.

Ich werde das nachher einmal testen, ob ich das soweit hinbekomme, das ich eine Art Login Routine mit C# dafür geschrieben bekomme. (Cookies)
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von djCalypso am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.207

beantworten | zitieren | melden

Im Prinzip ja.
Es ist ja eigentlich immer nur das gleiche: Anmeldung am SocialNetwork und dann eMails bzw. gegebenenfalls die Messages auslesen.

Problematischer wirds bei StudiVZ, wenn nach ner gewissen Dauer der Nutzung die CAPTCHA-Abfrage kommt.

---
Für die Loginroutine brauchst dann auch noch ne HTTP-Secure-Umgebung:

Loginziel: https://secure.studivz.net/Login
InputName eMail: email
InputName Passwort: password

Dann gibt es in der Form noch zwei versteckte Hashes, die wahrscheinlich von PHP generiert werden, die ebenfalls ausgelesen (regex) und übergeben werden müssen.
private Nachricht | Beiträge des Benutzers
djCalypso
myCSharp.de - Member



Dabei seit:
Beiträge: 96
Herkunft: Köln

Themenstarter:

beantworten | zitieren | melden

Bei einem Captcha könnte man ja erst einmal so reagieren, das der User eine Art Fenstereingabe bekommt, wo dieses Captcha angezeigt wird und auf die richtige Eingabe wartet. Da hilft wahrscheinlich nur probieren und austesten, damit man solche Sachen durch eine Programmlogik ersetzt.
private Nachricht | Beiträge des Benutzers
Sebi
myCSharp.de - Member



Dabei seit:
Beiträge: 167

beantworten | zitieren | melden

Ich bin mir zwar nicht sicher aber ich möchte zu 99,9% ausschließen dass GMX (oder ähnlich) solche frickellösungen nutzen.

Viel eher entsprechende APIs des Anbieteres welche natürlich unter umständen nicht für die "Öffentlichkeit" verfügbar sind.

Mehr weiß man wenn man mal anschaut was der Messenger genau für Aufrufe startet.
private Nachricht | Beiträge des Benutzers
DavidT
myCSharp.de - Member

Avatar #avatar-3073.png


Dabei seit:
Beiträge: 998
Herkunft: Winterberg

beantworten | zitieren | melden

Du mußt ja im Prinzip nur eine Logik zum einloggen und eune Logik zum auslesen der Nachrichten machen. Das Einloggen ist halt standard und falls die Portale für das abrufen der Nachrichten keine XML-Schnittstelle bieten, mußt du mit einem XML-Document halt die Seite auslesen und dir die einzelnen Informationen raussuchen.

Gruß David
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.207

beantworten | zitieren | melden

Zitat von Sebi
Ich bin mir zwar nicht sicher aber ich möchte zu 99,9% ausschließen dass GMX (oder ähnlich) solche frickellösungen nutzen.

Viel eher entsprechende APIs des Anbieteres welche natürlich unter umständen nicht für die "Öffentlichkeit" verfügbar sind.

Mehr weiß man wenn man mal anschaut was der Messenger genau für Aufrufe startet.

Das is klar, dass GMX bei der Nutzung eines eigenen Messengers eine API entwickelt hat und diese auch nutzt.
Aber ich denke eine Anfrage bei Socialnetworks alá StudiVZ, die sich vor allem durch Werbung finanzieren, den Zugang zu einer API zu bekommen, die auch noch kostenlos und werbefrei ist, ist aussichtslos.
Daher bleibt wohl nur die Alternative via HTTP(S).

Aus Auslesen des API-Streams is au ned so prickelnd - wer weiß was für Zeugs generiert und übergeben wird und dann lohnt sich das schon bzgl. der dynamischen Verwaltung neme.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Abt am .
private Nachricht | Beiträge des Benutzers
Amarokap
myCSharp.de - Member



Dabei seit:
Beiträge: 21

beantworten | zitieren | melden

Zitat von Abt
...

Problematischer wirds bei StudiVZ, wenn nach ner gewissen Dauer der Nutzung die CAPTCHA-Abfrage kommt.
...

Soweit ich weiss, kann man dies umgehen, indem man sich einfach ausloggt und anschliessend wieder neu einloggt.
private Nachricht | Beiträge des Benutzers
djCalypso
myCSharp.de - Member



Dabei seit:
Beiträge: 96
Herkunft: Köln

Themenstarter:

beantworten | zitieren | melden

Habe das eben einmal probiert umzusetzen wie ich denke, jedoch irgendwie ohne Erfolg.

Ich habe zu Beginn ein Post Request mit email/password an meinvz geschickt und den CookieContainer vorher beim request festgelegt.
Schreibt der nach dem schreiben des Streams den Cookie in den Container oder müsste ich das selber managen?

Bisher habe ich noch nie so wirklich mit Cookies & C# gearbeitet, deswegen bin ich da etwas unerfahren.

Hier mein kurzes Beispiel.

        private CookieContainer cc = new CookieContainer();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            LoginPost();

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.meinvz.net");
            request.CookieContainer = cc;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream stream = response.GetResponseStream();
            string tempString = null;
            int count = 0;
            StringBuilder sb = new StringBuilder();
            byte[] buf = new byte[8192];

            do
            {
                count = stream.Read(buf, 0, buf.Length);

                if (count != 0)
                {
                    tempString = Encoding.UTF8.GetString(buf, 0, count);
                    sb.Append(tempString);
                }
            }
            while (count > 0);

            richTextBox1.Text = sb.ToString();
        }

        private void LoginPost()
        {
            string email = textBox1.Text;
            string password = textBox2.Text;

            ASCIIEncoding encoding = new ASCIIEncoding();
            string postData = "email=" + email;
            postData += "&password=" + password;
            byte[] data = encoding.GetBytes(postData);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.meinvz.net");
            request.CookieContainer = cc;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;
            Stream stream = request.GetRequestStream();
            stream.Write(data, 0, data.Length);
            stream.Close();
        }

Habe eben entdeckt, das Meinvz das ganze über eine PHPSESSID im Cookie macht.
dann bräuchte man ja eigentlich nur die PHPSessid zu bekommen und braucht nichts mit Cookies rumfuchteln.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von djCalypso am .
private Nachricht | Beiträge des Benutzers
djCalypso
myCSharp.de - Member



Dabei seit:
Beiträge: 96
Herkunft: Köln

Themenstarter:

beantworten | zitieren | melden

Den Login habe ich nun hinbekommen nach langem hin und her.

        public struct UserLoginData
        {
            public string email;
            public string password;
            public string formkey;
            public string iv;
            public string checkcode;
        }

        private CookieContainer cookies = new CookieContainer();

        private bool isLogin = false;

        public Form1()
        {
            InitializeComponent();
        }

        private UserLoginData GetUserLoginData(String html)
        {
            string searchValue;
            UserLoginData userLoginData = new UserLoginData();

            // Email
            userLoginData.email = textBox1.Text;
            
            // Password
            userLoginData.password = textBox2.Text;

            // Formkey
            searchValue = "<input type=\"hidden\" name=\"formkey\" value=\"";
            html = html.Substring(html.IndexOf(searchValue) + searchValue.Length);
            userLoginData.formkey = html.Substring(0, html.IndexOf("\" />"));
            
            // IV
            searchValue = "<input type=\"hidden\" name=\"iv\" value=\"";
            html = html.Substring(html.IndexOf(searchValue) + searchValue.Length);
            userLoginData.iv = html.Substring(0, html.IndexOf("\" />"));
            
            // Checkcode
            searchValue = "<input type=\"hidden\" name=\"checkcode\" value=\"";
            html = html.Substring(html.IndexOf(searchValue) + searchValue.Length);
            userLoginData.checkcode = html.Substring(0, html.IndexOf("\" />"));

            return userLoginData;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (isLogin)
            {
                VisitPage("http://www.meinvz.net/Groups");
            }
            else
            {
                Login();
            }
        }

        private void Login()
        {
            Uri uri = new Uri("http://www.meinvz.net");
            CookieContainer cookieContainer = new CookieContainer();
            UserLoginData userLoginData;

            // Infos auslesen
            HttpWebRequest sessionRequest = (HttpWebRequest)WebRequest.Create(uri);
            sessionRequest.CookieContainer = new CookieContainer();
            cookies = sessionRequest.CookieContainer;
            HttpWebResponse sessionResponse = (HttpWebResponse)sessionRequest.GetResponse();
            StreamReader checkReader = new StreamReader(sessionResponse.GetResponseStream());
            userLoginData = GetUserLoginData(checkReader.ReadToEnd());
            checkReader.Close();
            sessionResponse.Close();
        
            // Einloggen
            string loginData = "email=" + userLoginData.email;
            loginData += "&password=" + userLoginData.password;
            loginData += "&login=Einloggen";
            loginData += "&jsEnabled=false";
            loginData += "&formkey=" + userLoginData.formkey;
            loginData += "&iv=" + userLoginData.iv;
            loginData += "&checkcode=" + userLoginData.checkcode;
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.meinvz.net/Login");
            req.CookieContainer = cookies;
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] loginDataBytes = encoding.GetBytes(loginData);
            req.ContentLength = loginDataBytes.Length;
            Stream stream = req.GetRequestStream();
            stream.Write(loginDataBytes, 0, loginDataBytes.Length);
            stream.Close();
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            res.Close();
            isLogin = true;

            VisitPage("http://www.meinvz.net/Start");
        }

        private void VisitPage(string url)
        {
            string html;
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
            req.CookieContainer = cookies;
            req.Method = "GET";
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            StreamReader sr = new StreamReader(res.GetResponseStream());
            html = sr.ReadToEnd();

            webBrowser1.Document.Body.InnerHtml = html;
        }

Es ist nun auch möglich, andere Seiten mit diesem Cookie zu besuchen mit VisitPage!
Werde die Tage mal ein bisschen herumpfeilen und schauen was für Infos ich mir dann auslesen lasse.

Interessant wäre es herauszulesen, welche Personen gerade online sind.

Habt ihr noch ein paar Wünsche, die ihr gerne mit einem solchem Programm haben wollt?

PS: Was haltet ihr von dem Projektnamen: mySNM = my Social Network Messenger?
private Nachricht | Beiträge des Benutzers
trib
myCSharp.de - Member



Dabei seit:
Beiträge: 692

beantworten | zitieren | melden

Sprich mal "SNM" schnell aus^^
Ich finde es nicht unbedingt den Knaller, auch wenn die Abkürzung für etwas Eindeutiges steht.

Sachen die mich Interessieren würden:
Wer ist Online bräuchte ich nicht unbedingt. Dazu habe ich meinen Instant Messanger für die Leute die mich interessieren.

Neue Nachrichten, neue Fotoalben von Freunden, Anzahl der Verlinkungen (hat sich verändert?), Pinnwandeinträge... Sowas wäre gut.

Wenn das soweit funktioniert fände ich es noch gut, das mit dem Programm gleichzeitig meine Mails gecheckt werden. Wenn schon, denn schon
Aber das ist sicherlich aufgrund der vielen verschiedenen Anbieter nicht gerade einfach.

Ich würde mir das so vorstellen, das dieses Programm mir bescheid gibt, wenn sich bei Studi oder meinen Mails was getan hat. Dann muss man nicht immer den Browser hervorholen, F5 -> ggf. Logindaten eingeben -> Tabs durchforsten und ihn wieder in der Taskleiste versenken.

Gruß, TriB
private Nachricht | Beiträge des Benutzers
djCalypso
myCSharp.de - Member



Dabei seit:
Beiträge: 96
Herkunft: Köln

Themenstarter:

beantworten | zitieren | melden

Okey, mit SNM hast du Recht das klingt nicht so pralle.
Habe noch ein bisschern herumprobiert und schon bisschen was geschafft.

www.calyphornia.de/snm.rar

Man kann sich nun einloggen und sieht rechts an der Seite immer die aktuelle Online Liste (Refresh alle 10 Sekunden).

Werde die Tage noch weiter daran arbeiten.

Hätte noch jmd. Interesse bei diesem kleinen Projekt mitzuarbeiten?
private Nachricht | Beiträge des Benutzers
Steav
myCSharp.de - Member



Dabei seit:
Beiträge: 142

beantworten | zitieren | melden

http://code.google.com/apis/opensocial/


Googles opensocial API für social networks.... Studivz ist glaube auch unterstüzt.
private Nachricht | Beiträge des Benutzers
djCalypso
myCSharp.de - Member



Dabei seit:
Beiträge: 96
Herkunft: Köln

Themenstarter:

beantworten | zitieren | melden

Naja Google sagt schon alles.
Wie ich mitbekommen habe plant sogar Studivz nun nen Messenger zu basteln.

Ich denke ich werde die Tage mal versuchen mich etwas mit Miranda zu beschäftigen. Wäre extrem praktisch, wenn man Studivz im Miranda hätte als Protokoll.
Falls wie gesagt jmd. Interesse an solch einem Projekt hat kann er mich gerne anschreiben.
private Nachricht | Beiträge des Benutzers
blutiger_anfänger
myCSharp.de - Member



Dabei seit:
Beiträge: 293
Herkunft: Meerbusch, NRW

beantworten | zitieren | melden

hatte mich vor einiger zeit auch mal an solch einem Projekt versucht... Wer mag kanns sich ja mal anschauen... Leider nicht mehr ganz aktuell... Bastel grad an nem dicken Update - ansonsten wen's interessiert --> www.codecollectors.net
Wenn ich nicht hier bin, findest du mich auf code-bude.net.
private Nachricht | Beiträge des Benutzers