인디와 내 페이스 북 계정에 로그인하고 싶습니다. 버전은 9.00.10이고 OpenSSL을 TIDHTTP와 함께 사용하고 쿠키 관리자를 할당했습니다. 모든 것이 잘 작동 (내가 POST 요청 GET 등을 보낼 수 있습니다) 인디와 페이스 북에 로그인
나는 페이스 북의 실제 로그인을 맡아 나는 다음과 같은 정보가 있습니다해당 UserAgent : 모질라/5.0 (윈도우, U를 ; 윈도우 NT 6.0; EN-US; RV : 1.9.2) 게코/20100115 파이어 폭스/3.6 (.NET의 CLR 3.5.30729)
여러 POST 매개 변수가 있습니다 = 나는
- LSD가 그것이 무엇인지 전혀 모른다.
- 이메일 = 실제 facebook 사용자 이름/이메일.
- pass = 비밀번호 (암호화되지 않은) -> 나는 일반 텍스트로 보아 충격을 받았습니다.
- "로그인 상태 유지"에 대한 default_persistent = (0 또는 1)
- timezone = 시간대 코드.
- lgnrnd = 나는 그것이 무엇인지 전혀 모른다.
- lgnjs = 나는 그것이 무엇인지 전혀 모른다.
- 로켈 소식 https://www.facebook.com/login.php?login_attempt=1에 이루어진다
= GeoIP가 위치 (e.x. ko 페이지). 그러나 로그인하려고하면 잘못된 이메일을 입력했습니다. 나는 적당한 eMail과 Password를 사용했다고 확신한다.
procedure TForm1.Button1Click(Sender: TObject);
var
TEST : STRING;
lParamList: TStringList;
i : Integer;
begin
lParamList := TStringList.Create;
lparamlist.Add('lsd=AVoBzJ5G');
lparamlist.Add('email=myeMail%40mysite.com');
lparamlist.Add('pass=mypass');
lparamlist.Add('default_persistent=0');
lparamlist.Add('timezone=240');
lparamlist.Add('lgnrnd=210302_FeQV');
lparamlist.Add('lgnjs=1367035381');
lparamlist.Add('locale=en_US');
IDHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';
Test := IdHTTP1.Get('https://www.facebook.com'); // To get the first cookies.
for i := 0 to IDHTTP1.CookieManager.CookieCollection.Count - 1 do begin
ShowMessage(IDHTTP1.CookieManager.CookieCollection.Items[i].CookieText); // Show me the cookies.
end;
TEST := IDHTTP1.Post('https://www.facebook.com/login.php?login_attempt=1', lParamList);
StrToFile ('text.html', test);
ShellExecute (0, 'open', 'text.html', '', '', SW_SHOW);
end;
은 내가 LiveHTTPHeaders에서 가져온 매개 변수를 사용 :
여기 내 코드입니다. 어떻게하면 성공적으로 페이스 북에 로그인 할 수 있습니까? 당신에게 다음
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdCookieManager, IdIOHandler,
IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent,
IdComponent, DateUtils, ShellAPI, IdTCPConnection, IdTCPClient, IdHTTP, Vcl.StdCtrls;
type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
IdCookieManager1: TIdCookieManager;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetBetween (Str: String; StrStart : String; StrEnd : String) : String;
var
iPos : Integer;
BackUp : String;
begin
result := '';
iPos := Pos (StrStart, Str);
if iPos <> 0 then begin
Delete (Str, 1, iPos + Length (StrStart) - 1);
iPos := Pos (StrEnd, Str);
if iPos <> 0 then begin
result := Copy(Str,1, iPos - 1);
end;
end;
end;
function StrToFile(szFilePath:string; dwPosition:DWORD; szInput:string):Boolean;
var
hFile: DWORD;
dwSize: DWORD;
dwWritten: DWORD;
begin
Result := FALSE;
hFile := CreateFileW(PWideChar(szFilePath), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, 0, 0);
if hFile <> INVALID_HANDLE_VALUE then
begin
dwSize := Length(szInput) * 2;
if dwSize > 0 then
begin
SetFilePointer(hFile, dwPosition, nil, FILE_BEGIN);
WriteFile(hFile, szInput[1], dwSize, dwWritten, nil);
if dwWritten = dwSize then
Result := TRUE;
end;
CloseHandle(hFile);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Response : String;
lparamList : TStringList;
begin
IDHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';
try
Response := IDHTTP1.Get('https://www.facebook.com/');
except
end;
lParamList := TStringList.Create;
lParamList.Add('lsd='+GetBetween (Response, 'name="lsd" value="', '"'));
lParamList.Add('[email protected]');
lParamList.Add('pass=myPassword');
lParamList.Add('default_persistent'+GetBetween (Response, 'name="default_persistent" value="', '"'));
lParamList.Add('timezone=240');
lParamList.Add('lgnrnd='+GetBetween (Response, 'name="lgnrnd" value="', '"'));
lParamList.Add('lgnjs='+inttostr(DateTimeToUnix(Now)));
lParamList.Add('locale=en_US');
IDHTTP1.Request.Referer := 'https://www.facebook.com/';
try
Response := IDHTTP1.Post('https://www.facebook.com/login.php?login_attempt=1', lparamList);
except
end;
StrToFile ('test.html', 0, Response);
ShellExecute (0, 'open', 'test.html', '', '', SW_SHOW);
end;
end.
스니퍼가 있습니다. Indy가 전송하는 데이터를 냄새 맡고 웹 브라우저가 전송하는 데이터와 비교하십시오. –
Fiddler를 사용하여 SSL 데이터를 로컬 프록시로 사용하기 때문에 스니핑 할 수 있습니다. Internet Explorer를 포함하여 WinInet 기반 응용 프로그램이 실행되는 동안 자동으로 연결되도록합니다. 'TIdHTTP' ('ProxyParams' 속성을 가짐)를 포함하여 수동으로 다른 앱을 설정해야합니다. –
필자는 TIdHTTP 트래픽을 포함하여 SSL 트래픽을 스니핑하기 위해 Fiddler를 사용하므로 실제로 작동한다는 사실을 알고 있습니다. 'TIdHTTP.ProxyParams' 속성을 설정하여 TIdHTTP가 HTTPS 서버가 아닌 Fiddler에 직접 연결되도록하십시오. –