Başlıksız tarayıcı nedir? Veri toplama seferine yardımcı mı olurlar yoksa engel mi olurlar?
Başlıksız tarayıcı, grafik kullanıcı arayüzü (GUI) olmayan bir web tarayıcısıdır. Görünür bir penceresi veya kullanıcı arayüzü öğesi yoktur.
Sayfa içeriğini işlemek için sadece komut dosyaları kullanırsınız.
Bu da her türlü kötülüğü yapabileceğiniz anlamına gelir.
Ama biz bugün sadece beyaz şapkalılardan bahsedeceğiz.
Başlıksız bir tarayıcıyı bu kadar özel yapan nedir?
- Web içeriğiyle daha hızlı etkileşim - bu da ihtiyacınız olan verilerden daha fazlasını alabileceğiniz anlamına gelir.
- Bir sayfayı yüklemek için çok fazla bant genişliği veya zaman gerektirmez - bu da beklemeniz gerekmediği anlamına gelir.
- Kulağa Sleepy Hollow tarzında havalı geliyor - ki bu çok fena.
Başlıksız tarayıcı ne için kullanılır?
Headless browsers provide easy access to the webpage DOM (document object model), which is helpful for front-end developers using JavaScript frameworks such as AngularJS.
Ayrıca, otomatik test sırasında işlevsel web sayfalarını başsız bir sunucuya yüklemek ve çalıştırmak için de yaygın olarak kullanılırlar. Buna başsız tarayıcı testi denir.
Başlıksız tarayıcı testi
Başlıksız test, web sayfası doğrulaması için kullanılan bir otomasyon testi tekniğidir. Bir program, grafikleri oluşturmadan veya görünür kullanıcı arayüzü bileşenlerini çalıştırmadan otomasyon, komut dosyaları veya diğer araçları kullanarak bir web tarayıcısını kontrol eder. Başlıksız tarayıcı testinin amacı şunları içerebilir:
- Bir HTML/XHTML sayfasındaki biçimlendirme, içerik ve stilin geçerliliğini kontrol etme.
- Bir web veya oturum açma formunu doğrulama.
- Evaluating JavaScript for event handlers and AJAX operations.
Bu, dinamik içeriklerin ekranda doğru konumlandırma vb. ile görüntülendiğini doğrulamak içindir.
Başlıksız tarayıcılar diğer yazılımlarla da iyi çalışır. Test ve web geliştirmenin yanı sıra, veri toplamayı kolaylaştırmaya yardımcı olabilirler.
Başlıksız tarayıcı kazıma
Headless scraping is an automated data extraction technique you can use in conjunction with a web scraper.
Başlıksız modda bir tarayıcı:
- Web sitelerini kazır ve web verilerini bir diskteki yerel bir dizinde depolar.
- Çoğu modern web sitesinden birden fazla sayfa alır.
- Imitates a user agent profile that is necessary to execute javascript rendering.
- Komut satırı argümanlarıyla daha verimli bir şekilde kazıma yapar.
Örneğin, başsız tarayıcılar genellikle çevrimiçi kataloglardan veri, e-ticaret web sitelerinden fiyat bilgisi veya şirketin web sitesine gömülü sosyal medya widget'ları/ikonları kazımak için kullanılır.
Bazı popüler headless tarayıcılar nelerdir?
Başsız Krom
Google'ın Chrome tarayıcısının başsız sürümü.
Başsız Firefox
A Mozilla project that aims to create a headless build of their latest web browser with enabled support for WebGL and JavaScript.
HtlmUnit
Web sayfalarını yüklemek ve doğrulamak için başsız tarayıcılar kullanan işlevsel bir test çerçevesi.
SimpleBrowser
Tarayıcı otomasyon faaliyetlerini yürütebilen Net 4 yazılımı ile yapılmış başsız bir tarayıcı. JavaScript'e izin vermez, ancak göndermeden veya gezinmeden önce kullanıcı aracısını, yönlendiriciyi, istek başlıklarını, form değerlerini ve diğerlerini değiştirebilirsiniz.
SlimerJS
JavaScript ve HTML5 'e dosya sistemi benzeri bir ortamda izin vermeyi amaçlayan bir Mozilla projesi. Çekirdek olarak Gecko'yu (Firefox'un arkasındaki tarayıcı motoru) kullanır. Bu, tüm JavaScript API'lerini tam olarak desteklemesini sağlayacaktır (örneğin, bir şekilde uygulanmamış veya eksik olsalar bile).
ZombieJS
Zombie provides a JavaScript API and uses Chromium. Chromium can run on various web pages, but it is mainly used to test the DOM APIs and website behavior automatically.
Web kazımak için başsız tarama nasıl kullanılır?
Başlıksız bir tarayıcının amacı otomasyondur (işlevsel testler, web geliştirme vb.). Ayrıca, kullanım kolaylığı ve görevleri gözetimsiz / insan müdahalesi olmadan yapabilme yetenekleri nedeniyle web kazıma için harika araçlar oluştururlar.
Web kazımak için başsız tarayıcıları kullanırken, tarayıcıya bir URL listesi vermeniz ve ardından yüklenmesini beklemeniz gerekir. Headless tarayıcıya yüklendiğinde, bu işlem headless tarayıcınıza komut satırından komutlar gönderilerek otomatikleştirilebilir.
URL'lerin headless tarayıcınıza ne zaman ve nasıl çekileceği konusunda size tam kontrol sağlar.
Başlıksız bir tarayıcı ile web sitelerini kazımak için, tarayıcının bunlarla iletişim kurabilmesi için uygulamanıza kütüphaneler eklemeniz gerekecektir. Bu iletişim bir komut satırı aracılığıyla veya bir web sunucusuna bağlanarak gerçekleşebilir.
En yaygın kütüphaneler şunlardır:
Talepler
A necessary Python library to interact with web servers by an HTTP request.
jsdom
Bu kütüphane ayrıca jsdom-global adlı bir paket gerektirir ve bu paket headless tarayıcı tarafından ihtiyaç duyulan global nesneleri oluşturmak için kullanılır.
Kuklacı
The puppeteer library makes it easier to control Chrome and Chromium than other libraries such as Selenium/WebDriver. You can install it with npm or yarn in NodeJS applications to run tests or scrape data from web pages. It provides you with methods to specify the URL, download resources, handle cookies, etc.
Puppeteer'ın söz tabanlı bir kütüphane olduğunu unutmamalıyız: Motor bölmesindeki başsız Chrome örneğine asenkron çağrılar gerçekleştirir.
Kabus
This library is used for Electron applications. It provides Electron with automation tools that can be used by an application to drive Electron’s browser process via a remote connection.
Selenyum
Selenium bağlarını kullanan başsız JavaScript için webdriver js ve selenium-web driver gibi bir avuç kütüphane mevcuttur.
Bir kütüphane kurmanın zor olması gerektiğini düşünüyor olabilirsiniz, ancak öyle değil. Bir örneğe göz atalım.
Temel Kuklacı Eğitimi
İlk olarak, Puppeteer'ı proje dizinine yüklemeniz gerekir.
Puppeteer'ı Yükleme
Puppeteer'ı başsız bir tarayıcıda kullanmak için çalıştırın:
npm i puppeteer
# or "yarn add puppeteer"
Ya da Puppeteer'ın lite sürümü için çalıştırın:
npm i puppeteer-core
# or "yarn add puppeteer-core"
Yukarıda belirtildiği gibi, tüm puppeteer kodu NodeJS'de çalışır. Chrome'u kontrol etmek için yöntemler içeren bir nesne döndürecek bir fabrika işlevi olarak dışa aktarırsınız. Bunu, başlatma yöntemi aracılığıyla yeni tarayıcı örnekleri oluşturmak, URL'lere gitmek, olayları işlemek vb. için kullanabilirsiniz.
Aşağıdaki kod parçası Puppeteer komut dosyası içindir.
İsterseniz adresinden https://example.com adresine gidin ve bir ekran görüntüsünü example.png olarak kaydedin:
Dosyayı example.js olarak kaydet
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
Komut satırında komut dosyasını çalıştırın:
node example.js
Eğer bir PDF oluşturmak istiyorsanız:
Dosyayı hn.js olarak kaydedin.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', {
waitUntil: 'networkidle2',
});
await page.pdf({ path: 'hn.pdf', format: 'a4' });
await browser.close();
})();
Çocuk oyuncağı değil mi?
Yukarıdaki örnek sadece bir kod parçacığıdır. Daha fazla bilgi için genişletilmiş Puppeteer eğitimini burada bulabilirsiniz.
Başlıksız bir tarayıcı ile web kazıyıcı kullanmanın bazı sınırlamaları nelerdir?
You generally have less control with a headless server since many tasks require additional plugins or configurations handled by a standard web browser. For example, some headless browsers don’t support CSS selectors, which makes scraping data from the DOM more difficult.
Even though a headless browser is efficient, web blocks may slow you down. Depending on how many pages you plan to scrape, you need to think about using a proxy service. A proxy service will help to save your IP address from a potential block.
Başlıksız modda kullanılacak en iyi proxy'ler
Tüm API çağrılarınız ve HTTP istekleriniz aynı IP adresinden yapılıyorsa, tüm süreç kapatılacaktır.
Web kazıyıcılarla kullanılacak en iyi proxy'ler dönen proxy'lerdir. Bu şekilde, her tarayıcı örneği farklı bir IP adresine sahip olur.
Rotating residential proxies, or backconnect proxies, are ideal for automation testing and web applications that harvest data.
Want to know more about proxies for web scraping with a headless browser? Check out this article on how many proxies you need.
Bu makalede, başsız tarayıcıların ne olduğundan ve bunları bir kazıma aracı olarak kullanmak isteyenler için neden yararlı olabileceğinden bahsettik.
Başlıksız tarayıcılar veya web kazıma ile ilgili başka sorularınız varsa, aşağıya yorum yapmaktan çekinmeyin!
SSS
Nasıl başlayabilirim?
Web otomasyon ihtiyaçlarınız için iyi çalışan bir başsız tarayıcı seçmeniz yeterlidir. Headless Chromium ve SlimerJS gibi çeşitli headless tarayıcılar mevcuttur. Ayrıca bir kütüphaneye de ihtiyacınız olacak. Örneğin Chrome kullanmayı planlıyorsanız, Puppeteer kütüphanesini yüklemeniz gerekecektir.
Neden 'başsız' tarayıcı adı?
Başlıksız bir tarayıcının grafik kullanıcı arayüzü (GLU) yoktur; çalışırken göreceğiniz tek şey bir komut satırı arayüzüdür (CLI). Web geliştiricileri bunu işlevsel testler ve web kazıma gibi otomatik görevleri çalıştırmak için kullanır.
Headless tarayıcınızın CLI'si, diğer şeylerin yanı sıra web sitelerini yüklemenize ve onlarla etkileşime girmenize olanak tanır. Esasen, siz ve headless sunucunuza yüklediğiniz web sitesi(leri) arasında son derece yapılandırılabilir bir proxy görevi görür. Web kazıma veya headless tarayıcılar konusunda yeniyseniz, bu makale size temel bilgileri öğretecektir. Eğer yeni başlıyorsanız size yardımcı olabilir.
Headless Chrome'u kim yarattı?
Headless Chrome, Google tarafından yönetilen açık kaynaklı bir projedir.
Otomatik web kazıma dışında başka amaçlar için kullanabilir miyim?
Evet! Otomatik ve işlevsel testleri çalıştırmak için kullanabilirsiniz. Hangi başsız sunucunun ihtiyaçlarınızı en iyi şekilde karşıladığına karar vermeden önce tüm seçeneklerinizi değerlendirmelisiniz.
Amaçları otomasyon olduğundan, başsız tarayıcılar, özellikle bir komut satırı arayüzü ile eşleştirildiğinde harika kazıma araçları oluşturur.
Başlıksız tarayıcıları komut satırından çalıştırabilir miyim?
Evet. Birçok başsız sunucu, bunları kendi CLI'larından veya Chrome gibi bir web kullanıcı arayüzü üzerinden çalıştırmanıza izin verir. Bazı durumlarda, başsız tarayıcınız üzerinde tam kontrol sahibi olmak için her ikisini de kullanmanız gerekebilir.
Başlıksız bir tarayıcının makinemde çalışıp çalışmadığını nasıl anlarım?
Yerel sisteminizin hangi mimaride çalıştığına bakabilir ve bunu kullanmak istediğiniz başsız tarayıcıların mimarisiyle karşılaştırabilirsiniz. Bazı başsız sunucular çapraz platformdur veya birden fazla mimariyi destekler, ancak hepsi bu şekilde çalışmaz. Birini kullanmadan önce kontrol etmelisiniz.
Başlıksız tarayıcıların CSS seçicilerini desteklemediği doğru mu?
Bu durum bazı başsız sunucular için geçerlidir (ancak hepsi için geçerli değildir); özellikle PhantomJS CSS seçicilerini desteklemezken Headless Chrome desteklemektedir. Her headless tarayıcının geliştiricileri herhangi bir zamanda farklı özellikler eklemeyi ve/veya kaldırmayı seçebilir, bu nedenle herhangi bir şeyi varsaymadan önce her zaman kontrol etmelisiniz.
Başlıksız tarayıcılar javascript kodu ile çalışır mı?
Çoğu durumda, başlıksız tarayıcılar javascript kodunu çalıştırırken sorun yaşamaz. Birçok web geliştiricisi, görevlerini otomatikleştirmek için başsız tarayıcıları kullanır ve hedeflerine ulaşmak için JavaScript için tam desteğe ihtiyaç duyar.
Tüm başsız tarayıcılar JavaScript'i desteklemediğinden, her birini araştırmanız ve özel ihtiyaçlarınızı karşılayıp karşılamayacaklarını belirlemeniz gerekir.
Bazı başsız sunucuların API'leri olduğu doğru mu?
Yes! Some headless servers have APIs which allow you to utilize them in different ways than simply loading websites through a proxy server. You can check what types of APIs any given headless browser offers by reading up on their documentation. This is a good way of determining whether or not you should use them with web scrapers, especially if a proxy API is available.
Hangi başsız tarayıcılar CSS seçicilerini destekler?
Headless Chrome currently supports CSS selectors, while PhantomJS’ WebKit engine does not. For more information on system dependencies, you can check out this website.
Neden tüm web kazıma araçları başlıksız tarayıcı olarak kabul edilmiyor?
Scrapy gibi web kazıma araçları, web sitelerinden veri kazımak için normal bir web tarayıcısının kullanıcı arayüzünü (UI) taklit eder. Ancak, bu araçlar sayfaları kendi pencerelerine yüklemediğinden, bunları başlıksız tarayıcılar olarak sınıflandırmıyoruz.
Mobil web sitelerini kazımak için başlıksız tarayıcıları kullanamayacağınız doğru mu?
Başlıksız tarayıcıların tüm web sitesi sayfalarında çalışması garanti edilmez, ancak çoğunu sorunsuz bir şekilde çalıştırabilirler. Mobil cihazlara özel siteler, sayfayı görüntüleyebilseler bile başsız sunucularda doğru şekilde yüklenmeme eğilimindedir.
Kendi başsız tarayıcılarımı test edebilir miyim?
Bunu yapabilmeniz gerekir, ancak başsız tarayıcının çalışacağının garantisi yoktur. Her headless sunucusu farklı işlev ve özelliklere sahip olduğundan, doğru şekilde çalışması için kendi aracınızı değiştirmeniz gerekebilir.
For a basic example, headless Chrome requires Javascript, while PhantomJS requires CORS headers for web pages to load correctly.
Başlıksız bir tarayıcı ile kazıma yaparken kullanabileceğim en iyi uygulamalar nelerdir?
Web kazımanın amacı genellikle formlara veya düğmelere manuel olarak herhangi bir web verisi girmeden tamamen veya kısmen erişilemeyen web sitelerinden veri çıkarmaktır.
If you’d like to learn more about how web scraping works, check out this article.
Başlıksız tarayıcınızı etik olarak kullanmalısınız. Tamamen veya kısmen erişilemeyen sayfalardan veri çekebilmek mutlaka kötü bir şey değildir. Ancak, site sahibi bunu yapmanızı istemiyorsa kötü olabilir.
Herhangi bir web sitesi sayfasını kazımadan önce tüm Hizmet Şartları ve Gizlilik Politikası sözleşmelerini iki kez kontrol ettiğinizden emin olun, çünkü bu şartlar önceden haber verilmeksizin değiştirilebilir.
Web kazıma için en iyi başsız tarayıcılar hangileridir?
Headless Chrome ve PhantomJS, kullanımı kolay ve nispeten hızlı oldukları için web kazıma için harika seçeneklerdir.
Neden bazı geliştiriciler normal bir tarayıcı yerine başlıksız bir tarayıcı kullanmayı tercih ediyor?
Bazen normal bir tarayıcı yerine başsız bir tarayıcı kullanmak gerekli veya daha uygun olabilir, ancak bu genellikle projenin özelliklerine bağlıdır. Örneğin, düzgün çalışması için Javascript gerektiren web sitelerinden veri kazımak istediğinizi varsayalım. Bu durumda, Headless Chrome ile normal Google Chrome'dan daha kolay zaman geçireceksiniz.
Headless Chrome, diğer benzer araçlara göre daha iyi izleme özellikleri sunar; birden fazla projeyle çalışırken faydalıdır.