• 03-06-2020, 09:21:31
    #1
    Merhaba arkadaşlar;

    Uzun detaylı okumak istemeyen arkadaşlar için kısa ve öz sorum?

    Bir siteye bir ziyaretçi ziyaret ettğinde session_id'si olmayan tüm ziyaretleri bot olarak algılamak doğru olur mu?

    Detaylı olarak okumak isteyen arkadaşlar için aşağıda bunu da belirttim:

    Geliştirmiş olduğum bir projeyi az çok tamamladım. Siteye 1-2 ziyaretçi çektirerek sitenin bir çok testlerini yapıyorum. Siteyi ziyaret eden herkesin SERVER bilgilerini log olması için veritabanına kaydedip inceliyorum.

    Benim merak ettiğim soru:
    Mesela bir ziyaretçi veya bir BOT web siteyi ziyaret ettiğinde, amacım ikisini ayırmak olacak ve iki grubu da ayrı veritabanında tutmak olacak..
    Şuan google, yandex gibi yaklaşık 20-30'dan fazla botu ayıklayabiliyorum.

    Normal bir kullanıcı da benim için en önemli olan şey kullanıcının session_id'sinin gelip gelmemesidir. Benin için gelmesi önemli.

    ANCAK, son iki gündür normal ziyaretçileri kontrol edip aldığım loglarda USER_AGENT bilgilerinde anormal bir şey yok fakat bir çoğunda session_id kayıtlarının olmadığı, gelmediğini gördüm.

    Bu session_id bilgileri gelmeyen tüm kullanıcıları BOT olarak algılamam normal olur mu?
  • 03-06-2020, 10:36:51
    #2
    adam atıyorum siteni googledan bir şey arıyarak geldi. ilk girdiği sayfada senin eline herhangi bir session_id vs. gelmeyecek. ikinci requestten sonra sana session_id cookiesini gönderir. o yüzden yanlış olur.
    her zaman session id verisi gönderiliyor olsa bile zaten veri çekmek için yazılan kütüphanelerin bir çoğu default olarak cookie'yi devam ettiriyor. o yüzden session id ile ayrım yapmanın çok bir anlamı olmaz.

    ayrıca bu kadar botu useragent üzerinden bu google botudur diyorsan gene yanlış olur. doğru bir kontrol yapmak istiyorsan her gelen ip için host kontrolü yapman gerekir. https://support.google.com/webmaster...er/80553?hl=tr
  • 03-06-2020, 11:03:46
    #3
    Potanski adlı üyeden alıntı: mesajı görüntüle
    adam atıyorum siteni googledan bir şey arıyarak geldi. ilk girdiği sayfada senin eline herhangi bir session_id vs. gelmeyecek. ikinci requestten sonra sana session_id cookiesini gönderir. o yüzden yanlış olur.
    her zaman session id verisi gönderiliyor olsa bile zaten veri çekmek için yazılan kütüphanelerin bir çoğu default olarak cookie'yi devam ettiriyor. o yüzden session id ile ayrım yapmanın çok bir anlamı olmaz.

    ayrıca bu kadar botu useragent üzerinden bu google botudur diyorsan gene yanlış olur. doğru bir kontrol yapmak istiyorsan her gelen ip için host kontrolü yapman gerekir. https://support.google.com/webmaster...er/80553?hl=tr
    Değerli yorumun ve bilgin için çok teşekkür ederim hocam
    Bu dediklerini araştırıyor veg geliştiriyor olacağım
  • 03-06-2020, 11:20:43
    #4
    session_auto_start açıksa; gelen bot bile olsa session oluşacaktır. Çünkü her gelen ziyaretçi için bu durumda session otomatik oluşturulur. Yani bu durumda session id oluşması istemcinin bot olması vs. konusu ile bağlantılı olmaz. session_auto_start kapalıysa; eğer tüm sayfaların kullandığı bir PHP dosyasında session_start(); kullanırsan yine ilk durum gibi gelen bot bile olsa o sayfayı çağırdığı için session açmış olursun.

    Eğer yalnızca tarayıcı kullanan ziyaretçiler için session oluşturmak istiyorsan; session_auto_start kapalı olmalı, session başlatma işlemini spesifik bir PHP dosyasına yüklemeli ve JS ile kullanıcı geldiğinde bu sayfayı XHR üzerinden ziyaret ettirmelisin ki robotik olmayan isteklerde session başlatmamış olabilirsin. (İstemci robot mu kontrolleri Cloudflare vs. gibi yapılarda bu şekilde çalışır)

    Eğer amacın sadece arama motorları vs. algılamaksa bunu session üzerinden değil User-Agent bilgisi üzerinden yapman daha sağlıklı olacaktır.
  • 03-06-2020, 12:16:37
    #5
    tecnohalil adlı üyeden alıntı: mesajı görüntüle
    session_auto_start açıksa; gelen bot bile olsa session oluşacaktır. Çünkü her gelen ziyaretçi için bu durumda session otomatik oluşturulur. Yani bu durumda session id oluşması istemcinin bot olması vs. konusu ile bağlantılı olmaz. session_auto_start kapalıysa; eğer tüm sayfaların kullandığı bir PHP dosyasında session_start(); kullanırsan yine ilk durum gibi gelen bot bile olsa o sayfayı çağırdığı için session açmış olursun.

    Eğer yalnızca tarayıcı kullanan ziyaretçiler için session oluşturmak istiyorsan; session_auto_start kapalı olmalı, session başlatma işlemini spesifik bir PHP dosyasına yüklemeli ve JS ile kullanıcı geldiğinde bu sayfayı XHR üzerinden ziyaret ettirmelisin ki robotik olmayan isteklerde session başlatmamış olabilirsin. (İstemci robot mu kontrolleri Cloudflare vs. gibi yapılarda bu şekilde çalışır)

    Eğer amacın sadece arama motorları vs. algılamaksa bunu session üzerinden değil User-Agent bilgisi üzerinden yapman daha sağlıklı olacaktır.
    Bilgilerin için teşekkür ederim hocam.

    Benim şu soruyu sorma asıl amacım Botları ve kullanıcıları ayırmak. Dediğin gibi USER_AGENT ile bu işlemi zaten yapıyorum. Ama tuttuğum logları kontrol ettiğim de eğer yanlış anlamadıysam bazı gelen isteklerin bot veya örümcek vb. olduğunu fakat USER_AGENT bilgilerinde bunu anlayacak bir bilgi yazmadığını görüyuorum. Bakıyorum session_id de oluşturulmamış. Sonra loglarıma bakmaya devam ediyorum bi sonra ki kayıtta sanki aynı kullanıcı bu sefer farklı bi ip ile gelmiş gibi görünüyor. Ya da ben yanlış yorumluyorum kendime.

    Az önce @Potanski arkadaşımın belirttiği IP ile doğrulama işlemine göz attım. Bu şekilde de Google Yandex gibi popüler botları algılayabilirim ama bazı ip bilgileri gizli sonuç döndürdüğü için o zamanda ne yapacağımı bilemedim.