Konuyu Oyla:
  • Derecelendirme: 5/5 - 3 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Web Sitesine Login Olma ve HTML Parse
#11
(27-05-2018, Saat: 22:54)Paranoyaq Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
DoLogin('Kullaniciadim', 'sifrem');

  memo1.Lines.add(idhttp1.Get('http://www.delphican.com/index.php'));

şeklinde butona atıp memo içerisindeki ziyaretçi yada kullanıcı adımın geçtiği kısımları tarıyorum , olumsuz.

Fonksiyon RESULT içeriğini gözden kaçırmayın.

Mantığı şöyle kurmalısınız.

    Memo1.Lines.add( DoLogin('Kullaniciadim', 'sifrem') );

Diğer yandan eğer sitede gezinmeye devam edecekseniz ve bir cookiemanager kullanmayı düşünmüyorsanız, IdHttp'yi fonksiyon içinde Create / Free etmeyecek, dışarı alacaksınız.

Anlatımı güçlendirmek için size bir örnek.

Uses IdHttp, StrUtils;

Var
  IdHttp     : TIdHttp;
  boolLogged : Boolean = False;

function DoLogin(const username, password: string; var Logged:Boolean): string;
var
 Request: TStringList;
begin
  Result := '';
  try
    Request := TStringList.Create;
    try
      Request.Add('action=do_login');
      Request.Add('url=http://www.delphican.com/index.php');
      Request.Add('quick_login=1');
      Request.Add('quick_username='+username);
      Request.Add('quick_password='+password);
      Request.Add('quick_remember=yes');
      Request.Add('submit=Giriş Yap');
      if NOT Assigned( IdHttp ) then
      begin
        IdHTTP                     := TIdHTTP.Create;
        IdHTTP.AllowCookies        := True;
        IdHTTP.HandleRedirects     := True;
        IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
      end;
      IdHTTP.Post('http://www.delphican.com/member.php', Request);
      Result := IdHTTP.Get('http://www.delphican.com');
      // Oturum aktif mi ... kontrolü
      Logged := not StrUtils.ContainsStr(Result, 'quick_login');
    finally
      Request.Free;
    end;
  except
    Result := '';
  end;
end;

function UserControlPanel( var Logged: boolean ): String;
begin
  if Logged then
  begin
    Result := IdHttp.Get( 'http://www.delphican.com/usercp.php' );
    // Oturum [halen] aktif mi ... kontrolü
    Logged := not StrUtils.ContainsStr(Result, 'quick_login');
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  strIcerik : String;
begin
  if not boolLogged
    then DoLogin( 'kullaniciadim', 'sifrem', boolLogged );
  strIcerik := UserControlPanel( boolLogged );
  if boolLogged
    then Memo1.Lines.Add( strIcerik )
    else MessageDlg( 'Oturumunuz aktif değidir.', mtError, [mbOk], 0 );
end;

//.......

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(IdHttp)
    then FreeAndNil( IdHttp );
end;


Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#12
(28-05-2018, Saat: 19:58)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(27-05-2018, Saat: 22:54)Paranoyaq Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
DoLogin('Kullaniciadim', 'sifrem');

  memo1.Lines.add(idhttp1.Get('http://www.delphican.com/index.php'));

şeklinde butona atıp memo içerisindeki ziyaretçi yada kullanıcı adımın geçtiği kısımları tarıyorum , olumsuz.

Fonksiyon RESULT içeriğini gözden kaçırmayın.

Mantığı şöyle kurmalısınız.

    Memo1.Lines.add( DoLogin('Kullaniciadim', 'sifrem') );

Diğer yandan eğer sitede gezinmeye devam edecekseniz ve bir cookiemanager kullanmayı düşünmüyorsanız, IdHttp'yi fonksiyon içinde Create / Free etmeyecek, dışarı alacaksınız.

Anlatımı güçlendirmek için size bir örnek.

Uses IdHttp, StrUtils;

Var
  IdHttp     : TIdHttp;
  boolLogged : Boolean = False;

function DoLogin(const username, password: string; var Logged:Boolean): string;
var
 Request: TStringList;
begin
  Result := '';
  try
    Request := TStringList.Create;
    try
      Request.Add('action=do_login');
      Request.Add('url=http://www.delphican.com/index.php');
      Request.Add('quick_login=1');
      Request.Add('quick_username='+username);
      Request.Add('quick_password='+password);
      Request.Add('quick_remember=yes');
      Request.Add('submit=Giriş Yap');
      if NOT Assigned( IdHttp ) then
      begin
        IdHTTP                     := TIdHTTP.Create;
        IdHTTP.AllowCookies        := True;
        IdHTTP.HandleRedirects     := True;
        IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
      end;
      IdHTTP.Post('http://www.delphican.com/member.php', Request);
      Result := IdHTTP.Get('http://www.delphican.com');
      // Oturum aktif mi ... kontrolü
      Logged := not StrUtils.ContainsStr(Result, 'quick_login');
    finally
      Request.Free;
    end;
  except
    Result := '';
  end;
end;

function UserControlPanel( var Logged: boolean ): String;
begin
  if Logged then
  begin
    Result := IdHttp.Get( 'http://www.delphican.com/usercp.php' );
    // Oturum [halen] aktif mi ... kontrolü
    Logged := not StrUtils.ContainsStr(Result, 'quick_login');
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  strIcerik : String;
begin
  if not boolLogged
    then DoLogin( 'kullaniciadim', 'sifrem', boolLogged );
  strIcerik := UserControlPanel( boolLogged );
  if boolLogged
    then Memo1.Lines.Add( strIcerik )
    else MessageDlg( 'Oturumunuz aktif değidir.', mtError, [mbOk], 0 );
end;

//.......

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(IdHttp)
    then FreeAndNil( IdHttp );
end;



Teşekkür ediyorum yardımlar için ayrıca

Oturum Aktif olması kısmında kullanıcı adı ve şifreyi editlere aktararak

var
strIcerik : String;
begin
if not boolLogged
  then DoLogin( edit1.text, edit2.text, boolLogged );
strIcerik := UserControlPanel( boolLogged );
MessageDlg( 'Oturumunuz aktif ', mtConfirmation, [mbOk], 0 );
if boolLogged
  then Memo1.Lines.Add( strIcerik )
  else MessageDlg( 'Oturumunuz aktif değidir.', mtError, [mbOk], 0 );
Cevapla
#13
Emeğinize sağlık fakat bu makalenin görünürlüğünde sorun var sanırım.  Paylaşmış olduğunuz kod yapısında html ifadeler görünüyor. Bilginiz olsun istedim.
Örneğin (function Do<span class="highlight" style)..

Birde konuda Action yerine Rel kullanıldıysa aynı kullanım mümkün mü farklı bir yapımı kullanılıyor. Aşağıdaki yapıda post edeceğim herhangi bir sayfa adresi yok. 
Örnek
<form id="form" method="post" rel="loginme">
Cevapla
#14
(08-01-2019, Saat: 04:05)okoca Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.chrome opera vs webbrowserda sayafaya sağ tıkla öğeyi denetle ye tıkla, oradan network tabına geç,
geçtiğin tabda preserve log a tıkla (bu işlem sayfa adresi değiştiğinde aşağıdaki listenin silinmemesini sağlayacak),
sonrasında delphican formunda bir sayfaya bir mesaj gir ve cevabı gönderde,
network tabında aşağıda listelenecek olan istekler sunucuya giden istekler olacaktır, 
biraz incelersen kendi yazdığın yorumun hangi adrese hangi parametre ile gittiğinide görebilirsin,
sunucununda ne cevap verdiğini görebilirsin,

Bilgi için teşekkürler, dediğiniz şekilde aderesi yakaladım, fakat daha büyük bir sorun çıktı idhttp.get  ajax ile üretilen bilgileri almıyor. Bir memorystream değişken tanımlayıp çekmeyi denedim sonuç aynı. Örnek sayfada class adı ACT olan div içindeki bilgi  ajax ile 5 saniyede bir yenileniyor. Bunu idhttp get ile almaya kalktığınızda bu bilgi gelmiyor.



oX7apm.png
Cevapla
#15
Çok teşekkür Ederim benimde merak ettiğim bir konu idi , detaylı anlatım ve örnekleme için ayrıca teşekkürler.

(28-05-2018, Saat: 19:58)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(27-05-2018, Saat: 22:54)Paranoyaq Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
DoLogin('Kullaniciadim', 'sifrem');

  memo1.Lines.add(idhttp1.Get('http://www.delphican.com/index.php'));

şeklinde butona atıp memo içerisindeki ziyaretçi yada kullanıcı adımın geçtiği kısımları tarıyorum , olumsuz.

Fonksiyon RESULT içeriğini gözden kaçırmayın.

Mantığı şöyle kurmalısınız.

    Memo1.Lines.add( DoLogin('Kullaniciadim', 'sifrem') );

Diğer yandan eğer sitede gezinmeye devam edecekseniz ve bir cookiemanager kullanmayı düşünmüyorsanız, IdHttp'yi fonksiyon içinde Create / Free etmeyecek, dışarı alacaksınız.

Anlatımı güçlendirmek için size bir örnek.

Uses IdHttp, StrUtils;

Var
  IdHttp     : TIdHttp;
  boolLogged : Boolean = False;

function DoLogin(const username, password: string; var Logged:Boolean): string;
var
 Request: TStringList;
begin
  Result := '';
  try
    Request := TStringList.Create;
    try
      Request.Add('action=do_login');
      Request.Add('url=http://www.delphican.com/index.php');
      Request.Add('quick_login=1');
      Request.Add('quick_username='+username);
      Request.Add('quick_password='+password);
      Request.Add('quick_remember=yes');
      Request.Add('submit=Giriş Yap');
      if NOT Assigned( IdHttp ) then
      begin
        IdHTTP                     := TIdHTTP.Create;
        IdHTTP.AllowCookies        := True;
        IdHTTP.HandleRedirects     := True;
        IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
      end;
      IdHTTP.Post('http://www.delphican.com/member.php', Request);
      Result := IdHTTP.Get('http://www.delphican.com');
      // Oturum aktif mi ... kontrolü
      Logged := not StrUtils.ContainsStr(Result, 'quick_login');
    finally
      Request.Free;
    end;
  except
    Result := '';
  end;
end;

function UserControlPanel( var Logged: boolean ): String;
begin
  if Logged then
  begin
    Result := IdHttp.Get( 'http://www.delphican.com/usercp.php' );
    // Oturum [halen] aktif mi ... kontrolü
    Logged := not StrUtils.ContainsStr(Result, 'quick_login');
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  strIcerik : String;
begin
  if not boolLogged
    then DoLogin( 'kullaniciadim', 'sifrem', boolLogged );
  strIcerik := UserControlPanel( boolLogged );
  if boolLogged
    then Memo1.Lines.Add( strIcerik )
    else MessageDlg( 'Oturumunuz aktif değidir.', mtError, [mbOk], 0 );
end;

//.......

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(IdHttp)
    then FreeAndNil( IdHttp );
end;



Çok teşekkürler ,
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Fluent HTML uparlayan 9 2.106 11-06-2019, Saat: 22:57
Son Yorum: ahmetb
  Web Sitesine Login Olma ve HTML Parse - 2 SimaWB 10 2.234 15-02-2019, Saat: 03:02
Son Yorum: BasK
  XML Parse ve RSS SimaWB 5 1.451 14-12-2017, Saat: 14:10
Son Yorum: uparlayan
  TWebBrowser Lafınızı Dinlesin, HTML 5'ten anlasın uparlayan 13 2.585 14-11-2017, Saat: 21:10
Son Yorum: uparlayan
  Tüm Platformlar için (cross-platform) HTML Dosyası Oluşturma Fesih ARSLAN 0 1.697 21-10-2016, Saat: 11:53
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 2 Ziyaretçi