Einloggen bei facebook mit Indy

8

Ich möchte mich mit Indy auf meinem Facebook-Account einloggen. Die Version ist 9.00.10 und ich verwende OpenSSL mit TIDHTTP und habe ihm einen Cookie-Manager zugewiesen. Alles funktioniert gut (ich kann eine POST-Anfrage eine GET, etc. senden.)

Ich schnüffelte den tatsächlichen Login auf Facebook und ich habe folgende Informationen:

  • UserAgent: Mozilla / 5.0 (Windows; U; Windows NT 6.0; de-US; rv: 1.9.2) Gecko / 20100115 Firefox / 3.6 (.NET CLR 3.5.30729)

  • Es gibt mehrere POST-Parameter:

    • lsd = Ich habe keine Ahnung, was das ist.
    • email = Der Facebook-Benutzername / E-Mail-Adresse.
    • pass = Das Passwort (unverschlüsselt) - & gt; Ich war schockiert, in Klartext zu sehen.
    • default_persistent = (0 oder 1) für "Angemeldet bleiben"
    • Zeitzone = Zeitzonencode.
    • lgnrnd = Ich habe keine Ahnung, was das ist.
    • lgnjs = Ich habe keine Ahnung, was das ist.
    • locale = GEOIP-Standort (e.x. de_DE)

Der Beitrag wurde auf Ссылка gemacht. Wenn ich mich jedoch anmelde, gebe ich zurück, dass ich eine falsche eMail eingegeben habe. Ich bin mir sicher, dass ich die richtige eMail und das Passwort verwendet habe.

Hier ist mein Code:

%Vor%

Ich habe die Parameter verwendet, die ich von LiveHTTPHeaders erhalten habe. Wie würde ich mich erfolgreich mit Indy bei Facebook einloggen?

EDIT: Versucht dies mit XE2 und Indy 10, aber ich bekomme den 'incorrect email' Fehler:

%Vor%     
Benjamin Weiss 27.04.2013, 16:15
quelle

2 Antworten

5

Wenn das Flag hoForceEncodeParams in der Eigenschaft TIdHTTP.HTTPOptions aktiviert ist (was standardmäßig der Fall ist), müssen Sie die geposteten TStringList mit un -kodierten Werten füllen. TIdHTTP.Post() kodiert dann die Werte für Sie, wenn Sie sie übertragen.

Unter der Annahme, dass das hoForceEncodeParams Flag aktiviert ist, wird lparamlist.Add('email=myeMail%40mysite.com'); als email=myeMail%2540mysite.com übertragen, weil das % -Zeichen als %25 codiert wird. Facebook würde das als email=myeMail%40mysite.com dekodieren und es als ungültige E-Mail ablehnen.

Sie können entweder:

  1. Deaktivieren Sie das hoForceEncodeParams -Flag, damit die TStringList -Werte unverändert übertragen werden. Sie wären dann für die manuelle Codierung verantwortlich.

  2. Lassen Sie das hoForceEncodeParams -Flag aktiviert und ändern Sie stattdessen lparamlist.Add('email=myeMail%40mysite.com'); in lparamlist.Add('[email protected]'); . TIdHTTP.Post() in Indy 9 wird es dann als [email protected] übertragen, weil Indy 9 das @ -Zeichen nicht codiert. Das kann oder kann nicht funktionieren, je nachdem, wie nachsichtig Facebook ist.

Wenn Sie auf Indy 10 aktualisieren, codiert TIdHTTP.Post() das Zeichen @ als %40 wie erwartet, wenn das Flag hoForceEncodeParams aktiviert ist.

    
Remy Lebeau 28.04.2013, 05:46
quelle
0

Für jeden Interessierten funktioniert der OP-Code gut mit den mobilen Versionen von Facebook, also ersetzen Sie einfach www.facebook.com durch touch / m.facebook.com.

Wenn das OP nun auch freundlich genug wäre, zu teilen, wie er die Vollversion zum Funktionieren gebracht hat (zumindest die Cookies nicht aktiviert), bin ich sicher, dass wir alle dankbar sein werden.

    
China White 22.11.2016 11:29
quelle

Tags und Links