(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.
@
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.
(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.
@
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.
(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.
@
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.

(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.
@
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.

Ü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.

Ü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...