Merhaba bir borsa sitesini Örnek: http://localhost:5012/ yazdığım zaman sorunsuz bir şekilde görmek için projem var ama cloudflare gibi güvenlikleri aşamadım kodlarım çok acemi olduğu için tamamen değiştirilebilir. Bu konularda bilgisi olanlardan hizmet almak istiyorum

const express = require('express');
const puppeteer = require('puppeteer');
const path = require('path');
const { siteUrl } = require('./config');
const app = express();
let browser, page;
// Tarayıcıyı başlat ve sayfayı hazırla
async function initBrowser() {
  if (!browser) {
    browser = await puppeteer.launch({
      headless: true,
      args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-gpu',
        '--disable-blink-features=AutomationControlled',
        '--disable-extensions',
        '--disable-infobars',
        '--disable-dev-shm-usage',
        '--disable-popup-blocking',
        '--start-maximized',
      ],
      executablePath: path.join(__dirname, 'chromedriver', 'chrome.exe'),
    });
    page = await browser.newPage();
    await page.setUserAgent(
      'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    );
    await page.setViewport({ width: 1280, height: 800 });
  }
}
// Sayfanın HTML içeriğini tam olarak yükle ve kaynak yollarını düzelt
async function fetchPageContent() {
  if (!page) throw new Error('Tarayıcı başlatılamadı!');
  // Siteye git ve tam yüklenmesini bekle
  await page.goto(siteUrl, { waitUntil: 'networkidle2', timeout: 60000 });
  // Dinamik içeriklerin yüklenmesini beklemek için manuel bekleme ekliyoruz
  await new Promise((resolve) => setTimeout(resolve, 2000)); // 2 saniye bekle
  // Kaynak yollarını düzelt
  const content = await page.evaluate((siteUrl) => {
    const fixUrl = (url) => {
      if (url.startsWith('/')) {
        return siteUrl + url;
      }
      return url;
    };
    document.querySelectorAll('img').forEach((img) => {
      img.src = fixUrl(img.src);
      if (img.srcset) {
        img.srcset = img.srcset
          .split(',')
          .map((item) => fixUrl(item.trim()))
          .join(', ');
      }
    });
    document.querySelectorAll('link').forEach((link) => {
      if (link.href) {
        link.href = fixUrl(link.href);
      }
    });
    document.querySelectorAll('script').forEach((script) => {
      if (script.src) {
        script.src = fixUrl(script.src);
      }
    });
    return document.documentElement.outerHTML;
  }, siteUrl);
  return content;
}
// Proxy rotası
app.get('/', async (req, res) => {
  try {
    await initBrowser(); // Tarayıcıyı başlat
    const modifiedPage = await fetchPageContent(); // Sayfa içeriğini al
    res.send(modifiedPage); // Tam sayfa içeriğini döndür
  } catch (error) {
    res.status(500).send('Bir hata oluştu: ' + error.message);
  }
});
// Sunucuyu başlat
app.listen(5012, () => {
  console.log('Proxy server running on [url]http://localhost:5012');[/url]
});
// Sunucu kapatıldığında tarayıcıyı kapat
process.on('SIGINT', async () => {
  if (browser) {
    await browser.close();
    console.log('Tarayıcı kapatıldı.');
  }
  process.exit();
});



Konu kilit: Farklı bir dilde projemi geliştiriyorum