karanlık proxyscrape logo

Herhangi bir Web Sitesini Kazımak için Başlıksız Tarayıcıları ve Proxy'leri Kullanın

Proxyler, Kazıma, Ekim-01-20215 dakika okuma

"Headless browser" kelimesini duyduğunuzda, tarayıcıların teknik olarak nasıl çalıştığını derinlemesine bilmiyorsanız, günlük hayatınızda karşılaşabileceğiniz tanıdık bir teknoloji aracı olmadığından eminim.

Çoğunuz Google Chrome, Firefox, Safari gibi kendine özgü tarayıcılara aşinasınız. Tek fark, başsız tarayıcıların başları olmayan bu tuhaf tarayıcılar olmasıdır. Aşağıdaki bölümde bunun ne anlama geldiğini ve faydalarını inceleyeceğiz.

Başlıksız tarayıcı nedir?

Google Chrome veya Firefox'un bir GUI'si olmasaydı hayatınızın nasıl olacağını hayal edebiliyor musunuz? Bir Yazılım Mühendisi ya da yüksek teknoloji kalibresine sahip biri değilseniz, kullanmakla uğraşmazsınız.

Bu nedenle, başlıksız bir tarayıcı süslü düğmeler, simgeler, kaydırma çubukları ve bir konumdan diğerine gezinmeyi sağlayan bağlantılar olmadan çalışır. Dolayısıyla, başsız bir tarayıcıyla iletişim kurmanın tek yolu bir ağ üzerinden komut satırı arayüzü kullanmaktır. 

Teknik olarak başsız bir tarayıcı, bir GUI olmadan JavaScript yorumlayıcısına, ağ bileşenine, düzene ve işleme motorlarına sahip olacaktır.

O zaman, GUI'li bir tarayıcı ile aynı sonucu elde etmek varken, başsız bir tarayıcı kullanmanın kime ne faydası olacağını sorabilirsiniz.

Cevabını aşağıda bulalım.

Neden başlıksız tarayıcı kullanmalı?

Her şeyden önce, headless tarayıcılar günlük tarayıcılardan nispeten daha hızlıdır. Bunun başlıca nedeni normal tarayıcıların yaptığı gibi CSS, Javascript ve HTML yüklememeleridir. Ayrıca, önemli ölçüde daha az barındırma kaynağı ile standart tarayıcılara kıyasla daha az bellek kullanırlar.

Ayrıca, başsız tarayıcılar bir web veya mobil uygulamanın testini, kalitesini ve genel gelişimini otomatikleştirerek üretkenliğinizden ve zamanınızdan tasarruf etmenizi sağlar. Ayrıca, başsız tarayıcılar ağ uygulamalarının performansını izleyebilir ve otomatik düzen kontrolleri için görüntü oluşturma ve yakalama işlemini otomatikleştirebilir.

Daha sonra web kazıma konusuna gelirsek, başlıksız tarayıcılar, kazımadan önce web sitesini manuel olarak başlatmadan web sitelerini kazımanıza olanak tanır. Web sitesinin HTML'sini doğrudan kazıyabilirsiniz.

Ayrıca, başlıksız tarayıcılar Google arama sonuçlarında hayati bir rol oynamaktadır. Arama motorları web sayfalarını indekslemek için yalnızca sayfanın HTML kaynağına ihtiyaç duyduğundan, başlıksız tarayıcılar Javascript çalıştırarak ve içeriği yerinde doldurarak bunu mümkün kılmaktadır. Bu durum başsız tarayıcıların da hızla gelişmesine yol açmıştır.

Başlıksız tarayıcılar ne için kullanılır?

İşte başsız tarayıcının gerçekleştirdiği görevlerin kısa bir listesi:

Web sitesi testi

Başlıksız tarayıcı kullanmanın birincil amacı, web uygulaması işlevlerini ve kullanıcı arayüzü özelliklerini test etmektir. Alanlara veri yazma, form doldurma, yük simülasyonu yapma ve tüm iş akışlarını gözden geçirme gibi günlük test görevlerini otomatikleştirerek web uygulamalarını test edebilir. Öte yandan, GUI'si olmayan sistemler için testleri otomatikleştirebilirsiniz.

Headless tarayıcılar, kullanıcının bir web sitesinin UI/UX bileşenleriyle nasıl etkileşime gireceğini de test edebilir. Bunu düğme tıklamalarını, kaydırmayı, renk seçimlerini, yazı tipi türlerini ve web sayfası düzenleriyle etkileşimleri otomatikleştirerek yapar. 

Bir sayfa düzeninin test edilmesi, bir web sayfasının varsayılan boyutunun ve koordinatlarının belirlenmesini de içerir. 

Başlıksız tarayıcılar web sayfalarının ekran görüntülerini alabilir ve bunları PDF olarak kaydedebilir. Ayrıca, JavaScript ve Ajax yürütme testleri de sunarlar.

Headless tarayıcının işleyebileceği diğer birincil testlerden bazıları, performans teşhisi için bir web sitesinin zaman çizelgesi izini yakalamayı içerir.

Web kazıma

Başlıksız tarayıcıların popülaritesi sadece web uygulaması testlerinden değil, aynı zamanda oldukça fazla miktarda web kazıma işleminden de kaynaklanmaktadır. Web kazıyıcılarının, gerçek bir tarayıcıyı yükleyip taklit ederek en zorlu hedef web sitelerinden bile veri toplamasına olanak tanırlar.

Bu tür bir çıkarma, JavaScript'in popülerliği nedeniyle zorlaşan verileri kazımak için HTML çıkarma araçlarına olan ihtiyacı ortadan kaldırır. Bu tür çıkarma araçlarının kullanımıyla ilgili endişelerden bazıları eşzamansız yükleme, tarayıcı parmak izi ve sonsuz kaydırmadır.

Görev otomasyonu

Yukarıdaki ilk maddede, web uygulamalarının test edilmesiyle ilgili başsız tarayıcıları kullanarak görev otomasyonunu ele aldık. Dolayısıyla, otomasyona yapılan tek ekleme, kaynak kullanımına neden olmadan tek bir makinede çok sayıda tarayıcıyı taklit etmek için web sitesi etkileşimini otomatikleştirmek üzere başsız tarayıcıları kullanma yeteneğidir.

Farklı headless tarayıcı türleri nelerdir?

Piyasada birkaç başlıksız tarayıcı var. Bir web geliştiricisi olarak, test senaryolarını otomatikleştirmek ve web kazıma için en iyi kombinasyonu elde etmek için çeşitli başlıksız tarayıcıları denemelisiniz.

Ne olduklarını öğrenelim:

Google Chrome Headless Browser (Sürüm 59 veya üstü)

Açık kaynaklı Google Chromium projesine dayanan, hafif bir başsız tarayıcıdır. JavaScript'i destekler ve BSD lisansına sahiptir.

Web sitesi verilerini anında taramak ve kazımak için bir komut satırı arayüzüne sahiptir. Buna ek olarak, daha az bellek tüketir ve yenilikçi özellikler, kullanıcı dostu web geliştirme araçları ve geliştirici dostu özel araçlar içerir. Headless Chrome, Windows, Mac OS X ve Linux dahil olmak üzere tüm platformlarda çalışır.

Web Geliştiricileri genellikle web sitelerinden veri kazımak, web sitelerinden ekran görüntüsü almak ve web sayfalarından PDF dosyaları oluşturmak için kullanırlar. Headless Chrome ile ilgili daha büyüleyici olan şey, tarayıcının GUI'sini yüklemeden de veri ve görüntüleri kazıyabilmenizdir.

Geliştiriciler ayrıca, mobil ve masaüstü cihazlardaki kullanıcıların kolaylıkla gezinebilmelerini sağlamak amacıyla farklı gezinme düzeylerini test etmek için başlıksız tarayıcıları kullanır.

O halde Puppeteer ve Selenium, başsız Chrome'u kontrol eden en yaygın araçlardan ikisidir. Bildiğiniz gibi Selenium test alanında çoktan isim yapmış durumda. Puppeteer ise sayfaları taramak, bileşenlere tıklamak ve veri indirmek için proxy'leri kullanır.

HtmlUnit

HtmlUnit, kullanıcılarla web sitesi etkileşimini otomatikleştirmek için Java'da geliştirilmiş başsız bir tarayıcıdır. Bu tarayıcı, web sitelerini test etmek veya onlardan bilgi almak için idealdir. Diğerlerine kıyasla kurulumu en hızlı olanıdır.

HTMLUnit ayrıca site güvenliği, form gönderimi, navigasyon vb. gibi e-ticaret web sitesi özelliklerini oluşturmak ve test etmek için de kullanılabilir. Bir geliştirici olarak HTTP kimlik doğrulamaları, HTTPS sayfa performansı, HTTP başlık performansı, diğer web sitelerine bağlantı yönlendirmesi ve form doldurma ve gönderme işlemleri için kullanabilirsiniz. 

Mozilla Firefox Headless Browser (Sürüm 56 veya üstü)

Firefox'un başsız sürümü 56 veya daha yüksek sürümlerde kullanılabilir. Geliştiricilerin birkaç API'yi aynı anda yürütmesini sağlar. Bunu yaparken, web geliştirmeyle ilişkili testler için birden fazla simülasyon aracı kullanmanıza gerek kalmaz.

Bu nedenle, Selenium, Slimmer JS ve W3C WebDriver gibi herhangi bir web sürücüsünü, web tarayıcısı otomasyon testleri için başsız Firefox ile birleştirebilirsiniz. Bahsettiğim üç Web sürücüsünden Selenium, Firefox'un başsız sürümünde test ve otomasyon süreçlerini yürütmek için önerilen sürücüdür.

PhantomJS Webkit

Phantom JS, komut dosyalarını çalıştırabileceğiniz açık kaynaklı bir WebKit başsız tarayıcıdır. PhantomJS'nin bakımı yapılmamasına rağmen, 3-Clause ve BSD kullanarak JavaScript, PHP, Objective-C, C#, Python, Java, Haskell, Ruby ve R API'leri üzerinde çalışır. 

Phantom JS, DOM manipülasyonu, SVG, CSS seçicileri, Canvas ve JSON gibi web geliştirme işlemleri için hızlı bir aşamada yerel destek sağlar. Öte yandan, web tarayıcısı otomasyon testlerindeki birçok karmaşıklığı ve süreçleri bir komut satırı arayüzü üzerinden iletişim kurarak yönetir.

Geliştiriciler, web sayfalarının ekran görüntülerini yakalamak, davranışsal tahminler yapmak, çok seviyeli test navigasyonu ve birden fazla iddia türüyle etkileşim kurmak için sıklıkla phantom JS kullanır.

Kara listeye alınmaktan veya yasaklanmaktan kaçınmak için başlıksız bir tarayıcı kullanma

Daha önce keşfettiğiniz gibi, başsız tarayıcıların pratik kullanımlarından biri web kazıma işlemidir. Bu bölümde, başsız bir tarayıcı kullanarak kazıma yaparken kara listeye alınmayı veya engellenmeyi nasıl önleyebileceğinizi anlayacaksınız.

Selenium gibi araçlar veri toplamak için Google Chrome headless veya Firefox headless gibi headless bir tarayıcı kullandığında, hedef web sitesine bir insandan ziyade bir web sitesini tarayan bir robot gibi görünecektir.

Örneğin, çoğu web sitesi PHP gibi üst düzey dillerle programlandığından, tıklama oranını tespit edebilirler. Bu, bir kullanıcının site içinde başka bir sayfaya gitmek için bir düğmeye tıklayıp tıklamadığını veya düğmeye tıklamadan yalnızca URL'ye gidip gitmediğini, ancak ona bağlanan bir bağlantı olup olmadığını anlayabileceği anlamına gelir.

Bir geliştirici olarak, başsız bir tarayıcı kullanırken herhangi bir web sitesini yazmak, tıklamak veya kaydırmak için Selenium gibi araçları kodlayabilirsiniz. Böylece, hedef web sitesine, web sitesine bir robotun değil, bir insanın eriştiğini açıkça gösterir.

Ancak, Selenium'u başsız bir tarayıcı ile kullanmanın dezavantajları olabilir. En büyük endişe, web sayfalarını kazırken yavaş bir hız olacaktır. Bununla birlikte, bu yavaşlık, yukarıdaki "Neden başlıksız tarayıcı kullanılmalı?" bölümünde tartışılan başlıksız tarayıcıların diğer avantajlarına kıyasla ihmal edilebilir.

Öte yandan, web sitesini kazıma hızınız üzerinde hiçbir etkisi yoktur; bu sadece sayfalar arasında geçiş yapma meselesidir. Genel olarak, bir web sitesini başsız bir tarayıcı ile kazımak, ihmal edilebilir dezavantajları göz ardı edebileceğiniz yerlerde denemeye değer.

Başlıksız tarayıcılarla dönen proxy'ler nasıl kullanılır?

Bu bölümde, başsız tarayıcılarla kazıma yapmak için neden dönen proxy'lere ihtiyacınız olduğunu anlayacaksınız.

Bir proxy sunucusu ve başlıksız bir tarayıcı kullanarak bir web sitesinden veri kazdığınızda, web sitesinin sunucusu IP adresinizi kısıtlamadan anonim olarak veri kazıyabilirsiniz.

Dönen bir proxy kullanarak coğrafi olarak kısıtlanmış içeriğe sahip web sitelerine erişebilir ve bu sitelerden veri kazıyabilirsiniz. Bunu başarmak için, ProxyScrape tarafından sağlanan yerleşik döner proxy havuzunu kullanabilirsiniz, böylece hedef web sitesi sizi engellemeden birden fazla konumdan IP'lerle kazıma yapabilirsiniz. Ayrıca, örneğin Amazon gibi e-ticaret platformlarından ürün verilerini önemli sayıda istekle kazıyabilirsiniz.

ProxyScrape Dönen IP adresleri bir web sitesinde birkaç oturum çalıştırmanıza olanak tanır. Bu da yığınla veri talebini engelleyen genel IP kısıtlamalarını aşmaya yardımcı olacaktır.

Proxy'leri döndürmek, başsız tarayıcılarla görevleri otomatikleştirmeye çalıştığınızda ortaya çıkan yasakları aşmanıza da yardımcı olacaktır.

Sonuç

Artık başsız tarayıcıların ne olduğunu, ne zaman ve neden kullanıldıklarını ve çeşitli türlerini biliyorsunuz. Ayrıca, kazıma sırasında engellemeleri nasıl önlediklerine de değindik. Dönen proxy'leri kullandığınızda, anonimlik ve çok sayıda başka fayda sağladığı için kazıma işleminizi daha da artıracaktır.

Sonuç olarak, bu makalede bahsedilen mekanizmaları uygulayacağınızı umuyoruz. Başlıksız bir tarayıcı kullanarak web kazıma ile karşı karşıya kaldığınızda bunu yapmalısınız.