Auf Facebook ohne API mit C # authentifizieren

Wie vor ein paar Tagen versprochen, bringe ich einen einfachen Code in C # als Proof of Concept mit, um mich bei Facebook zu authentifizieren, ohne die API zu verwenden . Dies bedeutet, dass wir mit dem Programm auf unser Facebook-Konto zugreifen können, als würden wir dies mit einem Browser wie Firefox oder Chrome tun.

Die Analyse aller HTTP-Anfragen, die ich über Firefox mit Tools wie Firebug , Wireshark usw. als Referenz erhalten habe, ist jedoch nicht erforderlich, um den Code zu verwenden oder zu verstehen.

Warum nicht bei Facebook mit der API authentifizieren?

Der Grund dafür, dass wir auf die API verzichten, ist, dass die Reichweite bei der Weitergabe von Nachrichten oder Statusinformationen größer ist, wenn wir auf die API verzichten . Ich bestätige dies nicht oder leugne es nicht, da ich es nicht sicher weiß, aber aus diesem Grund mache ich es ohne die API.

Das Problem dabei ist, dass der Code sehr empfindlich auf Änderungen reagiert, die Facebook möglicherweise in Zukunft auf seiner Zugriffsseite vornimmt, während dies mit der API nicht möglich wäre.

Was brauchen wir, um uns bei Facebook zu authentifizieren?

Wie immer wird der bereitgestellte Code in C # unter .Net Framework 4 entwickelt und ein in Visual Studio 2010 erstelltes Projekt bereitgestellt. Der Code ist einfach, sodass er problemlos in andere Programmiersprachen wie PHP oder VB .Net portiert werden kann.

Wie immer wird dringend empfohlen (obwohl nicht erforderlich), die Grundkenntnisse des HTTP-Protokolls zu besitzen. Hierzu empfehle ich, die folgenden Artikel zu lesen:

See also  Wie man jemanden zum Administrator einer Facebook-Seite macht

Um den Code nutzen zu können, benötigen wir nur einen korrekten Facebook-Benutzernamen und ein Passwort .

Code-Analyse in C # zur Authentifizierung bei Facebook ohne API.

1) GET Anfrage an die Zugangsseite

Der erste Schritt besteht darin , eine HTTP-Anfrage mit der GET-Methode an die Zugriffsseite oder die Facebook-Anmeldeseite zu richten: https://www.facebook.com/

Bei dieser Anfrage ist es sehr wichtig, dass wir ein CookieContainer() -Objekt definieren, da wir die Cookies, die die Facebook-Seite uns sendet, wiederverwenden müssen.

Ein weiterer sehr wichtiger Aspekt ist die Definition eines User-Agent Headers, der Facebook mitteilt, welchen Browser wir verwenden. Ich habe als User-Agent denjenigen verwendet, der meinen Firefox sendet: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0

Ich habe Tests durchgeführt, ohne den User-Agent Header oder einen zufälligen User-Agent und Facebook hat ihn sofort als “Unbekannter Browser” erkannt.

2) Verarbeiten Sie den HTML-Code der Facebook-Anmeldeseite

In diesem zweiten Schritt extrahieren wir alle Variablen, die wir benötigen, aus dem HTML-Code . Diese Variablen sind größtenteils verborgene Eingaben. Wir extrahieren sie mit verschiedenen regulären Ausdrücken und die Variablen sind die folgenden:

  • lsd : ist eine zufällige Textzeichenfolge.
  • lgnrnd : ein weiterer zufälliger Text.
  • Gebietsschema : es_ES das Land an, aus dem die Anfrage in meinem Fall gestellt wurde. es_ES Spanien an.
  • lgnjs : Gibt den Zeitpunkt (Datum und Uhrzeit) an, zu dem die Anforderung unter Verwendung der UNIX- oder POSIX-Zeit erstellt wird . Um diesen Wert zu generieren, verwenden wir die Funktion CreateTimestamp() .
  • Zeitzone : Gibt die Zeitzone an, aus der die Anforderung stammt. Um diesen Wert zu generieren, wird die Javascript-Funktion getTimezoneOffset() die ich nach C # mit dem gleichen Namen portieren musste.
  • persistent : es ist ein konstanter Wert von “1” und damit zeigen wir an, dass der Login permanent ist.
  • default_persistent : ist der Standardwert von persistent und hat den konstanten Wert “0”.
See also  So melden und blockieren Sie Benutzer auf Pinterest

3) Senden Sie eine Anfrage für den POST-Zugang mit unserem Benutzernamen und Passwort

In diesem Schritt senden wir eine HTTP-Anfrage mit der POST-Methode, die unseren Benutzernamen und das Kennwort sowie alle im vorherigen Schritt erhaltenen Variablen enthält .

Es ist sehr wichtig, das CookieContainer() -Objekt weiter zu verwenden, in dem die erforderlichen Cookies CookieContainer() Wenn alles gut gelaufen ist, sendet Facebook eine Umleitungsantwort an die URL https://www.facebook.com/?sk=welcome mit den Authentifizierungscookies .

Zusammenfassung der Authentifizierung bei Facebook ohne API mit C #

Zusammenfassend können wir sagen, dass der Prozess aus drei Schritten besteht:

  • Fordern Sie die Facebook-Anmeldeseite an, um erste Cookies zu erhalten.
  • Verarbeitung des HTML-Codes der Facebook-Zugangsseite zum Extrahieren der Variablen.
  • Senden Sie eine POST-Anfrage mit den in den vorherigen Schritten erhaltenen Daten, um Authentifizierungs-Cookies auf Facebook zu erhalten.

Sie können das Projekt in C # herunterladen, dessen Code Kommentare enthält und dessen Verwendung sehr einfach ist. Von hier aus können Sie den Code an der gewünschten Adresse weiterentwickeln. Wenn Sie den Artikel nützlich fanden, würde es uns helfen, eine +1 zu hinterlassen.

Mit diesem Artikel verabschieden wir uns von Vozidea von 2013 und wünschen allen ein frohes neues Jahr!

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *