![]() |
|
Web Sitesine Login Olma ve HTML Parse - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Eğitim (https://www.delphican.com/forumdisplay.php?fid=19) +---- Forum: Makale (https://www.delphican.com/forumdisplay.php?fid=20) +---- Konu Başlığı: Web Sitesine Login Olma ve HTML Parse (/showthread.php?tid=1522) Sayfalar:
1
2
|
Web Sitesine Login Olma ve HTML Parse - SimaWB - 11-11-2017 Bir çok kişi için kendi yazdığı program aracılığıyla bir web sitesine login olup oradan bazı bilgileri alma ihtiyacı hâsıl olmuştur. Zaten bu yüzden forumlarda sık sık sorulan 2 konudur "Bir web sitesine login olmak" ve "html parse" konuları. Bu 2 konuyu bir örnekle göstermeye çalışacağım: Login olma konusuna örnek olarak http://www.delphican.com'a login olmaya çalışalım ![]() Bu konuda değişik yöntemler kullanılabilir ama ben Delphi ile birlikte geldiği için Indy bileşenlerinden TIdHTTP bileşenini kullanacağım. Öncelikle login olmak istediğimiz web sayfasının kaynak kodlarına bakıp login olmak için hangi URL kullanılıyor, hangi değerler POST ediliyor onları tespit etmek gerekli. http://www.delphican.com/index.php sayfasının kaynak kodlarına baktığımızda login formunun şu şekilde olduğu görülür: ![]() Burada dikkat edeceğimiz ilk şey bu formdaki datalar hangi URLye post edilecek. Form’un action özelliğinden bunu anlayabiliyoruz: http://www.delphican.com/member.php Demek ki biz IdHTTP.Post işlemi yaparken bu adresi kullanacağız. İkincisi ise POST edilecek veriler nelerdir. Bunlar formun içindeki INPUTlardır. Programımızda form içindeki inputları ve değerlerini bir liste haline getirip IdHTTP.Post’un ikinci parametresi olarak kullanmalıyız.
var
IdHTTP: TIdHTTP;
Request: TStringList;
begin
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=KULLANICI_ADI');
Request.Add('quick_password=SIFRE');
Request.Add('quick_remember=yes');
Request.Add('submit=Giriş Yap');
IdHTTP := TIdHTTP.Create;
try
IdHTTP.AllowCookies := True;
IdHTTP.HandleRedirects := True;
IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
IdHTTP.Post('http://www.delphican.com/member.php', Request);
finally
IdHTTP.Free;
end;
finally
Request.Free;
end;
Bu aşamada kullanıcı adımız ve şifremiz doğru ise login işlemi başarıyla sağlanmış demektir. Fakat başarısız bir login işlemi de olsa yukarıdaki kodda hata mesajı almazsınız. Neden? Cevabı basit: hatalı giriş yapsak da bize bir web sayfası gösteriliyor. O zaman biz başarılı giriş yapıp yapmadığımızı nasıl anlayacağız? Bunun da kişiye göre değişen çözümleri olabilir. Örneğin, login olunmadığı takdirde delphican.com'un ana sayfasında "Hoşgeldin, Ziyaretçi" yazıyor. Ama login olunmuşsa Ziyaretçi yerine kullanıcı adımız yazıyor. Bu yazı kontrol edilebilir. Ben yukarıda kullandığımız quick_login'leri kullanmak istedim. Login'den sonra sayfanın kaynak kodlarında quick_login varsa login başarısız demektir. Bu bilgiler ışında ve yukarıdaki kodlarda sadece kullanıcı adı ve şifremiz değişken olacağına göre bunları bir fonksiyon haline dönüştürelim. function DoLogin(const username, password: string): string;
var
IdHTTP: TIdHTTP;
Request: TStringList;
begin
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');
IdHTTP := TIdHTTP.Create;
try
IdHTTP.AllowCookies := True;
IdHTTP.HandleRedirects := True;
IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
IdHTTP.Post('http://www.delphican.com/member.php', Request);
Result := IdHTTP.Get('http://www.delphican.com');
if StrUtils.ContainsStr(Result, 'quick_login') then //Login başarısız demektir
Result := '';
finally
IdHTTP.Free;
end;
finally
Request.Free;
end;
except
Result := '';
end;
end;
Fonksiyonumuz bize tüm sayfanın HTML kodlarını döndürecek. Tabi login başarılı ise Bir sonraki aşamada HTML parse'ye örnek olması için bu dönen değeri kullanacağız. Cvp: Web Sitesine Login Olma ve HTML Parse - Halil Han BADEM - 11-11-2017 (11-11-2017, Saat: 15:36)SimaWB Adlı Kullanıcıdan Alıntı: Bir çok kişi için kendi yazdığı program aracılığıyla bir web sitesine login olup oradan bazı bilgileri alma ihtiyacı hâsıl olmuştur. Zaten bu yüzden forumlarda sık sık sorulan 2 konudur "Bir web sitesine login olmak" ve "html parse" konuları.Bilgi için teşekkürler hocam, adamsınız
Web Sitesine Login Olma ve HTML Parse - frmman - 11-11-2017 Teşekkürler, parmaklarınıza sağlık
Web Sitesine Login Olma ve HTML Parse - yhackup - 12-11-2017 Teşekkür ederim çok güzel bir makale olmuş. Bir dipçe düşeyim ssl serfitikasına sahip bir siteye Post/Get ile TIdHTTP aracını kullanarak login olamıyorsunuz maalesef. Ben üzerinde bir ara bayağı uğraşmıştım bunun yerine Clever Internet Suite componetlerinden yaralandım. Bu tarz işlemler için başarılı bir componet. Cvp: Web Sitesine Login Olma ve HTML Parse - delphi-x - 14-11-2017 Hocam https://namazvakitleri.diyanet.gov.tr/tr-TR adresindeki post sayfasını ve parametreleri nasıl alabiliriz denedim ama yapamadım: country=2 state=546 stateRegion=9626 Cvp: Web Sitesine Login Olma ve HTML Parse - Halil Han BADEM - 14-11-2017 (14-11-2017, Saat: 00:50)delphi-x Adlı Kullanıcıdan Alıntı: Hocam https://namazvakitleri.diyanet.gov.tr/tr-TR adresindeki post sayfasını ve parametreleri nasıl alabiliriz denedim ama yapamadım: Hocam bu şekilde birşey istiyorsaniz size source kodları akşam atabilirim. https://youtu.be/6MsyU7Bse1g Cvp: Web Sitesine Login Olma ve HTML Parse - mcuyan - 25-11-2017 (14-11-2017, Saat: 08:04)hyperxman Adlı Kullanıcıdan Alıntı:(14-11-2017, Saat: 00:50)delphi-x Adlı Kullanıcıdan Alıntı: Hocam https://namazvakitleri.diyanet.gov.tr/tr-TR adresindeki post sayfasını ve parametreleri nasıl alabiliriz denedim ama yapamadım: Halilcim küçücük uygulama 3mb mı?.. Canlıya çıktığım zaman exe yi Release modda oluşturup, Mpress ile sıkıştırma yaptıktan sonra exe dağıtımını yaparsan bence 3mb olmaz.. kendime ait bir uygulamam var yaklaşık 40 form ve compnent ve kodların sayısını ben ble bilmiyorum .. ama o bile 3mb oluyor.. neyse mpress le sıkıştırmayı bir dene derim..
Web Sitesine Login Olma ve HTML Parse - tavsanlili - 01-01-2018 selamlar. idHttp ile login olduktan sonra diğer sayfalara login olmuş hale gezmek mümkün mü bunun için nasıl bir yok izlemek gerekiyor. her yeni sayfada tekrar login işleminin tekrarlanması mi gerekli? dolaşacağımız site bunu nasıl bilecek farklı bir yöntem yada bileşen mi gerekiyor? bilgi verirseniz sevinirim. Cvp: Web Sitesine Login Olma ve HTML Parse - SimaWB - 02-01-2018 (01-01-2018, Saat: 17:33)tavsanlili Adlı Kullanıcıdan Alıntı: selamlar. Normal şartlarda gerekmez. Bunun için IdHttp'nin AllowCookies özelliğini True yapmanız yeterli(Varsayılan olarak True'dur). Ayrıca IdCookieManager bileşenine bakabilirsiniz. Cvp: Web Sitesine Login Olma ve HTML Parse - quiet1day - 27-05-2018 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. |