Whatsapp Son Görülmesi Kapalı Olanları Takip Etme // Siber Güvenlik Kulübü

CH4M3

Uzman üye
19 Ağu 2017
1,926
16
php island
Herkese merhabalar, bugün sizlere Whatsapp Web ile son görülmesi kapalı olan kişilerin ne zaman çevrimiçi olup ne zaman çevrimdışı olduğunu takip etmenin yolunu anlatacağım. Bu adımları uygulamak için önceden telefonunuz ile Whatsapp Web'e bağlanmanız gerekmektedir.

Öncelikle yapmanız gereken, ne zaman çevrimiçi olduğunu takip edeceğiniz kişinin sohbet penceresini aşağıdaki şekilde açınız. Ardından Geliştirici Araçları'ndan Console kısmını açınız.​

Screen-Shot-2020-01-05-at-16-14-42.png

Eğer Geliştirici Araçları nasıl açılır bilmiyorsanız, Chrome üzerinden aşağıdaki ekran görüntüsündeki gibi sağ üst kısımdan adımları takip ederek açabilirsiniz. Windows bilgisayarlarda kısayolu CTRL+SHIFT+I (bazı tarayıcılarda büyük ı yerine, büyük i olabiliyor), Mac OSX bilgisayarlarda ALT+CMD+İ olarak belirtilmiştir. Kısayol üzerinden de geliştirici araçlarını açabilirsiniz.

Hedef kişinin sohbet penceresini ve Console kısmını açtıktan sonra aşağıda yazmış olduğum javascript kodlarını console kısmına yapıştırıyoruz.

Not: 4. satırdaki "docu*ment" arasındaki * işaretini kaldırmayı unutmayınız. (Konu içerisinde kelime sansürleniyor.)​

Konsola yapıştırılacak kodlar:
Kod:
function memberIsOnline() {
            let isOnline = false;
            let now = new Date();
            let source = docu*ment.getElementsByClassName('NuujD')[0].innerHTML; // DOCU*MENT ARASINDAKİ (*) İŞARETİNİ KALDIRIN.
            let time = now.getHours() + "." + (now.getMinutes()<10?'0':'') + now.getMinutes();
            if (source.indexOf('online') > 0 || source.indexOf('çevrimiçi') > 0) {
                isOnline = true;
            } else {
                if (source.indexOf('typing...') > 0 || source.indexOf('yazıyor...') > 0) {
                    isOnline = true;
                }
            }
            return {
                response: isOnline,
                time: time,
            };
        }
        var isOnline = false, isOnlineData, printType = 'console';
        setInterval(function () {
            isOnlineData = memberIsOnline();
            if (isOnline === false) {
                if (isOnlineData.response === true) {
                    printType == 'console' ? console.log('çevrimiçi:' + isOnlineData.time) : alert('çevrimiçi:' + isOnlineData.time);
                    isOnline = true;
                }
            } else {
                if (isOnlineData.response === false) {
                    printType == 'console' ? console.log('son görülme: ' + isOnlineData.time) : alert('son görülme: ' + isOnlineData.time);
                    isOnline = false;
                }
            }
        }, 1000);

Not: sadece yukarıdaki kodları yapıştırmanız yeterlidir. Bundan sonraki kısım anlatım kısmıdır.​

Bir adet de opsiyonel özellik ekledim.
var isOnline = false, lastTime, isOnlineData, printType = 'console';
bu satırdaki printType değişkeni karşısındaki 'console' değerini 'alert' olarak değiştirirseniz console çıktısı yerine pencerede alert/uyarı çıkacaktır.

Screen-Shot-2020-01-05-at-16-18-44.png

Şimdi biraz da yazdığım kodların nasıl işlediğinden bahsedeceğim. Sohbet penceresini açmaktaki gerekçe, kişinin adının altında çevrimiçi/online yazıp yazmadığını kontrol ediyoruz. Kimisinde ingilizce, kimisinde türkçe dil olabileceği için iki durumu da göz önünde bulundurarak denetim yapıyoruz. Html taglarının içinden gerekli kısmı filtreleyip filtrelediğim kısım içerisinden 'çevrimiçi' veya 'online' kelimesini arıyorum. Eğer kelime var/yok ise tarih ile birlikte fonksiyon bize iki değer dönüyor. response değeri, çevrimiçi ise true, değilse false şeklinde dönüyor. Diğer değer de 00.00 olarak değer dönüyor. Tabi ki göz önünde bulundurmamız gereken bir diğer durum ise çevrimiçi iken size yazıyor ise yazıyor olabilme ihtimali var.

image.png
Kod:
function memberIsOnline() {
            let isOnline = false;
            let now = new Date();
            let source = docu*ment.getElementsByClassName('NuujD')[0].innerHTML; // DOCU*MENT ARASINDAKİ (*) İŞARETİNİ KALDIRIN.
            let time = now.getHours() + "." + (now.getMinutes()<10?'0':'') + now.getMinutes();
            if (source.indexOf('online') > 0 || source.indexOf('çevrimiçi') > 0) {
                isOnline = true;
            } else {
                if (source.indexOf('typing...') > 0 || source.indexOf('yazıyor...') > 0) {
                    isOnline = true;
                }
            }
            return {
                response: isOnline,
                time: time,
            };
        }

Aşağıdaki kısımda da yaptığımız şey, saniye başı kontrol gerçekleştirmeliyiz. Her saniyede 1 kez fonksiyonu çağırmalıyız ve çevrimiçi mi kontrol etmeliyiz. Diyelim ki kontrol ettik, peki her saniye başında "çevrimiçi mi" yazdıracak? 1 dakika bile çevrimiçi olsa, 60 tane alert/console çıktısı anlamına gelir. Bunun önüne geçmek için isOnline değişkeni tanımladım. Eğer hedef kişi aktif olursa değişkene true değerini verip bir daha kontrol edildiği zaman eğer true ve çevrimiçi ise alert/console çıktısı basmamasını, göz ardı etmesini sağladım.​

Kod:
var isOnline = false, isOnlineData, printType = 'console';
        setInterval(function () {
            isOnlineData = memberIsOnline();
            if (isOnline === false) {
                if (isOnlineData.response === true) {
                    printType == 'console' ? console.log('çevrimiçi:' + isOnlineData.time) : alert('çevrimiçi:' + isOnlineData.time);
                    isOnline = true;
                }
            } else {
                if (isOnlineData.response === false) {
                    printType == 'console' ? console.log('son görülme: ' + isOnlineData.time) : alert('son görülme: ' + isOnlineData.time);
                    isOnline = false;
                }
            }
        }, 1000);

Önerilere, seviyeli eleştirilere, tavsiyelere açığım. Aklında bu tarz benzer/farklı yapılabilecek fikirleri olanlar, açıklayıcı bir şekilde aşağıdan belirtebilir.
 
Son düzenleme:

OperServ

Katılımcı Üye
11 Şub 2008
334
44
Emeğine sağlık yanlız kodları atmışsında işimize yarayacak kod hangisi aşağidakimi yukardakimi hepsini tek seferde conseleye atsak nasıl olur?
 

CH4M3

Uzman üye
19 Ağu 2017
1,926
16
php island
Emeğine sağlık yanlız kodları atmışsında işimize yarayacak kod hangisi aşağidakimi yukardakimi hepsini tek seferde conseleye atsak nasıl olur?

Konsola atılacak kodları, konuyu düzenleyerek daha anlaşılır hale getirdim. Belirttiğim kısımdaki kodların hepsini konsola atıp çalıştırabilirsiniz. herhangi bir düzenleme yapmanız gerekmiyor. :))
 

uPALA

Katılımcı Üye
18 Tem 2012
257
1
Teşkilat
Herkese merhabalar, bugün sizlere Whatsapp Web ile son görülmesi kapalı olan kişilerin ne zaman çevrimiçi olup ne zaman çevrimdışı olduğunu takip etmenin yolunu anlatacağım. Bu adımları uygulamak için önceden telefonunuz ile Whatsapp Web'e bağlanmanız gerekmektedir.

Öncelikle yapmanız gereken, ne zaman çevrimiçi olduğunu takip edeceğiniz kişinin sohbet penceresini aşağıdaki şekilde açınız. Ardından Geliştirici Araçları'ndan Console kısmını açınız.​

Screen-Shot-2020-01-05-at-16-14-42.png

Eğer Geliştirici Araçları nasıl açılır bilmiyorsanız, Chrome üzerinden aşağıdaki ekran görüntüsündeki gibi sağ üst kısımdan adımları takip ederek açabilirsiniz. Windows bilgisayarlarda kısayolu CTRL+SHIFT+I (bazı tarayıcılarda büyük ı yerine, büyük i olabiliyor), Mac OSX bilgisayarlarda ALT+CMD+İ olarak belirtilmiştir. Kısayol üzerinden de geliştirici araçlarını açabilirsiniz.

Hedef kişinin sohbet penceresini ve Console kısmını açtıktan sonra aşağıda yazmış olduğum javascript kodlarını console kısmına yapıştırıyoruz.

Not: 4. satırdaki "docu*ment" arasındaki * işaretini kaldırmayı unutmayınız. (Konu içerisinde kelime sansürleniyor.)​

Konsola yapıştırılacak kodlar:
Kod:
function memberIsOnline() {
            let isOnline = false;
            let now = new Date();
            let source = docu*ment.getElementsByClassName('NuujD')[0].innerHTML; // DOCU*MENT ARASINDAKİ (*) İŞARETİNİ KALDIRIN.
            let time = now.getHours() + "." + (now.getMinutes()<10?'0':'') + now.getMinutes();
            if (source.indexOf('online') > 0 || source.indexOf('çevrimiçi') > 0) {
                isOnline = true;
            } else {
                if (source.indexOf('typing...') > 0 || source.indexOf('yazıyor...') > 0) {
                    isOnline = true;
                }
            }
            return {
                response: isOnline,
                time: time,
            };
        }
        var isOnline = false, isOnlineData, printType = 'console';
        setInterval(function () {
            isOnlineData = memberIsOnline();
            if (isOnline === false) {
                if (isOnlineData.response === true) {
                    printType == 'console' ? console.log('çevrimiçi:' + isOnlineData.time) : alert('çevrimiçi:' + isOnlineData.time);
                    isOnline = true;
                }
            } else {
                if (isOnlineData.response === false) {
                    printType == 'console' ? console.log('son görülme: ' + isOnlineData.time) : alert('son görülme: ' + isOnlineData.time);
                    isOnline = false;
                }
            }
        }, 1000);

Bir adet de opsiyonel özellik ekledim.

bu satırdaki printType değişkeni karşısındaki 'console' değerini 'alert' olarak değiştirirseniz console çıktısı yerine pencerede alert/uyarı çıkacaktır.

Screen-Shot-2020-01-05-at-16-18-44.png

Şimdi biraz da yazdığım kodların nasıl işlediğinden bahsedeceğim. Sohbet penceresini açmaktaki gerekçe, kişinin adının altında çevrimiçi/online yazıp yazmadığını kontrol ediyoruz. Kimisinde ingilizce, kimisinde türkçe dil olabileceği için iki durumu da göz önünde bulundurarak denetim yapıyoruz. Html taglarının içinden gerekli kısmı filtreleyip filtrelediğim kısım içerisinden 'çevrimiçi' veya 'online' kelimesini arıyorum. Eğer kelime var/yok ise tarih ile birlikte fonksiyon bize iki değer dönüyor. response değeri, çevrimiçi ise true, değilse false şeklinde dönüyor. Diğer değer de 00.00 olarak değer dönüyor. Tabi ki göz önünde bulundurmamız gereken bir diğer durum ise çevrimiçi iken size yazıyor ise yazıyor olabilme ihtimali var.

image.png
Kod:
function memberIsOnline() {
            let isOnline = false;
            let now = new Date();
            let source = docu*ment.getElementsByClassName('NuujD')[0].innerHTML; // DOCU*MENT ARASINDAKİ (*) İŞARETİNİ KALDIRIN.
            let time = now.getHours() + "." + (now.getMinutes()<10?'0':'') + now.getMinutes();
            if (source.indexOf('online') > 0 || source.indexOf('çevrimiçi') > 0) {
                isOnline = true;
            } else {
                if (source.indexOf('typing...') > 0 || source.indexOf('yazıyor...') > 0) {
                    isOnline = true;
                }
            }
            return {
                response: isOnline,
                time: time,
            };
        }

Aşağıdaki kısımda da yaptığımız şey, saniye başı kontrol gerçekleştirmeliyiz. Her saniyede 1 kez fonksiyonu çağırmalıyız ve çevrimiçi mi kontrol etmeliyiz. Diyelim ki kontrol ettik, peki her saniye başında "çevrimiçi mi" yazdıracak? 1 dakika bile çevrimiçi olsa, 60 tane alert/console çıktısı anlamına gelir. Bunun önüne geçmek için isOnline değişkeni tanımladım. Eğer hedef kişi aktif olursa değişkene true değerini verip bir daha kontrol edildiği zaman eğer true ve çevrimiçi ise alert/console çıktısı basmamasını, göz ardı etmesini sağladım.​

Kod:
var isOnline = false, isOnlineData, printType = 'console';
        setInterval(function () {
            isOnlineData = memberIsOnline();
            if (isOnline === false) {
                if (isOnlineData.response === true) {
                    printType == 'console' ? console.log('çevrimiçi:' + isOnlineData.time) : alert('çevrimiçi:' + isOnlineData.time);
                    isOnline = true;
                }
            } else {
                if (isOnlineData.response === false) {
                    printType == 'console' ? console.log('son görülme: ' + isOnlineData.time) : alert('son görülme: ' + isOnlineData.time);
                    isOnline = false;
                }
            }
        }, 1000);

Önerilere, seviyeli eleştirilere, tavsiyelere açığım. Aklında bu tarz benzer/farklı yapılabilecek fikirleri olanlar, açıklayıcı bir şekilde aşağıdan belirtebilir.



undefined hatası alıyorum.
 

CH4M3

Uzman üye
19 Ağu 2017
1,926
16
php island
uPALA konuyu düzenledim. Yapıştırılacak tek bir kod var;

Kod:
function memberIsOnline() {
            let isOnline = false;
            let now = new Date();
            let source = docu*ment.getElementsByClassName('NuujD')[0].innerHTML; // DOCU*MENT ARASINDAKİ (*) İŞARETİNİ KALDIRIN.
            let time = now.getHours() + "." + (now.getMinutes()<10?'0':'') + now.getMinutes();
            if (source.indexOf('online') > 0 || source.indexOf('çevrimiçi') > 0) {
                isOnline = true;
            } else {
                if (source.indexOf('typing...') > 0 || source.indexOf('yazıyor...') > 0) {
                    isOnline = true;
                }
            }
            return {
                response: isOnline,
                time: time,
            };
        }
        var isOnline = false, isOnlineData, printType = 'console';
        setInterval(function () {
            isOnlineData = memberIsOnline();
            if (isOnline === false) {
                if (isOnlineData.response === true) {
                    printType == 'console' ? console.log('çevrimiçi:' + isOnlineData.time) : alert('çevrimiçi:' + isOnlineData.time);
                    isOnline = true;
                }
            } else {
                if (isOnlineData.response === false) {
                    printType == 'console' ? console.log('son görülme: ' + isOnlineData.time) : alert('son görülme: ' + isOnlineData.time);
                    isOnline = false;
                }
            }
        }, 1000);
 

uPALA

Katılımcı Üye
18 Tem 2012
257
1
Teşkilat
uPALA konuyu düzenledim. Yapıştırılacak tek bir kod var;

Kod:
function memberIsOnline() {
            let isOnline = false;
            let now = new Date();
            let source = docu*ment.getElementsByClassName('NuujD')[0].innerHTML; // DOCU*MENT ARASINDAKİ (*) İŞARETİNİ KALDIRIN.
            let time = now.getHours() + "." + (now.getMinutes()<10?'0':'') + now.getMinutes();
            if (source.indexOf('online') > 0 || source.indexOf('çevrimiçi') > 0) {
                isOnline = true;
            } else {
                if (source.indexOf('typing...') > 0 || source.indexOf('yazıyor...') > 0) {
                    isOnline = true;
                }
            }
            return {
                response: isOnline,
                time: time,
            };
        }
        var isOnline = false, isOnlineData, printType = 'console';
        setInterval(function () {
            isOnlineData = memberIsOnline();
            if (isOnline === false) {
                if (isOnlineData.response === true) {
                    printType == 'console' ? console.log('çevrimiçi:' + isOnlineData.time) : alert('çevrimiçi:' + isOnlineData.time);
                    isOnline = true;
                }
            } else {
                if (isOnlineData.response === false) {
                    printType == 'console' ? console.log('son görülme: ' + isOnlineData.time) : alert('son görülme: ' + isOnlineData.time);
                    isOnline = false;
                }
            }
        }, 1000);

bu kodları yapıştırdıgımda sadece sayı çkıyor "7251" mesela
 

CH4M3

Uzman üye
19 Ağu 2017
1,926
16
php island
aldığınız hataların ekran görüntüsünü atabilir misiniz?

ayrıca sayı almanız normal, çalışıyor demektir. sohbetleriniz açık ise hiçbir sıkıntı çıkmaz. sohbetler arası geçiş de yapabilirsiniz. Yeter ki bir sohbet penceresi açık olsun.
 

OperServ

Katılımcı Üye
11 Şub 2008
334
44
Şimdi Kodu Kopyala Yapiştir Dediğimiz zaman Kayit Etmiyor Consoleye o Nasil olacak Peki?
-Birde Conseliyi Kapatinca Kod Siliniyor
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.