Node.js | Puppeteer & Express Kullanımı

Roichue

Asistan Moderatör
31 Mar 2022
1,307
839
Millî İstihbarat Teşkilatı
Öncelikle konuya hoş geldiniz. Bu konuda basit Puppeteer ve Express'in ortak kullanımı hakkında bilgi verilicektir.
Bu ikisi sayesinde bir çok API hizmeti verebilirsiniz.

Node.js üzerinde çok kritik olan kütüphanelerdir Puppeteer ve Express.

Fazla vaktim olmadığı için biraz hızlı ve basit anlatım yapıldı. Şimdiden kusura bakmayınız.


Express Ne İşe Yarar?

Express bizim için sunucunun arka planında HTTP işlemlerini yürütür.
Gelen istekleri kolayca yönlendirebiliriz veya yönetebiliriz.

Puppeteer Ne İşe Yarar?


Puppeteer sayesinde web tarayıcılarını kolayca yönetebiliriz.
Bir veriyide kolayca çekebiliriz tarayıcı üzerinden.

*TANIMLAMALARA FAZLA EMEK VERMİYORUM. GOOGLE ÜZERİNDEN ARAŞTIRABİLİRSİNİZ.*

Express'ten bir Örnek:


JavaScript:
app.get('/kontrol', async (req, res) => {

Daha iyi anlamanız açısından örnek olarak bizim xxxx.com diye bir sitemiz bulunmaktadır.
Burası API dağıtacağımız bir site olsun.

Şöyle bir şey yapalım:

/kontrol kısmına gelen istekleri yani xxxx.com/kontrol kısmına gelen istekleri yönetelim.
Bir link değeri olsun ve bu linkte tiktok profil linki girili olsun. Bizde profil üzerinden profili fotoğrafını çekip isteğe cevap verelim.

Öncelikle app.js adında bir dosya açalım. Siz farklı bir ad üzerindende açabilirsiniz ben normal olarak açıyorum.


JavaScript:
const express = require('express');
const puppeteer = require('puppeteer');
const app = express();
const port = 3000;

app.get('/', async (req, res) => {
  res.sendFile(__dirname + '/index.html');
});

app.listen(port, () => {
  console.log(`http://localhost:${port}`);
});

Burda yaptığımız işlemler:

Paketlerimizi öncelikle tanımladık.
Uygulamamızı 3000 portunda çalıştırdık.

app.get('/', async (req, res) => { - EĞER KULLANICI XXXX.COM GİRERSE
- Bu kısımda gördüğünüz gibi şöyle bir kısım var: res.sendFile(__dirname + '/index.html'); - KULLANICIYA İNDEX.HTML DOSYASINI GÖRÜNTÜLE

Bu kısımda gördüğünüz gibi gelen bir http isteğini yönlendirdik. Siteye giren kullanıcıya index.html dosyasını görüntülettik.


Express ve Puppeteer ile TikTok Kullanıcı Bilgileri Çekme

Örnek olarak ben bir API hizmeti açtım. Sorgu başına 0.50TL alacağım.
Bir kişi bize istek yolladığı zaman belirtilen kullanıcının profil bilgilerini alalım.

Şimdi daha iyi anlayacaksınızdır:


JavaScript:
app.get('/kontrol', async (req, res) => {

//PUPPETEER HAZIRLIKLARI
      const browser = await puppeteer.launch({
        headless: true
      });
      const page = await browser.newPage()
//PUPPETEER HAZIRLIKLARI

      const kontrolURL = req.query.link

      await page.goto(kontrolURL)

      const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';
      await page.waitForXPath(selector);

      const handle = await page.$x(selector);
      const text = await page.evaluate(element => element.textContent, handle[0]);

      await browser.close();

      res.json({ result: text });
  });

Burda /kontrol üzerine gelen istekleri yönetiyoruz.
Fark ettiyseniz kodumuz da şöyle bir bölüm vardır,

const kontrolURL = req.query.link

Bu kısımda şunu yapıyoruz:

Örnek olarak müşterimiz bizim sitemize şöyle bir istek yolladı, xxxx.com[/URL]
/kontrol?link=Roichue

KontrolURL bu sonunda ki veriyi alabilmemizi sağlar. Peki bu işlemleri bunu linkte göstermeden yapabilir miyiz? Tabi ki evet.
Bunun için session kullanmak gerekir fakat onu şimdi anlatmayacağım konumuz bu değildir.

await page.goto(kontrolURL) - Bu kısımda link kısmına girilen URL'ye gidiyoruz.
TikTok profil linki gibi düşünün tarayıcımız açıldı puppeteer sayesinde ve belirtilen profil linkine giriyoruz.


JavaScript:
const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';
      await page.waitForXPath(selector);

      const handle = await page.$x(selector);
      const text = await page.evaluate(element => element.textContent, handle[0]);

      await browser.close();

      res.json({ result: text }); //BU KISIMDA İSTEĞE CEVAP VERİYORUZ.


Bu kısım bizim için Puppeteer tarafında çok önemlidir. Bu kısımda TikTok kullanıcı adını çekiyoruz.

Nasıl?

Örnek olarak bize gelen linkte bir TikTok profil linki var.
Ben bu linkten kullanıcı adını çekmek istiyorum.


(Siz kendiniz, Takipçi sayısını vb. her şeyi çekebilirsiniz göstereceğim şimdi)

7dpsht1.jpg


Herhangi bir TikTok profiline giriyoruz.
Kullanıcı adını çekmek istiyorsak, kullanıcı adına sağ tıklıyoruz ve inceliyoruz.

p688i53.jpg


İnceleme bölümüne geldikten sonra:

Elemente sağ tıklayınız Copy > Copy full XPath tıklayınız.
XPath sayesinde artık kullanıcı adını çekebileceğiz.

JavaScript:
const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';

Artık gördüğünüz gibi kodumuz hazır.
Kontrol kısmına link ile bir istek geldiği zaman tiktok kullanıcı adını cevap olarak geri vericektir.

Kodun sorun yaratmaması için Try Catch işlemi yapıyoruz:


JavaScript:
app.get('/kontrol', async (req, res) => {
    try {
      const browser = await puppeteer.launch({
        headless: true
      });
      const page = await browser.newPage()

      const kontrolURL = req.query.link

      await page.goto(kontrolURL)

      const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';
      await page.waitForXPath(selector);

      const handle = await page.$x(selector);
      const text = await page.evaluate(element => element.textContent, handle[0]);

      await browser.close();

      res.json({ result: text });
    } catch (error) {
      console.error(error);
      res.status(500).json({ error: 'hata' });

    }
  });

Bir frontend yaparak bu işlemleri deneme, yanılma ile daha iyi öğrenebilirsiniz.

Bu konuda NODE.JS ile sunucu taraflı işlemleri yaptık.
Gelen HTTP isteklerini yönettik.

Bu arada kodunuz tamamen bittiğinde headless'i false üzerinde çalıştırmanız daha iyi olucaktır.
İşlem yaparken tarayıcının açık olmasını veya arka planda çalışmasını sağlar.

True mod genellikle geliştirilme yapılırken kullanılır.

Hayırlı forumlar dilerim.

BdExlJ.gif
 
Son düzenleme:

ByFelez

Uzman üye
9 Tem 2013
1,818
1,774
Öncelikle konuya hoş geldiniz. Bu konuda basit Puppeteer ve Express'in ortak kullanımı hakkında bilgi verilicektir.
Bu ikisi sayesinde bir çok API hizmeti verebilirsiniz.

Node.js üzerinde çok kritik olan kütüphanelerdir Puppeteer ve Express.

Fazla vaktim olmadığı için biraz hızlı ve basit anlatım yapıldı. Şimdiden kusura bakmayınız.


Express Ne İşe Yarar?

Express bizim için sunucunun arka planında HTTP işlemlerini yürütür.
Gelen istekleri kolayca yönlendirebiliriz veya yönetebiliriz.

Puppeteer Ne İşe Yarar?


Puppeteer sayesinde web tarayıcılarını kolayca yönetebiliriz.
Bir veriyide kolayca çekebiliriz tarayıcı üzerinden.

*TANIMLAMALARA FAZLA EMEK VERMİYORUM. GOOGLE ÜZERİNDEN ARAŞTIRABİLİRSİNİZ.*

Express'ten bir Örnek:


JavaScript:
app.get('/kontrol', async (req, res) => {

Daha iyi anlamanız açısından örnek olarak bizim xxxx.com diye bir sitemiz bulunmaktadır.
Burası API dağıtacağımız bir site olsun.

Şöyle bir şey yapalım:

/kontrol kısmına gelen istekleri yani xxxx.com/kontrol kısmına gelen istekleri yönetelim.
Bir link değeri olsun ve bu linkte tiktok profil linki girili olsun. Bizde profil üzerinden profili fotoğrafını çekip isteğe cevap verelim.

Öncelikle app.js adında bir dosya açalım. Siz farklı bir ad üzerindende açabilirsiniz ben normal olarak açıyorum.


JavaScript:
const express = require('express');
const puppeteer = require('puppeteer');
const app = express();
const port = 3000;

app.get('/', async (req, res) => {
  res.sendFile(__dirname + '/index.html');
});

app.listen(port, () => {
  console.log(`http://localhost:${port}`);
});

Burda yaptığımız işlemler:

Paketlerimizi öncelikle tanımladık.
Uygulamamızı 3000 portunda çalıştırdık.

app.get('/', async (req, res) => { - EĞER KULLANICI XXXX.COM GİRERSE
- Bu kısımda gördüğünüz gibi şöyle bir kısım var: res.sendFile(__dirname + '/index.html'); - KULLANICIYA İNDEX.HTML DOSYASINI GÖRÜNTÜLE

Bu kısımda gördüğünüz gibi gelen bir http isteğini yönlendirdik. Siteye giren kullanıcıya index.html dosyasını görüntülettik.


Express ve Puppeteer ile TikTok Kullanıcı Bilgileri Çekme

Örnek olarak ben bir API hizmeti açtım. Sorgu başına 0.50TL alacağım.
Bir kişi bize istek yolladığı zaman belirtilen kullanıcının profil bilgilerini alalım.

Şimdi daha iyi anlayacaksınızdır:


JavaScript:
app.get('/kontrol', async (req, res) => {

//PUPPETEER HAZIRLIKLARI
      const browser = await puppeteer.launch({
        headless: true
      });
      const page = await browser.newPage()
//PUPPETEER HAZIRLIKLARI

      const kontrolURL = req.query.link

      await page.goto(kontrolURL)

      const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';
      await page.waitForXPath(selector);

      const handle = await page.$x(selector);
      const text = await page.evaluate(element => element.textContent, handle[0]);

      await browser.close();

      res.json({ result: text });
  });

Burda /kontrol üzerine gelen istekleri yönetiyoruz.
Fark ettiyseniz kodumuz da şöyle bir bölüm vardır,

const kontrolURL = req.query.link

Bu kısımda şunu yapıyoruz:

Örnek olarak müşterimiz bizim sitemize şöyle bir istek yolladı, xxxx.com[/URL]
/kontrol?link=Roichue

KontrolURL bu sonunda ki veriyi alabilmemizi sağlar. Peki bu işlemleri bunu linkte göstermeden yapabilir miyiz? Tabi ki evet.
Bunun için session kullanmak gerekir fakat onu şimdi anlatmayacağım konumuz bu değildir.

await page.goto(kontrolURL) - Bu kısımda link kısmına girilen URL'ye gidiyoruz.
TikTok profil linki gibi düşünün tarayıcımız açıldı puppeteer sayesinde ve belirtilen profil linkine giriyoruz.


JavaScript:
const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';
      await page.waitForXPath(selector);

      const handle = await page.$x(selector);
      const text = await page.evaluate(element => element.textContent, handle[0]);

      await browser.close();

      res.json({ result: text }); //BU KISIMDA İSTEĞE CEVAP VERİYORUZ.


Bu kısım bizim için Puppeteer tarafında çok önemlidir. Bu kısımda TikTok kullanıcı adını çekiyoruz.

Nasıl?

Örnek olarak bize gelen linkte bir TikTok profil linki var.
Ben bu linkten kullanıcı adını çekmek istiyorum.


(Siz kendiniz, Takipçi sayısını vb. her şeyi çekebilirsiniz göstereceğim şimdi)

7dpsht1.jpg


Herhangi bir TikTok profiline giriyoruz.
Kullanıcı adını çekmek istiyorsak, kullanıcı adına sağ tıklıyoruz ve inceliyoruz.

p688i53.jpg


İnceleme bölümüne geldikten sonra:

Elemente sağ tıklayınız Copy > Copy full XPath tıklayınız.
XPath sayesinde artık kullanıcı adını çekebileceğiz.

JavaScript:
const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';

Artık gördüğünüz gibi kodumuz hazır.
Kontrol kısmına link ile bir istek geldiği zaman tiktok kullanıcı adını cevap olarak geri vericektir.

Kodun sorun yaratmaması için Try Catch işlemi yapıyoruz:


JavaScript:
app.get('/kontrol', async (req, res) => {
    try {
      const browser = await puppeteer.launch({
        headless: true
      });
      const page = await browser.newPage()

      const kontrolURL = req.query.link

      await page.goto(kontrolURL)

      const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';
      await page.waitForXPath(selector);

      const handle = await page.$x(selector);
      const text = await page.evaluate(element => element.textContent, handle[0]);

      await browser.close();

      res.json({ result: text });
    } catch (error) {
      console.error(error);
      res.status(500).json({ error: 'hata' });

    }
  });

Bir frontend yaparak bu işlemleri deneme, yanılma ile daha iyi öğrenebilirsiniz.

Bu konuda NODE.JS ile sunucu taraflı işlemleri yaptık.
Gelen HTTP isteklerini yönettik.

Bu arada kodunuz tamamen bittiğinde headless'i false üzerinde çalıştırmanız daha iyi olucaktır.
İşlem yaparken tarayıcının açık olmasını veya arka planda çalışmasını sağlar.

True mod genellikle geliştirilme yapılırken kullanılır.

Hayırlı forumlar dilerim.

BdExlJ.gif
Eline emeğine sağlık cane
 

invisible blood

Uzman üye
15 Eyl 2023
1,177
443
Öncelikle konuya hoş geldiniz. Bu konuda basit Puppeteer ve Express'in ortak kullanımı hakkında bilgi verilicektir.
Bu ikisi sayesinde bir çok API hizmeti verebilirsiniz.

Node.js üzerinde çok kritik olan kütüphanelerdir Puppeteer ve Express.

Fazla vaktim olmadığı için biraz hızlı ve basit anlatım yapıldı. Şimdiden kusura bakmayınız.


Express Ne İşe Yarar?

Express bizim için sunucunun arka planında HTTP işlemlerini yürütür.
Gelen istekleri kolayca yönlendirebiliriz veya yönetebiliriz.

Puppeteer Ne İşe Yarar?


Puppeteer sayesinde web tarayıcılarını kolayca yönetebiliriz.
Bir veriyide kolayca çekebiliriz tarayıcı üzerinden.

*TANIMLAMALARA FAZLA EMEK VERMİYORUM. GOOGLE ÜZERİNDEN ARAŞTIRABİLİRSİNİZ.*

Express'ten bir Örnek:


JavaScript:
app.get('/kontrol', async (req, res) => {

Daha iyi anlamanız açısından örnek olarak bizim xxxx.com diye bir sitemiz bulunmaktadır.
Burası API dağıtacağımız bir site olsun.

Şöyle bir şey yapalım:

/kontrol kısmına gelen istekleri yani xxxx.com/kontrol kısmına gelen istekleri yönetelim.
Bir link değeri olsun ve bu linkte tiktok profil linki girili olsun. Bizde profil üzerinden profili fotoğrafını çekip isteğe cevap verelim.

Öncelikle app.js adında bir dosya açalım. Siz farklı bir ad üzerindende açabilirsiniz ben normal olarak açıyorum.


JavaScript:
const express = require('express');
const puppeteer = require('puppeteer');
const app = express();
const port = 3000;

app.get('/', async (req, res) => {
  res.sendFile(__dirname + '/index.html');
});

app.listen(port, () => {
  console.log(`http://localhost:${port}`);
});

Burda yaptığımız işlemler:

Paketlerimizi öncelikle tanımladık.
Uygulamamızı 3000 portunda çalıştırdık.

app.get('/', async (req, res) => { - EĞER KULLANICI XXXX.COM GİRERSE
- Bu kısımda gördüğünüz gibi şöyle bir kısım var: res.sendFile(__dirname + '/index.html'); - KULLANICIYA İNDEX.HTML DOSYASINI GÖRÜNTÜLE

Bu kısımda gördüğünüz gibi gelen bir http isteğini yönlendirdik. Siteye giren kullanıcıya index.html dosyasını görüntülettik.


Express ve Puppeteer ile TikTok Kullanıcı Bilgileri Çekme

Örnek olarak ben bir API hizmeti açtım. Sorgu başına 0.50TL alacağım.
Bir kişi bize istek yolladığı zaman belirtilen kullanıcının profil bilgilerini alalım.

Şimdi daha iyi anlayacaksınızdır:


JavaScript:
app.get('/kontrol', async (req, res) => {

//PUPPETEER HAZIRLIKLARI
      const browser = await puppeteer.launch({
        headless: true
      });
      const page = await browser.newPage()
//PUPPETEER HAZIRLIKLARI

      const kontrolURL = req.query.link

      await page.goto(kontrolURL)

      const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';
      await page.waitForXPath(selector);

      const handle = await page.$x(selector);
      const text = await page.evaluate(element => element.textContent, handle[0]);

      await browser.close();

      res.json({ result: text });
  });

Burda /kontrol üzerine gelen istekleri yönetiyoruz.
Fark ettiyseniz kodumuz da şöyle bir bölüm vardır,

const kontrolURL = req.query.link

Bu kısımda şunu yapıyoruz:

Örnek olarak müşterimiz bizim sitemize şöyle bir istek yolladı, xxxx.com[/URL]
/kontrol?link=Roichue

KontrolURL bu sonunda ki veriyi alabilmemizi sağlar. Peki bu işlemleri bunu linkte göstermeden yapabilir miyiz? Tabi ki evet.
Bunun için session kullanmak gerekir fakat onu şimdi anlatmayacağım konumuz bu değildir.

await page.goto(kontrolURL) - Bu kısımda link kısmına girilen URL'ye gidiyoruz.
TikTok profil linki gibi düşünün tarayıcımız açıldı puppeteer sayesinde ve belirtilen profil linkine giriyoruz.


JavaScript:
const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';
      await page.waitForXPath(selector);

      const handle = await page.$x(selector);
      const text = await page.evaluate(element => element.textContent, handle[0]);

      await browser.close();

      res.json({ result: text }); //BU KISIMDA İSTEĞE CEVAP VERİYORUZ.


Bu kısım bizim için Puppeteer tarafında çok önemlidir. Bu kısımda TikTok kullanıcı adını çekiyoruz.

Nasıl?

Örnek olarak bize gelen linkte bir TikTok profil linki var.
Ben bu linkten kullanıcı adını çekmek istiyorum.


(Siz kendiniz, Takipçi sayısını vb. her şeyi çekebilirsiniz göstereceğim şimdi)

7dpsht1.jpg


Herhangi bir TikTok profiline giriyoruz.
Kullanıcı adını çekmek istiyorsak, kullanıcı adına sağ tıklıyoruz ve inceliyoruz.

p688i53.jpg


İnceleme bölümüne geldikten sonra:

Elemente sağ tıklayınız Copy > Copy full XPath tıklayınız.
XPath sayesinde artık kullanıcı adını çekebileceğiz.

JavaScript:
const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';

Artık gördüğünüz gibi kodumuz hazır.
Kontrol kısmına link ile bir istek geldiği zaman tiktok kullanıcı adını cevap olarak geri vericektir.

Kodun sorun yaratmaması için Try Catch işlemi yapıyoruz:


JavaScript:
app.get('/kontrol', async (req, res) => {
    try {
      const browser = await puppeteer.launch({
        headless: true
      });
      const page = await browser.newPage()

      const kontrolURL = req.query.link

      await page.goto(kontrolURL)

      const selector = '/html/body/div[1]/div[2]/div[2]/div/div/div[1]/div[1]/div[2]/h1';
      await page.waitForXPath(selector);

      const handle = await page.$x(selector);
      const text = await page.evaluate(element => element.textContent, handle[0]);

      await browser.close();

      res.json({ result: text });
    } catch (error) {
      console.error(error);
      res.status(500).json({ error: 'hata' });

    }
  });

Bir frontend yaparak bu işlemleri deneme, yanılma ile daha iyi öğrenebilirsiniz.

Bu konuda NODE.JS ile sunucu taraflı işlemleri yaptık.
Gelen HTTP isteklerini yönettik.

Bu arada kodunuz tamamen bittiğinde headless'i false üzerinde çalıştırmanız daha iyi olucaktır.
İşlem yaparken tarayıcının açık olmasını veya arka planda çalışmasını sağlar.

True mod genellikle geliştirilme yapılırken kullanılır.

Hayırlı forumlar dilerim.

BdExlJ.gif
Elinize sağlık hocam👍.
 
Ü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.