Delphi Can

Orjinalini görmek için tıklayınız: IDHttp error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure hata
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Arkadaşlar merhaba, 
https'li bir sayfaya ait kaynak kodları parse etmek için almam gerekiyor bunun için IdHTTP1.Get(URL) kullanıyorum 
https'li sayfalarda 
error:14094410:SSL routines:SSL3_READ_BYTES : sslv3 alert handshake failure şeklinde hata veriyor,

webde biraz inceledim ancak tam çözümü konusunda yeterli kaynak bulamadım,

https'li bir sayfanın html kodlarını farklı bir yöntemle alma imkanı varmı veya bu hatanın çözümü konusunda yardımcı olabilirmisiniz.

Teşekkürler
http://docwiki.embarcadero.com/Libraries...HTTPClient
kullanabilirsiniz yükü işletim sistemine yıkmış olursunuz.
(29-08-2018, Saat: 09:37)masteryoda Adlı Kullanıcıdan Alıntı: [ -> ]http://docwiki.embarcadero.com/Libraries...HTTPClient
kullanabilirsiniz yükü işletim sistemine yıkmış olursunuz.

Yardımınız için teşekkür ederim. Belirttiğiniz komponent ile html olarak alabildim.


Memo1.Text :=   NetHTTPRequest1.Execute().ContentAsString();

(29-08-2018, Saat: 09:37)masteryoda Adlı Kullanıcıdan Alıntı: [ -> ]http://docwiki.embarcadero.com/Libraries...HTTPClient
kullanabilirsiniz yükü işletim sistemine yıkmış olursunuz.

üstadım yalnız şöyle bir sorun var normal https'li sayfalarda sayfa kaynağını eksik getiriyor.
manuel kontrol ettiğimde 1800 satır gelirken kodla 500 satır geliyor sebebi ne olabilir?
get metodu ile almayı deneyebilir misiniz
http://docwiki.embarcadero.com/Libraries...Client.Get
(29-08-2018, Saat: 12:49)masteryoda Adlı Kullanıcıdan Alıntı: [ -> ]get metodu ile almayı deneyebilir misiniz
http://docwiki.embarcadero.com/Libraries...Client.Get

GET metodu ile almıştım zaten
(29-08-2018, Saat: 11:02)burakb44 Adlı Kullanıcıdan Alıntı: [ -> ]
(29-08-2018, Saat: 09:37)masteryoda Adlı Kullanıcıdan Alıntı: [ -> ]http://docwiki.embarcadero.com/Libraries...HTTPClient
kullanabilirsiniz yükü işletim sistemine yıkmış olursunuz.

Yardımınız için teşekkür ederim. Belirttiğiniz komponent ile html olarak alabildim.


Memo1.Text :=   NetHTTPRequest1.Execute().ContentAsString();

(29-08-2018, Saat: 09:37)masteryoda Adlı Kullanıcıdan Alıntı: [ -> ]http://docwiki.embarcadero.com/Libraries...HTTPClient
kullanabilirsiniz yükü işletim sistemine yıkmış olursunuz.

üstadım yalnız şöyle bir sorun var normal https'li sayfalarda sayfa kaynağını eksik getiriyor.
manuel kontrol ettiğimde 1800 satır gelirken kodla 500 satır geliyor sebebi ne olabilir?
Memo ile kaynaklı sorun olabilir WordWrap durumu satırları az gösteriyor olabilir. 

NetHttpClient1.Get(url).ContentAsString();

Şeklinde kaynak kodlarını çekebilirsiniz. 

İsterseniz kaynak kodlarını çektiğiniz siteyi atın daha iyi yardımcı olalım.
(29-08-2018, Saat: 12:53)Halil Han Badem Adlı Kullanıcıdan Alıntı: [ -> ]
(29-08-2018, Saat: 11:02)burakb44 Adlı Kullanıcıdan Alıntı: [ -> ]Yardımınız için teşekkür ederim. Belirttiğiniz komponent ile html olarak alabildim.


Memo1.Text :=   NetHTTPRequest1.Execute().ContentAsString();


üstadım yalnız şöyle bir sorun var normal https'li sayfalarda sayfa kaynağını eksik getiriyor.
manuel kontrol ettiğimde 1800 satır gelirken kodla 500 satır geliyor sebebi ne olabilir?
Memo ile kaynaklı sorun olabilir WordWrap durumu satırları az gösteriyor olabilir. 

NetHttpClient1.Get(url).ContentAsString();

Şeklinde kaynak kodlarını çekebilirsiniz. 

İsterseniz kaynak kodlarını çektiğiniz siteyi atın daha iyi yardımcı olalım.


  https://mebbis.meb.gov.tr 


  Adres := '';
  Adres := AktifURLGetir('IExplore'); 

  Memo1.Lines.Clear;
  URL         := Adres ;

  NetHTTPRequest1.URL := '';
  NetHTTPRequest1.URL := URL;
//  Memo1.Text := NetHTTPRequest1.Execute().ContentAsString();
  Memo1.Text := NetHttpClient1.Get(url).ContentAsString();
idHttp bileşeni için IdSSLIOHandlerSocketOpenSSL bileşeni ekleyip SSLv3 için bu bileşene ayar yapmak gerekebilir. Buraya  da göz atılabilir.

(05-07-2018, Saat: 10:40)sabanakman Adlı Kullanıcıdan Alıntı: [ -> ]...

Indy bileşenlerine gelince, onunla da alakalı bazı ayarlar gerekebiliyor bazı durumlarda.
(07-06-2018, Saat: 15:01)SimaWB Adlı Kullanıcıdan Alıntı: [ -> ]Indy bileşenleri (yukarıdaki koddan da anlaşılacağı üzere) SSL gereken bağlantılar için OpenSSL'i kullanıyor.
+"TIdSSLIOHandlerSocketOpenSSL" bileşeni ekleyin,
-SSLOptions.Method = sslvTLSv1_2 (TLS1.2 için)
-SSLOptions.SSLVersions = [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2] (bağlanılacak sunucunun kullanması muhtemel versiyonlar)

+"TIdHTTP" bileşeninin,
-IOHandler özelliğine yukarıdaki ayarlara sahip ("TIdSSLIOHandlerSocketOpenSSL" tipli) bileşeni ayarlayın,
-Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'; olarak değiştirin, (bazı siteler güncel olmayan tarayıcılarda açılmamak üzere ayarlanmış olabiliyor)
gibi ekstra ayarlar yapmak gerekebilir. Basit bir Request.UserAgent ayarı yapmakla çözüme kavuştuğum bazı durumlar olduğu için bu noktayı ihmal etmemek gerekebiliyor. İyi çalışmalar.
(29-08-2018, Saat: 11:02)burakb44 Adlı Kullanıcıdan Alıntı: [ -> ]üstadım yalnız şöyle bir sorun var normal https'li sayfalarda sayfa kaynağını eksik getiriyor.
manuel kontrol ettiğimde 1800 satır gelirken kodla 500 satır geliyor sebebi ne olabilir?

Merhaba,
Browser'dan alınan HTML kaynak kodu ile Delphi ile alınan kaynak kod arasında bir fark yok.
Farklılık yalnızca anlık oluşan bazı hash değerlerinden kaynaklanıyor.

html1.jpg

Analiz nasıl yapıldı?
Önce Browser'dan HTML kaynak kodunu aldım ve bir HTML formatter aracı ile kodu biçimlendirdim. Kod 524 satır. 
Daha sonra Delphi ile REST bileşenleri ile HTML kaynak kodunu alarak HTML formatter aracı ile biçimlendirdim. 519 satır. 
Bir kaç denememde her iki yöntemdeki satır sayısı anlık olarak farklılık gösterdi. 
Bunu tespit etmek için bir text compare aracı ile her iki kaynak kodunun farklılıklarını gözlemledim. 
Farklı satırların yalnızca session hash değerleri ve bazı objelerin with ve height değerlerinde olduğunu gördüm. 
Özetle; Delphi ile aldığınız HTML kod ile doğrudan aldığınız HTML kod arasında, sizin almak istediğiniz veriyi etkileyecek bir farklılık yok.
(29-08-2018, Saat: 18:02)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ]
(29-08-2018, Saat: 11:02)burakb44 Adlı Kullanıcıdan Alıntı: [ -> ]üstadım yalnız şöyle bir sorun var normal https'li sayfalarda sayfa kaynağını eksik getiriyor.
manuel kontrol ettiğimde 1800 satır gelirken kodla 500 satır geliyor sebebi ne olabilir?

Merhaba,
Browser'dan alınan HTML kaynak kodu ile Delphi ile alınan kaynak kod arasında bir fark yok.
Farklılık yalnızca anlık oluşan bazı hash değerlerinden kaynaklanıyor.

html1.jpg

Analiz nasıl yapıldı?
Önce Browser'dan HTML kaynak kodunu aldım ve bir HTML formatter aracı ile kodu biçimlendirdim. Kod 524 satır. 
Daha sonra Delphi ile REST bileşenleri ile HTML kaynak kodunu alarak HTML formatter aracı ile biçimlendirdim. 519 satır. 
Bir kaç denememde her iki yöntemdeki satır sayısı anlık olarak farklılık gösterdi. 
Bunu tespit etmek için bir text compare aracı ile her iki kaynak kodunun farklılıklarını gözlemledim. 
Farklı satırların yalnızca session hash değerleri ve bazı objelerin with ve height değerlerinde olduğunu gördüm. 
Özetle; Delphi ile aldığınız HTML kod ile doğrudan aldığınız HTML kod arasında, sizin almak istediğiniz veriyi etkileyecek bir farklılık yok.

Fesih hocam mebbis'e login olduktan sonra ekran kullanıcının ad soyad bilgileri gibi kişiye özel bilgileri geliyor, 
login sonrası kod ile kaynağı aldığım zaman kullanıcıya ait hiç bir bilgi gelmiyor, ama manuel alınan kaynakta bu bilgiler geliyor. Siz nasıl ve hangi kodla denediniz bilmiyorum ama bende problem halen devam etmekte

(29-08-2018, Saat: 17:13)sabanakman Adlı Kullanıcıdan Alıntı: [ -> ]idHttp bileşeni için IdSSLIOHandlerSocketOpenSSL bileşeni ekleyip SSLv3 için bu bileşene ayar yapmak gerekebilir. Buraya  da göz atılabilir.

(05-07-2018, Saat: 10:40)sabanakman Adlı Kullanıcıdan Alıntı: [ -> ]...

Indy bileşenlerine gelince, onunla da alakalı bazı ayarlar gerekebiliyor bazı durumlarda.
+"TIdSSLIOHandlerSocketOpenSSL" bileşeni ekleyin,
-SSLOptions.Method = sslvTLSv1_2 (TLS1.2 için)
-SSLOptions.SSLVersions = [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2] (bağlanılacak sunucunun kullanması muhtemel versiyonlar)

+"TIdHTTP" bileşeninin,
-IOHandler özelliğine yukarıdaki ayarlara sahip ("TIdSSLIOHandlerSocketOpenSSL" tipli) bileşeni ayarlayın,
-Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'; olarak değiştirin, (bazı siteler güncel olmayan tarayıcılarda açılmamak üzere ayarlanmış olabiliyor)
gibi ekstra ayarlar yapmak gerekebilir. Basit bir Request.UserAgent ayarı yapmakla çözüme kavuştuğum bazı durumlar olduğu için bu noktayı ihmal etmemek gerekebiliyor. İyi çalışmalar.

Hocam belirttiğin ayarlar ile denedim malesef olmadı yine Sad
Sayfalar: 1 2