Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi
Ön Sipariş Talebinde Bulunan Üyelerimiz
Sipariş Talebinde Bulunan Üyelerimiz

Konuyu Paylaş : facebook gplus twitter

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 Giriş yap veya Üye Ol
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 Giriş yap veya Üye Ol
(27-05-2018, Saat: 22:54)Paranoyaq Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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 );
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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
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,

<form id="form" method="post" rel="loginme">

böylece bu form nereye submit ediliyor görmüş olursun, seninde idhttp ile aynı yerlere aynı parametreleri göndermen gerekir.
http htttps ayrımına dikkat etmen gerekir. (idhttp https ye bağlanırken hataya düşer kütüphaneler gerekir)


Kod:
Logged := not StrUtils.ContainsStr(Result, 'quick_login');

misal burada  yapılan;
demekki oturum açıldığında sunucu tarafından quick_login kelimesi içeren div ler vs geliyor,
idhttp nin geri döndürdüğü html yazı içinde bu kelime geçiyorsa oturum açık diyoruz.

bir başka yol packet sniffer lardır, pc inden hangi programın nereye ne datası gönderip aldığını görebilirsin, googlersen ayrıntılı bilgi mevcut, google görsellere bakabilirsin.
Cevapla
#15
(08-01-2019, Saat: 04:05)okoca Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olchrome 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
#16
idhttp ile alamayacağın veri yoktur, network tabından bakman gerekir ajax nereye request yapıyor, parametreler nedir.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  XML Parse ve RSS SimaWB 5 889 14-12-2017, Saat: 14:10
Son Yorum: uparlayan
  TWebBrowser Lafınızı Dinlesin, HTML 5'ten anlasın uparlayan 13 1.677 14-11-2017, Saat: 21:10
Son Yorum: uparlayan
  Web Sitesine Login Olma ve HTML Parse - 2 SimaWB 6 851 13-11-2017, Saat: 10:37
Son Yorum: klavye
  Tüm Platformlar için (cross-platform) HTML Dosyası Oluşturma Fesih ARSLAN 0 1.370 21-10-2016, Saat: 11:53
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 1 Ziyaretçi