Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
HES Kodu Sorgulaması hakkında
#21
(17-11-2020, Saat: 14:26)mrmarman Adlı Kullanıcıdan Alıntı: @Halil Han BADEM'i paylaşımları için takdir ediyor ve desteği için teşekkürlerimi sunuyorum.

Bu paylaşımda kendisi de aslında hak verecektir, E-Devlet erişim bilgilerinin kapalı EXE içerisinde sunmak çok ama çok tehlikelidir. 
E-Devlet bilgilerimiz kişiye özel olduğundan yasal olarak da bu tip paylaşımları tasvip etmiyorum. Önce bunun altını çizeyim.

Paylaşım yaptığım ve araştırdığım konu tümüyle, "Sağlık Bakanlığı HES kodu sorgulaması" üzerinden - KİŞİSEL HERHANGİ BİR VERİ GÖNDERMEKSİZİN - HES kodu sorgusu üzerine idi.

Sağlık Bakanlığı bu takibi TCKimlik no üzerinden yapabilecek iken, HES kodu gibi bir çözüme başvurmasının sebeplerinden birisi de bu olmalı diye düşünüyorum.
Bu amaç kişilerin TCKimlik bilgilerini dahi karşı tarafa vermesinin önüne geçilmesi içindir. 

Çözüme ilişkin paylaşımım ise şu şekilde: Sadece kendi projelerinizde kendinizi yazacağı kod olarak değerlendirmenizi salık veririm. Üçüncü parti kullanımlar tümüyle hukuksuzdur.  
Bu yapı forumda da sıkça paylaştığımız basit birer HTML parse işlemidir.

Not: Salt yapıyı veriyorum, kontroller ile donatılabilir.

function HesKoduByEDevlet( TCKimlikNo, EDevletParola: String; HESKoduListesi: String; aWebBrowser: TWebBrowser ): String;
 procedure WaitFor( aKey: String );
 var
   Content : String;
 begin
   Content := '';
   while (Pos( aKey, Content ) = 0) do
   begin
     try Content := aWebBrowser.OleObject.Document.Body.InnerHtml; except end;
     Sleep(100);
     Application.ProcessMessages;
   end;
 end;
Const
 URL_EDevletLogin  = 'https://giris.turkiye.gov.tr/Giris/e-Devlet-Sifresi';
 URL_HesKodu       = 'https://www.turkiye.gov.tr/saglik-bakanligi-hes-kodu-sorgulama';
var
 HESContent  : String;
 aList       : TStringList;
 aIdx        : Integer;
begin
 aList := TStringList.Create;
 aList.Text := HESKoduListesi;
 try
   // Login İşlemi //
   aWebBrowser.Navigate( URL_EDevletLogin );
   while aWebBrowser.ReadyState <> READYSTATE_COMPLETE do
   begin
     Sleep(100);
     Application.ProcessMessages;
   end;
   aWebBrowser.OleObject.Document.GetElementById('tridField').Value    := TCKimlikNo;
   aWebBrowser.OleObject.Document.GetElementById('egpField').Value     := EDevletParola;
   aWebBrowser.OleObject.Document.getElementsByName('submitButton').item(0).click;

 WaitFor( 'Kullanıcı Menüsü' );

   for aIdx := 0 to aList.Count-1 do
   begin
     // HES Kodu Giriş Sayfasına Geçiş İşlemi //
     aWebBrowser.Navigate( URL_HesKodu );
     while aWebBrowser.ReadyState <> READYSTATE_COMPLETE do
     begin
       Sleep(100);
       Application.ProcessMessages;
     end;

     // HES Kodu Sorgulama İşlemi //
     aWebBrowser.OleObject.Document.GetElementById('hes_kodu').Value     := aList[aIdx];
     aWebBrowser.OleObject.Document.forms.item(1).Submit;

   WaitFor( '>Yeni Sorgu<' );

     // HES Kodu Sorgu Sonucu Parse İşlemi //
     HESContent := aWebBrowser.OleObject.Document.Body.InnerHtml;
       System.Delete( HESContent, 1, Pos('>Yeni Sorgu<', HESContent)  + Length('>Yeni Sorgu<')-1  );

     if Pos('>Sağlık Bilgileri<', HESContent ) > 0 then
     begin // Kod Geçerli Detay Bilgi
       System.Delete( HESContent, 1, Pos('>Risk Durumu<', HESContent) + Length('>Risk Durumu<')-1 );
       System.Delete( HESContent, 1, Pos('<dd>', HESContent) + Length('<dd>')-1  );
     end else
     begin // Kod Geçersiz mesajı döndürelim..
       System.Delete( HESContent, 1, Pos('<span>', HESContent) + Length('<span>')-1 );
     end;
     aList[aIdx] :=  aList[aIdx] + '|' + Copy( HESContent, 1, Pos('<', HESContent)-1 );
   end;
   Result := aList.Text;
 finally
   aList.Free;
 end;
end;



Örnek kullanım :
procedure TForm1.BitBtn1Click(Sender: TObject);
var
aListe : TStringList;
begin
aListe := TStringList.Create;
try
  aListe.Add( 'N3X9-5127-12' );
  aListe.Add( 'R7T1-7513-19' );
                               //
  aListe.Text := HesKoduByEDevlet( 'tckimlik_numaranız', 'edevlet_parolanız', aListe.Text, WebBrowser1 );
  Showmessage( aListe.Text );
finally
  aListe.Free;
end;
end;

Merhaba,

O zaman paylaşımınız ile beraber bendeki uygulamanın kaynak kod paylaşımını durdurmuş olayım.

İyi çalışmalar dilerim.
Yazılım Topluluğumuz -> Tıklayın
Kişisel Tanıtım Sitem -> Tıklayın
20 y/o, sadece öğrenmeye odaklanmış, insancık..
Cevapla
#22
@Halil Han BADEM kırıldığınızı değerlendiriyorum ama hiç gerek yok.

Paylaşıp paylaşmamak sizin tasarrufunuzdadır. Hepimiz belirli bir eğitim seviyesinde insanlarız, konu açık kaynak kod paylaşımınız ile ilgili olmadığını bildiğinize emin olmakla birlikte duygusal yaklaşmanıza lüzum yok.

Bu tip hassas konularda EXE paylaşımından ziyade açık kaynak paylaşımı önemlidir. Bunu yaptığınız sürece her yazılımcı kendi çözümünü kendi yazılımı içerisinde zaten güvenle kullanacaktır.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#23
(17-11-2020, Saat: 14:36)mrmarman Adlı Kullanıcıdan Alıntı: @Halil Han BADEM kırıldığınızı değerlendiriyorum ama hiç gerek yok.

Paylaşıp paylaşmamak sizin tasarrufunuzdadır. Hepimiz belirli bir eğitim seviyesinde insanlarız, konu açık kaynak kod paylaşımınız ile ilgili olmadığını bildiğinize emin olmakla birlikte duygusal yaklaşmanıza lüzum yok.

Bu tip hassas konularda EXE paylaşımından ziyade açık kaynak paylaşımı önemlidir. Bunu yaptığınız sürece her yazılımcı kendi çözümünü kendi yazılımı içerisinde zaten güvenle kullanacaktır.

Hocam onunla alakası yok; aynı yöntem olduğu için aynı mantığı tekrar paylaşmaya gerek yok. Kırılacak bir husus ortada yok.
Yazılım Topluluğumuz -> Tıklayın
Kişisel Tanıtım Sitem -> Tıklayın
20 y/o, sadece öğrenmeye odaklanmış, insancık..
Cevapla
#24
@Halil Han BADEM sevindim.

Uzun zamandır iş yoğunluğu nedeniyle foruma uğrayamıyordum, @SuperJumbo mesaj yollamış konu ile ilgili gelişme var mı diye onu görünce yazayım dedim.

Teşekkürler.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#25
(17-11-2020, Saat: 14:26)mrmarman Adlı Kullanıcıdan Alıntı: @Halil Han BADEM'i paylaşımları için takdir ediyor ve desteği için teşekkürlerimi sunuyorum.

Bu paylaşımda kendisi de aslında hak verecektir, E-Devlet erişim bilgilerinin kapalı EXE içerisinde sunmak çok ama çok tehlikelidir. 
E-Devlet bilgilerimiz kişiye özel olduğundan yasal olarak da bu tip paylaşımları tasvip etmiyorum. Önce bunun altını çizeyim.

Paylaşım yaptığım ve araştırdığım konu tümüyle, "Sağlık Bakanlığı HES kodu sorgulaması" üzerinden - KİŞİSEL HERHANGİ BİR VERİ GÖNDERMEKSİZİN - HES kodu sorgusu üzerine idi.

Sağlık Bakanlığı bu takibi TCKimlik no üzerinden yapabilecek iken, HES kodu gibi bir çözüme başvurmasının sebeplerinden birisi de bu olmalı diye düşünüyorum.
Bu amaç kişilerin TCKimlik bilgilerini dahi karşı tarafa vermesinin önüne geçilmesi içindir. 

Çözüme ilişkin paylaşımım ise şu şekilde: Sadece kendi projelerinizde kendinizi yazacağı kod olarak değerlendirmenizi salık veririm. Üçüncü parti kullanımlar tümüyle hukuksuzdur.  
Bu yapı forumda da sıkça paylaştığımız basit birer HTML parse işlemidir.

Not: Salt yapıyı veriyorum, kontroller ile donatılabilir.

function HesKoduByEDevlet( TCKimlikNo, EDevletParola: String; HESKoduListesi: String; aWebBrowser: TWebBrowser ): String;
 procedure WaitFor( aKey: String );
 var
   Content : String;
 begin
   Content := '';
   while (Pos( aKey, Content ) = 0) do
   begin
     try Content := aWebBrowser.OleObject.Document.Body.InnerHtml; except end;
     Sleep(100);
     Application.ProcessMessages;
   end;
 end;
Const
 URL_EDevletLogin  = 'https://giris.turkiye.gov.tr/Giris/e-Devlet-Sifresi';
 URL_HesKodu       = 'https://www.turkiye.gov.tr/saglik-bakanligi-hes-kodu-sorgulama';
var
 HESContent  : String;
 aList       : TStringList;
 aIdx        : Integer;
begin
 aList := TStringList.Create;
 aList.Text := HESKoduListesi;
 try
   // Login İşlemi //
   aWebBrowser.Navigate( URL_EDevletLogin );
   while aWebBrowser.ReadyState <> READYSTATE_COMPLETE do
   begin
     Sleep(100);
     Application.ProcessMessages;
   end;
   aWebBrowser.OleObject.Document.GetElementById('tridField').Value    := TCKimlikNo;
   aWebBrowser.OleObject.Document.GetElementById('egpField').Value     := EDevletParola;
   aWebBrowser.OleObject.Document.getElementsByName('submitButton').item(0).click;

 WaitFor( 'Kullanıcı Menüsü' );

   for aIdx := 0 to aList.Count-1 do
   begin
     // HES Kodu Giriş Sayfasına Geçiş İşlemi //
     aWebBrowser.Navigate( URL_HesKodu );
     while aWebBrowser.ReadyState <> READYSTATE_COMPLETE do
     begin
       Sleep(100);
       Application.ProcessMessages;
     end;

     // HES Kodu Sorgulama İşlemi //
     aWebBrowser.OleObject.Document.GetElementById('hes_kodu').Value     := aList[aIdx];
     aWebBrowser.OleObject.Document.forms.item(1).Submit;

   WaitFor( '>Yeni Sorgu<' );

     // HES Kodu Sorgu Sonucu Parse İşlemi //
     HESContent := aWebBrowser.OleObject.Document.Body.InnerHtml;
       System.Delete( HESContent, 1, Pos('>Yeni Sorgu<', HESContent)  + Length('>Yeni Sorgu<')-1  );

     if Pos('>Sağlık Bilgileri<', HESContent ) > 0 then
     begin // Kod Geçerli Detay Bilgi
       System.Delete( HESContent, 1, Pos('>Risk Durumu<', HESContent) + Length('>Risk Durumu<')-1 );
       System.Delete( HESContent, 1, Pos('<dd>', HESContent) + Length('<dd>')-1  );
     end else
     begin // Kod Geçersiz mesajı döndürelim..
       System.Delete( HESContent, 1, Pos('<span>', HESContent) + Length('<span>')-1 );
     end;
     aList[aIdx] :=  aList[aIdx] + '|' + Copy( HESContent, 1, Pos('<', HESContent)-1 );
   end;
   Result := aList.Text;
 finally
   aList.Free;
 end;
end;



Örnek kullanım :
procedure TForm1.BitBtn1Click(Sender: TObject);
var
aListe : TStringList;
begin
aListe := TStringList.Create;
try
  aListe.Add( 'N3X9-5127-12' );
  aListe.Add( 'R7T1-7513-19' );
                               //
  aListe.Text := HesKoduByEDevlet( 'tckimlik_numaranız', 'edevlet_parolanız', aListe.Text, WebBrowser1 );
  Showmessage( aListe.Text );
finally
  aListe.Free;
end;
end;

Birinin TC kimlik numarası üzerinden bu tür bilgileri sorgulamak sanırım hak ihlali. Karşı tarafın razı olması gerekiyor. HES kodunu da belirli süre alabilme durumu de benzer şekilde. Sizin HES kodunu biliyorsam ve bu kod hiç bir zaman sona ermeyecekse TC kimlikten farkı kalmıyor.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#26
@engerex sana sonuna kadar hak veriyorum. İşte tam bu nedenle sadece kendiniz kullanasınız diye açık kaynak kodlu olmasını savundum ve altını kalın çizgiler ile çizdim. 

* HES kodu sınırsız alsanız da adınıza kayıtlı telefon numaraları, kayıtlı taşınır taşınmaz malları, açılmış lehte veya aleyhte davaları, gelir idaresi borç / alacak vs. okul ve daha sayamayacağım kadar çok kapıya erişim vermiyor.

* Tabii gönül ister ki amacına göre sınırlı kullanılsa. Mesela ben bu kodu TV çekimleri için veya protokol işlerinde görev aldığım/alacağım süre kadarlık zaman dilimiyle sınırlı olarak alıyorum. Alması SMS ile üç parametre ile çok kolay. Copy/ Paste yapınca sadece sondaki gün sayısını yazmak ile daha da kolay.

* Başkası veya başkalarının size bu kodu gerekçeli olarak kontrol/teyit için size verdiğini varsaymak durumundayız.  Idea
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#27
(15-10-2020, Saat: 10:39)SercanTEK Adlı Kullanıcıdan Alıntı:
(12-10-2020, Saat: 20:04)sunye Adlı Kullanıcıdan Alıntı: Merhaba,

eğer reklama giriyorsa silebilirim.

heskontrol.com üzerinden bu hizmeti kullanabilirsiniz.

hocam bunun resmi kanalda geçerliliği var mı ? bakanlıkta bu şekilde doğrulama şekli yok çünkü. 500 çalışan altındakiler için excel ile edevlet üzerinden varmış yada mobil uygulama ile tek tek varmış. HES destek bana bu şekide bilgi aktardı.

Biz ulaştırma bakanlığının UETDS yolcu ve yük bildirim sistemine geliştirme yapıyoruz. HES kodu tüm yolcu taşımacılığı yapan firmalara zorunlu hale gelince bizimle de WDSL paylaştılar. Bu wdsl üzerinden sorgulama yapıyoruz. Kullanıcının TC Kimlik numarası ve HES Kodu eşleşiyorsa sorgulama çalışıyor.
Cevapla
#28
@sunye acaba  
ücret ödemesi isteniyor mu? Bizlere de açık olabiliyor mu? 

Ben şimdilik aşağıda verdiğim görsel ile (yukarıda paylaştığım kod ile çalışan) ücret ödeme şartını atlayarak işimi gören uygulama hazırladım, onunla görüyorum. 

* Opsiyonlar 
1. Direkt Win32 uygulama üzerinden sorgu yapılabilir, 
2. Herhangi bir browser ile WebServis bünyesindeki basit bir html sayfadan giriş yapılarak POST /submit ile sorgu yapılabilir, 
3. Herhangi bir browser ile GET ile direk adres satırında basit text sorgusu yapılabilir.     



xu6lvby8q7wbldezlrdf.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#29
Üstat çok iyi olmuş elinize sağlık dosyayı paylaşmayı düşünüyormusunuz ?

(06-12-2020, Saat: 01:08)mrmarman Adlı Kullanıcıdan Alıntı: @sunye  acaba  
ücret ödemesi isteniyor mu? Bizlere de açık olabiliyor mu? 

Ben şimdilik aşağıda verdiğim görsel ile (yukarıda paylaştığım kod ile çalışan) ücret ödeme şartını atlayarak işimi gören uygulama hazırladım, onunla görüyorum. 

* Opsiyonlar 
1. Direkt Win32 uygulama üzerinden sorgu yapılabilir, 
2. Herhangi bir browser ile WebServis bünyesindeki basit bir html sayfadan giriş yapılarak POST /submit ile sorgu yapılabilir, 
3. Herhangi bir browser ile GET ile direk adres satırında basit text sorgusu yapılabilir.     



xu6lvby8q7wbldezlrdf.gif
Cevapla
#30
Üstadım beğendiğine sevindim.

* Paylaşma konusunda bu başlıktaki ilk mesajım ile çelişir. Proje Kurumsal ERP projemin bir modülü olduğundan özel bilgiler var. 

Zaten bunun kaynak kodlarının tümünü paylaştım.

* HES kodu için bu okuduğunuz başlık.
* WSDL bozması WEB Servis için bu delphican linki 
* Gerisi makyaj ve daha önce başka linktlerde paylaştığım küçük kodlar...
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SOAP işlemlerinde TMom yapısı hakkında adelphiforumz 9 592 31-12-2020, Saat: 20:34
Son Yorum: sabanakman
  Tarım Bakanlığı Bitki Koruma Ürünleri Bildirimi Hakkında bünyamin68 7 394 28-12-2020, Saat: 23:46
Son Yorum: hi_selamlar
  Merkez Bankası Döviz Kurları Hakkında adelphiforumz 12 3.900 26-11-2020, Saat: 12:26
Son Yorum: bydelphi
  Com Dll hakkında trpersia 4 470 19-11-2020, Saat: 02:54
Son Yorum: trpersia
  TButtonGroup Hakkında bkantur 7 499 06-11-2020, Saat: 06:52
Son Yorum: bajerli



Konuyu Okuyanlar: 1 Ziyaretçi