Haziran 2007
Giriş
Web hizmetleriyle etkileşime giren uygulamalar geliştirmek benzersiz bir dizi sorun oluşturur. Sık karşılaşılan bir hayal kırıklığı kaynağı, tam olarak sunucuya gönderilen mesajı veya verilen yanıtı bilmektir. Takip edilmesi en zor hatalardan bazıları, sunucuyla ilgili olarak gönderdiğimiz ileti ile gerçekte olan biteni birbirinden ayırt edemememizden kaynaklanır.
Bu makalede, kablodaki verilerin daha görünür ve yararlı olmasını sağlayabilecek çeşitli araçlar açıklanmaktadır. "Paket nişancıları" olarak bilinen bu araçlar, ağ arayüzünüzde hareket eden tüm ağ paketlerini yakalar. Bu paketlerin içeriğini ve bunların gönderilme ve alınma sırasını incelemek faydalı bir hata ayıklama tekniği olabilir.
Örnek: Herkese açık feed alma
Bir hayır kurumu yolculuğu için bisiklet ekibi oluşturuyorum ve bilgi oturumları, ekip bağışları ve eğitim gezileri gibi etkinlikler için bir takvim oluşturdum. Ekip üyelerinin ve diğer sürücülerin takvimi görüntüleyebilmesi ve etkinliklere katılabilmesi için bu takvimi herkese açık hale getirdim. Ayrıca, yaklaşan etkinlikleri içeren bir bülten göndermek istiyorum. Bu nedenle, bilgileri Google Takvim web sitesinden kopyalamak yerine bu takvimi sorgulamak ve etkinlikleri almak için Google Calendar data API'yi kullanabilirim.
Google Calendar API dokümanlarında, RESTful Google Data API'nın takvimimle programatik olarak etkileşimde bulunmak için nasıl kullanılacağıyla ilgili bilgiler var. (Editörün Notu: 3. sürümden itibaren Google Calendar API, Google Veri biçimini artık kullanmayacaktır.) İlk olarak takvim ayarları sayfasındaki düğmesini tıklayarak takvimin etkinlik feed'i URL'sini alın:
http://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic
Google Takvim dokümanlarını referans olarak kullanarak, etkinlik feed'i URL'sinin PUBLIC_FEED_URL
olduğu bu tür takvim etkinliklerini alıp görüntüleyebilirim.
CalendarService myService = new CalendarService("exampleCo-fiddlerExample-1"); final String PUBLIC_FEED_URL = "http://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic"; URL feedUrl = new URL(PUBLIC_FEED_URL); CalendarEventFeed resultFeed = myService.getFeed(feedUrl, CalendarEventFeed.class); System.out.println("All events on your calendar:"); for (int i = 0; i < resultFeed.getEntries().size(); i++) { CalendarEventEntry entry = resultFeed.getEntries().get(i); System.out.println("\t" + entry.getTitle().getPlainText()); } System.out.println();
Bu, takvimimde etkinliklerin temel bir listesini oluşturur:
All events on your calendar: MS150 Training ride Meeting with Nicole MS150 Information session
Yukarıdaki kod snippet'i takvim etkinliklerinin başlıklarını görüntüler. Peki ya sunucudan aldığımız geri kalan veriler? Java istemci kitaplığı bir feed'in veya girişin XML olarak çıkışını basitleştirmez ve yapmış olsa bile XML her şeyi kapsamaz. Peki, isteğe eşlik eden HTTP üstbilgileri hakkında ne yapabilirsiniz? Sorgu proxy üzerinden mi yapıldı yoksa yönlendirildi mi? Daha karmaşık işlemlerde, özellikle bir şeyler ters gittiğinde ve hata yaptığımızda bu sorular giderek daha önemli hale gelir. Paket yoklama yazılımı, ağ trafiğini açığa çıkararak bu sorulara yanıt verebilir.
hedef EBM
tcpdump, Unix benzeri platformlarda çalışan bir komut satırı aracıdır. Ayrıca WinDump adlı bir Windows bağlantı noktası da vardır. Çoğu paket sniffer'ı gibi tcpdump de ağ kartınızı süper kullanıcı ayrıcalıkları gerektiren gizli moda yerleştirir. tcpdump'yi kullanmak için dinlenecek ağ arayüzünü belirtmeniz yeterlidir. Ağ trafiği stdout'a gönderilir:
sudo tcpdump -i eth0
Bu komutu çalıştırırsanız her türlü ağ trafiğiyle karşılaşırsınız. Bunların bazıları etkinliği tanımaz. Çıkışı bir dosyaya yönlendirip daha sonra bunu grep olarak değiştirebilirsiniz ancak bu durum çok büyük dosyalara yol açabilir. Çoğu paket yakalama yazılımında yerleşik bazı filtreleme mekanizmaları vardır, böylece yalnızca ihtiyacınız olanları yakalayabilirsiniz.
tcpdump, ağ trafiğinin çeşitli özelliklerine dayalı filtrelemeyi destekler. Örneğin, sunucunuzun ana makine adını aşağıdaki ifadeye ekleyerek tcpdump'e yalnızca sunucunuzdaki 80 numaralı bağlantı noktasından gelen (HTTP mesajları) trafiği yakalamasını söyleyebilirsiniz:
dst or src host <hostname> and port 80
tcpdump, filtre ifadesiyle eşleşen her paket için bir zaman damgası, paketin kaynağı ve hedefi ve çeşitli TCP işaretlerini gösterir. Bu bilgiler, paketlerin gönderilme ve alınma sırasını gösterdiği için değerli olabilir.
Paketlerin içindekileri görmek de genellikle yararlıdır. "-A" işareti, tcpdump'e her bir paketi ASCII olarak yazdırmasını söyler ve HTTP üstbilgileri ile ileti gövdesini açığa çıkarır. "-s" işareti, görüntülenecek bayt sayısını belirtmek için kullanılır (burada "-s 0", ileti gövdesinin hiç kısaltılmamasıdır).
Tümünü bir araya getirip şu komutu alırız:
sudo tcpdump -A -s 0 -i eth0 dst or src host <hostname> and port 80
Bu komutu çalıştırır ve ardından yukarıdaki kısa .Java örneğini çalıştırırsanız bu işlemle ilgili tüm ağ iletişimlerini görürsünüz. Trafik arasında HTTP GET
isteğini görürsünüz:
22:22:30.870771 IP dellalicious.mshome.net.4520 > po-in-f99.google.com.80: P 1:360(359) ack 1 win 65535 E.....@....\...eH..c...P.=.....zP......GET /calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic HTTP/1.1 User-Agent: exampleCo-fiddlerExample-1 GCalendar-Java/1.0.6 GData-Java/1.0.10(gzip) Accept-Encoding: gzip Cache-Control: no-cache Pragma: no-cache Host: www.google.com Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
Ayrıca, Google Veri feed'ini içeren 200 OK
yanıt mesajını da görürsünüz. Feed'in dört paket halinde ayrıldığına dikkat edin:
22:22:31.148789 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: . 1:1431(1430) ack 360 win 6432 E...1 ..2.I.H..c...e.P.....z.=.:P..M...HTTP/1.1 200 OK Content-Type: application/atom+xml; charset=UTF-8 Cache-Control: max-age=0, must-revalidate, private Last-Modified: Mon, 11 Jun 2007 15:11:40 GMT Transfer-Encoding: chunked Date: Sun, 24 Jun 2007 02:22:10 GMT Server: GFE/1.3 13da <?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gCal='http://sc hemas.google.com/gCal/2005' xmlns:gd='http://schemas.google.com/g/2005'><id>http ://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.goo gle.com/public/basic</id><updated>2007-06-11T15:11:40.000Z</updated><category sc heme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2 005#event'></category><title type='text'>MS150 Training Schedule</title><subtitl e type='text'>This calendar is public</subtitle><link rel='http://schemas.google .com/g/2005#feed' type='application/atom+xml' href='http://www.google.com/calend ar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic'></ link><link rel='self' type='application/atom+xml' href='http://www.google.com/ca lendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic ?max-results=25'></link><author><name>Lane LiaBraaten</name><email>api.lliabraa@ gmail.com</email></author><generator version='1.0' uri='http://www.google.com/ca lendar'>Google Calendar</generator><openSearch:totalRe 22:22:31.151501 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: . 1431:2861(1430) ack 360 win 6432 E...1!..2.I.H..c...e.P.......=.:P.. 2...sults>3</openSearch:totalResults><openSe arch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch :itemsPerPage><gd:where valueString=''></gd:where><gCal:timezone value='America/ Los_Angeles'></gCal:timezone><entry><id>http://www.google.com/calendar/feeds/24v j3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic/dgt40022cui2k3j 740hnj46744</id><published>2007-06-11T15:11:05.000Z</published><updated>2007-06- 11T15:11:05.000Z</updated><category scheme='http://schemas.google.com/g/2005#kin d' term='http://schemas.google.com/g/2005#event'></category><title type='text'>M S150 Training ride</title><summary type='html'>When: Sat Jun 9, 2007 7am to 10am &nbsp; PDT<br> <br>Event Status: confirmed</summary><conte nt type='text'>When: Sat Jun 9, 2007 7am to 10am&nbsp; PDT<br> <b r>Event Status: confirmed</content><link rel='alternate' type='text/html' href='http://www.google.com/calendar/event?eid=ZGd0NDAwMjJjdWkyazNqNzQwaG5qNDY3 NDQgMjR2ajNtNXBsMTI1YmgyaWpiYm5laDk1M3NAZw' title='alternate'></link><link rel=' self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/24v j3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic/dgt40022cui2k3j 740hnj46744'></link><author><name>MS150 Training Schedule</name></author><gCal:s endEventNotifications value='false'></gCal:sendEventNotifications></entry><entry ><id>http://www.google.com/cal 22:22:31.153097 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: . 2861:4291(1430) ack 360 win 6432 E...1#..2.I.H..c...e.P.......=.:P.. ....endar/feeds/24vj3m5pl125bh2ijbbneh953s%4 0group.calendar.google.com/public/basic/51d8kh4s3bplqnbf1lp6p0kjp8</id><publishe d>2007-06-11T15:08:23.000Z</published><updated>2007-06-11T15:10:39.000Z</updated ><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.g oogle.com/g/2005#event'></category><title type='text'>Meeting with Nicole</title ><summary type='html'>When: Mon Jun 4, 2007 10am to 11am&nbsp; PDT<br> <br>Where: Conference Room B <br>Event Status: confirmed</summ ary><content type='text'>When: Mon Jun 4, 2007 10am to 11am&nbsp; PDT<br& gt; <br>Where: Conference Room B <br>Event Status: confirmed <br>Event Description: Discuss building cycling team for MS150</content><l ink rel='alternate' type='text/html' href='http://www.google.com/calendar/event? eid=NTFkOGtoNHMzYnBscW5iZjFscDZwMGtqcDggMjR2ajNtNXBsMTI1YmgyaWpiYm5laDk1M3NAZw' title='alternate'></link><link rel='self' type='application/atom+xml' href='http ://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.goo gle.com/public/basic/51d8kh4s3bplqnbf1lp6p0kjp8'></link><author><name>MS150 Trai ning Schedule</name></author><gCal:sendEventNotifications value='false'></gCal:s endEventNotifications></entry><entry><id>http://www.google.com/calendar/feeds/24 vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic/va41amq3r08dhh kpm3lc1abs2o</id><published>20 22:22:31.190244 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: P 4291:5346(1055) ack 360 win 6432 E..G1$..2.K.H..c...e.P.....<.=.:P.. ....07-06-11T15:10:08.000Z</published><updat ed>2007-06-11T15:10:08.000Z</updated><category scheme='http://schemas.google.com /g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title ty pe='text'>MS150 Information session</title><summary type='html'>When: Wed Jun 6, 2007 4pm to Wed Jun 6, 2007 5pm&nbsp; PDT<br> <br>Event Statu s: confirmed</summary><content type='text'>When: Wed Jun 6, 2007 4pm to Wed Jun 6, 2007 5pm&nbsp; PDT<br> <br>Event Status: confirmed< /content><link rel='alternate' type='text/html' href='http://www.google.com/cale ndar/event?eid=dmE0MWFtcTNyMDhkaGhrcG0zbGMxYWJzMm8gMjR2ajNtNXBsMTI1YmgyaWpiYm5la Dk1M3NAZw' title='alternate'></link><link rel='self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.c alendar.google.com/public/basic/va41amq3r08dhhkpm3lc1abs2o'></link><author><name >MS150 Training Schedule</name></author><gCal:sendEventNotifications value='fals e'></gCal:sendEventNotifications></entry></feed>
Bu çıkışta tüm HTTP üstbilgileri ve içeriklerinin yanı sıra şifrelenmiş kripto TCP işaretleri bulunur. Tüm veriler burada mevcuttur ancak okunması ve anlaşılması zordur. Bu verileri görüntülemeyi kolaylaştıran çeşitli grafik araçlar mevcuttur.
WireShark (eski adıyla Ethereal)
![Wireshark'ın ekran görüntüsü](https://developers-dot-devsite-v2-prod.appspot.com/static/gdata/articles/support/otw/wireshark2.png?authuser=7&hl=tr)
WireShark, ağ trafiğini farklı şekillerde gösterir.
WireShark, libcpcap ile oluşturulan ve tcpdump'in temel aldığı aynı kitaplık olan ve Linux, Mac OS X ve Windows'da kullanılabilen bir grafik aracıdır. WireShark'ın GUI'sı, paket yakalama verilerini yorumlamak ve bu verilerle etkileşim kurmak için birçok yeni yol sağlar. Örneğin paketler ağ arayüzünden yakalandığı için, kullandıkları protokole bağlı olarak farklı renklerde gösterilir. Trafiği zaman damgası, kaynak, hedef ve protokole göre de sıralayabilirsiniz.
Paketler listesinde bir satır seçerseniz Wireshark, okunabilir bir ağaçtaki paket başlıklarında IP, TCP ve protokole özel diğer bilgileri görüntüler. Veriler, ekranın alt kısmındaki HEX ve ASCII'de de gösterilir.
WireShark'ın görsel yapısı, ağ trafiğinin daha kolay anlaşılmasını sağlasa da çoğu durumda ağ trafiğini filtrelemeyi tercih edersiniz. WireShark, yüzlerce protokol için destek dahil olmak üzere güçlü filtreleme özelliklerine sahiptir.
İPUCU: Kullanılabilir protokolleri görüntülemek ve karmaşık filtreler oluşturmak için WireShark penceresinin üst tarafına yakın bir yerdeki düğmesini tıklayın.
Yukarıdaki hedef tcpdump örneğinde kullanılan filtreyi yeniden oluşturmak için WireShark filtre kutusuna şu ifadeyi ekleyebilirsiniz:
ip.addr==<your IP address> && tcp.port==80
Veya WireShark'ın HTTP bilgisinden yararlanın:
ip.addr==<your IP address> && http
Bu şekilde yakalamanızın sonuçları yalnızca Google Takvim sunucusuyla bu etkileşime dahil olan paketlere göre filtrelenir. İçeriği görmek ve işlemi oluşturmak için her bir paketi tıklayabilirsiniz.
İPUCU: İsteklerden ve yanıtları tek bir pencerede sırayla görüntülemek için paketlerden birini sağ tıklayıp " TCP Akışını İzle"yi seçebilirsiniz.
WireShark, yakalama bilgilerinizi kaydetmek için çeşitli yollar sunar. Paketlerin birini, bir kısmını veya tamamını kaydedebilirsiniz. Bir TCP akışı görüntülüyorsanız sadece ilgili paketleri kaydetmek için "Farklı Kaydet" düğmesini tıklayabilirsiniz. Çıkışı bir tcpdump yakalamasından içe aktarabilir ve WireShark'da görüntüleyebilirsiniz.
Sorun: SSL ve şifreleme
Paket yakalama araçlarının yaygın bir eksikliği, SSL bağlantısı üzerinden şifrelenmiş verilerin görüntülenememesidir. Yukarıdaki örnek herkese açık bir feed'e eriştiği için SSL gerekmez. Ancak, örnek özel bir feed'e eriştiyse istemcinin SSL bağlantısı gerektiren Google kimlik doğrulama hizmetiyle kimlik doğrulaması yapması gerekir.
Aşağıdaki snippet, önceki örnekle benzerdir ancak burada CalendarService
, kullanıcının takvim meta feed'ini ister. Bu, kimlik doğrulama gerektiren özel bir feed'dir. Kimlik doğrulaması için setUserCredentials
yöntemini çağırmanız yeterlidir. Bu yöntem, ClientLogin hizmetine bir HTTPS isteği tetikler ve kimlik doğrulama jetonunu yanıttan çıkarır. Ardından CalendarService
nesnesi, sonraki tüm isteklerde kimlik doğrulama jetonunu içerir.
CalendarService myService = new CalendarService("exampleCo-fiddlerSslExample-1"); myService.setUserCredentials(username, userPassword); final String METAFEED_URL = "http://www.google.com/calendar/feeds/default"; URL feedUrl = new URL(METAFEED_URL); CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class); System.out.println("Your calendars:"); for (int i = 0; i < resultFeed.getEntries().size(); i++) { CalendarEntry entry = resultFeed.getEntries().get(i); System.out.println("\t" + entry.getTitle().getPlainText()); } System.out.println();
Özel bir Google Data API feed'inin kimliğini doğrulamak ve ona erişmek için gereken ağ trafiğini göz önünde bulundurun:
- Kullanıcı kimlik bilgilerini ClientLogin hizmetine gönderin
- İleti gövdesinde aşağıdaki parametrelerle https://www.google.com/accounts/ClientLogin adresine bir HTTP
POST
gönderin:- E-posta: Kullanıcının e-posta adresi.
- Passwd: Kullanıcının şifresi.
- kaynak - istemci uygulamanızı tanımlar. CompanyName-applicationName-versionID biçiminde olmalıdır. Örnekler, ExampleCo-FiddlerSSLExample-1 adını kullanır.
- hizmet - Google Takvim hizmeti adı "cl"dir.
- İleti gövdesinde aşağıdaki parametrelerle https://www.google.com/accounts/ClientLogin adresine bir HTTP
- Yetkilendirme jetonunu alma
- Kimlik doğrulama isteği başarısız olursa HTTP 403 Yasak durum kodu alırsınız.
- İstek başarılı olursa hizmetten gelen yanıt, bir HTTP 200 OK durum kodu ve yanıtın gövdesinde üç uzun alfanümerik kod olur:
SID
,LSID
veAuth
.Auth
değeri, yetkilendirme jetonudur.
- Gizli takvim meta akışı isteme
- Aşağıdaki üstbilgiyi kullanarak http://www.google.com/calendar/feeds/default adresine bir HTTP
GET
gönderin:
Authorization: GoogleLogin auth=<yourAuthToken>
- Aşağıdaki üstbilgiyi kullanarak http://www.google.com/calendar/feeds/default adresine bir HTTP
Bu snippet'i çalıştırmayı ve WireShark'daki ağ trafiğini görüntülemeyi deneyin (filtre olarak "http || ssl"yi kullanın). İşleme ait SSL ve TLS paketlerini görürsünüz. Ancak ClientLogin isteği ve yanıt paketleri, "Uygulama Verileri" paketlerinde şifrelenir. Endişelenmeyin, şimdi bu şifrelenmiş bilgileri gerçekten açığa çıkaracak bir araca göz atacağız.
Fiddler
Fiddler, başka bir grafik paket koku alma aracıdır, ancak şu ana kadar sunulan araçlardan çok farklı davranır. Fiddler, uygulamanız ile etkileşimde bulunduğunuz uzak hizmetler arasında bir proxy görevi görür ve etkili bir şekilde ortadaki adam haline gelir. Fiddler, hem uygulamanızla hem de uzak web hizmetiyle SSL bağlantısı kurar. Uç noktalardan gelen trafiğin şifresini çözer, şifrelenmemiş metni yakalar ve göndermeden önce trafiği yeniden şifreler. Maalesef Fiddler yalnızca Windows ve Mac kullanıcılarınız için kullanılabilir.
Not: SSL desteği için Fiddler sürüm 2 ve .NET Framework sürüm 2.0 gerekir.
Fiddler'daki ağ trafiğini görüntüleme işlemi çoğunlukla Oturum Denetleyicisi sekmesi aracılığıyla yapılır. Google Veri API'leriyle ilgili hataları ayıklamak için en faydalı alt sekmeler şunlardır:
- Üstbilgiler: HTTP başlıklarını daraltılabilir ağaç biçiminde gösterir.
- Auth - Kimlik doğrulama üstbilgilerini gösterir.
- Ham: Ağ paketlerinin içeriğini ASCII metin olarak gösterir
İPUCU: Yakalamayı açmak ve kapatmak için Fiddler penceresinin sol alt köşesindeki simgesini tıklayın.
Fiddler, ağ bağlantılarını yapılandırarak Fiddler'ı proxy olarak kullanacak şekilde .NET Framework'ü kullanır. Bu, Internet Explorer veya .NET koduyla yaptığınız tüm bağlantıların varsayılan olarak Fiddler'da görüneceği anlamına gelir. Ancak, Java'nın HTTP proxy'lerini ayarlamak için farklı bir yöntemi olduğundan yukarıdaki Java örneğinden gelen trafik görünmez.
Java'da, HTTP proxy'yi sistem özelliklerini kullanarak ayarlayabilirsiniz. Fiddler, 8888 numaralı bağlantı noktasında çalışır. Bu nedenle yerel bir kurulum için, Fiddler'ı HTTP ve HTTPS için bir proxy olarak aşağıdaki satırları ekleyerek yapabilirsiniz:
System.setProperty("http.proxyHost", "localhost"); System.setProperty("http.proxyPort", "8888"); System.setProperty("https.proxyHost", "localhost"); System.setProperty("https.proxyPort", "8888");
Örneği aşağıdaki satırlarla çalıştırırsanız Java güvenlik paketinden gerçekten kötü bir yığın izleme alırsınız:
[java] Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
![Fiddler'ın ekran görüntüsü](https://developers-dot-devsite-v2-prod.appspot.com/static/gdata/articles/support/otw/fiddler.png?authuser=7&hl=tr)
Fiddler, SSL trafiğinin şifresini çözebilir ve SSL trafiğini görüntüleyebilir.
Bu hata, SSL bağlantısında sunucudan döndürülen sertifika doğrulanamadığında ortaya çıkar. Bu örnekte, kötü sertifika, ortadaki adam rolünde olan Fiddler'dan gelmektedir. Fiddler çalışırken sertifikaları oluşturur ve Fiddler güvenilir bir sağlayıcı olmadığından, bu sertifikalar SSL bağlantısının kurulmasında başarısız olur.
Not: Fiddler çalışırken, Internet Explorer'da oluşturduğunuz herhangi bir SSL bağlantısı, güvenlik sertifikasına rağmen devam etmek isteyip istemediğinizi soran bir "Güvenlik Uyarısı"nı tetikler. Fiddler'ın oluşturduğu sertifikayı görmek için "Sertifikayı Görüntüle" seçeneğini tıklayabilirsiniz.
Peki bu güvenlik istisnasına nasıl çözüm bulabilirsiniz? Temel olarak Java'nın güvenlik çerçevesini tüm sertifikalara güvenecek şekilde yeniden yapılandırmanız gerekir. Neyse ki burada tekerleği yeniden icat etmeniz gerekmez. Francis Labrie'nin çözümünü inceleyerek yukarıdaki örneğe SSLUtilities.trustAllHttpsCertificates()
ekleyin.
Java'yı Fiddler'ı proxy olarak kullanacak şekilde yapılandırdıktan ve varsayılan sertifika doğrulamasını devre dışı bıraktıktan sonra, örneği çalıştırabilir ve kablo üzerinden düz metin olarak gönderilen tüm trafiği görebilirsiniz. Şifremi çalma!
Bu kimlik doğrulama işleminin SSL trafiğine ilişkin yalnızca küçük bir örnek olduğunu unutmayın. Bazı web uygulamaları yalnızca SSL bağlantılarını kullandığından, HTTP trafiğindeki hataları ayıklama, verilerin şifresini çözmenin bir yolu olmadan söz konusu değildir.
Sonuç
Linux, Mac OS X ve Windows'da kullanılabilen tcpdump, aradığınız şeyi bildiğinizde ve hızlı bir çekime ihtiyacınız olduğunda mükemmel bir araçtır. Ancak, ağ trafiğini anlaşılması daha kolay biçimlerde sunan bazı grafik araçları vardır. tcpdump, burada ele alınanlardan çok daha fazla seçeneğe ve filtreleme özelliğine sahiptir. Hedef EBM işlevinin tam açıklaması için "man tcpdump" yazın veya çevrimiçi tcpdump man sayfasını ziyaret edin.
WireShark, Linux, Mac OS X ve Windows'da da kullanılabilir. Yüzlerce protokol için yerleşik destek, WireShark'ı yalnızca HTTP hata ayıklaması değil, birçok uygulama için yararlı bir araç haline getirir. Bu giriş, WireShark'ın birçok becerisini neredeyse hiç keşfedemiyor. Daha fazla bilgi için "man Wishark" yazın veya WireShark web sitesini ziyaret edin.
Fiddler'ın birçok muhteşem özelliği de vardır ancak onu farklı kılan şey, SSL trafiğinin şifresini çözmesidir. Daha fazla bilgi için Fiddler2 web sitesini ziyaret edin.
Bu paket algılama uygulamaları, araç kemerinizde kullanabileceğiniz mükemmel araçlardır ve gözlemci okuyucuların hepsi ücretsiz olduğunu fark eder! Bir sonraki sefer Google API'leriyle çalışırken ve şüpheli bir şey gördüğünüzde bu ağ analizcilerinden birini çıkarıp kablonun içeriğini daha yakından inceleyin. Soruyu bulamazsanız istediğiniz zaman tartışma grubumuzda soru yayınlayabilirsiniz. Alakalı ağ mesajlarını eklemek, başkalarının sizin sorununuzu anlayıp teşhis etmesine yardımcı olur.
Bol şans ve kokuyu çekeriz.