Floppydata Floppydata

সেশন বিনামূল্যে — মূল্য দিন শুধু ট্রাফিকের জন্য

ওয়েব স্ক্র্যাপিংয়ের জন্য ক্লাউড ব্রাউজার

ক্লাউড ব্রাউজার সেশন পেজটি লোড করে ঠিক একজন প্রকৃত ভিজিটরের মতো, স্ক্রিপ্টসহ — আপনার কোড যখন পেজটি পড়ে, তখন কনটেন্ট আগে থেকেই সেখানে থাকে।

  • React, Vue ও Angular পেজ সম্পূর্ণ রেন্ডার হয় — কোনো ফাঁকা খোলস থাকে না
  • আবাসিক, মোবাইল বা ডেটাসেন্টার IP — স্টিকি বা রোটেটিং
  • Playwright ও Puppeteer — সাধারণত শুধু একটি লাইন বদলাতে হয়

ওয়েব স্ক্র্যাপিং

আপনার কোডই চালায়
ব্রাউজার।

HTML আনার বদলে CDP দিয়ে আমাদের Chromium-এর সঙ্গে সংযুক্ত হন। এটি প্রকৃত ভিজিটরের মতো পেজ লোড করে — সব JS, আমাদের প্রক্সি, বিশ্বাসযোগ্য ফিঙ্গারপ্রিন্টসহ — আর আপনি রেন্ডার হওয়া DOM পড়েন।

সাধারণ HTTP রিকোয়েস্টের বদলে কেন ক্লাউড ব্রাউজার ব্যবহার করবেন?

সাধারণ HTTP রিকোয়েস্ট সার্ভার যে HTML পাঠায় শুধু সেটুকুই নামিয়ে আনে, তার বেশি কিছু নয়। স্ট্যাটিক পেজের জন্য এটি ঠিকঠাক কাজ করে। কিন্তু আধুনিক ওয়েবের বেশিরভাগ ক্ষেত্রে এটি ব্যর্থ হয়, কারণ React, Vue বা Angular-এ তৈরি সাইট প্রথম রেসপন্সে কনটেন্ট পাঠায় না – JS চলার পর ব্রাউজারেই সেটি তৈরি করে। শুধু রিকোয়েস্টভিত্তিক স্ক্র্যাপার এমন পেজে চালালে একটি ফাঁকা কাঠামো ফিরে আসবে, আর আসল ডেটা পড়ে থাকবে এমন একটি বান্ডলের ভেতরে যা কেউ চালায়নি।

ক্লাউড ব্রাউজার সেশনে ওয়েব স্ক্র্যাপিং করলে এই সমস্যা এড়িয়ে যাওয়া যায়। পেজ লোড হয় প্রকৃত ভিজিটরের মতো, স্ক্রিপ্টসহ, আর আপনার কোড যখন সেটি পড়ে তখন কনটেন্ট আগে থেকেই থাকে। কোন এন্ডপয়েন্ট পেজে ডেটা দিচ্ছে তা আন্দাজ করতে হয় না, রিকোয়েস্টের প্যাটার্ন খুঁজতে বান্ডল ঘাঁটতে হয় না – সম্পূর্ণ ফলাফল তৈরি অবস্থায় নেওয়ার জন্য প্রস্তুত থাকে।

ব্রাউজার স্তরেই ব্লক ও অ্যান্টি-বট সুরক্ষা এড়িয়ে যাওয়া

আগে সঠিক হেডার পাঠালেই পেজ পাওয়া যেত। এখন আর তা নয় – একটি রিকোয়েস্ট আদৌ বাস্তব মনে হচ্ছে কি না তা ঠিক করার আগে সাইটগুলো কয়েক ডজন ছোট ছোট সিগন্যাল যাচাই করে:

ডায়নামিক JavaScript রেন্ডারিং ও সিঙ্গেল পেজ অ্যাপ্লিকেশন (SPA)

সিঙ্গেল পেজ অ্যাপ একবার লোড হয়, তারপর আপনি ক্লিক করার সঙ্গে সঙ্গে নিজেকে বদলে নেয় – ট্যাব খোলে, ফিল্টার প্রয়োগ হয়, ফলাফল রিফ্রেশ হয় – আর এর কিছুই প্রথম রেসপন্সে থাকে না। ক্লাউড ব্রাউজার একজন ভিজিটর যে প্রক্রিয়ার মধ্য দিয়ে যায় ঠিক সেটিই সম্পন্ন করে, তারপর পেজ স্থির হলে তা পড়ে। এই ধাপ বাদ দিলে ক্লায়েন্ট-সাইড নির্ভর যেকোনো সাইটে আশ্চর্যজনক পরিমাণ স্ক্র্যাপিং নীরবে ব্যর্থ হয়।

স্বয়ংক্রিয় CAPTCHA সমাধান ও ফিঙ্গারপ্রিন্ট ব্যবস্থাপনা

ফন্ট, ক্যানভাস আউটপুট, অডিও আচরণ, স্ক্রিনের আকার – সব মিলিয়ে তৈরি হয় একটি ফিঙ্গারপ্রিন্ট, আর একটি প্রকৃত ব্রাউজার কেমন দেখতে হওয়া উচিত তার সঙ্গে সেটি মিলিয়ে দেখা হয়। এতে গরমিল হলে সাইটগুলো দ্রুত সেটি চিহ্নিত করে, কখনও এক-দুটি রিকোয়েস্টের পরেই। একে অ্যান্টিডিটেক্ট ক্লাউড ব্রাউজার বলুন, অ্যান্টি-ডিটেক্ট সেটআপ বলুন বা শুধু আনডিটেক্টেবল মোড, কাজ একই: কাউকে হাতে কিছু করতে না হয়েই ফিঙ্গারপ্রিন্টকে বিশ্বাসযোগ্য রাখা। CAPTCHA সমাধানও সাধারণত একই সেশনের সঙ্গে চলে, তাই প্রতিবার CAPTCHA এলে কাজটিকে ম্যানুয়াল সমাধানের জন্য অপেক্ষা করে বসে থাকতে হয় না।

রোটেটিং প্রক্সির সঙ্গে ইন্টিগ্রেশন (আবাসিক ও ডেটাসেন্টার)

টার্গেট সাইট কতটা সংবেদনশীল তার ওপর নির্ভর করে একটি সেশন আবাসিক, মোবাইল বা ডেটাসেন্টার IP দিয়ে চলতে পারে। রোটেশন পুরো সেশনজুড়ে স্টিকি থাকতে পারে বা টাইমার অনুযায়ী বদলাতে পারে – আর এই সিদ্ধান্ত সত্যিই গুরুত্বপূর্ণ। লগইনের আড়ালে স্ক্র্যাপিংয়ে পুরো সময় একই IP দরকার, যাতে কুকি ও সেশন স্টেট অক্ষুণ্ণ থাকে। বড় পরিমাণে স্ক্র্যাপিংয়ে দরকার ঠিক উল্টোটা: রিকোয়েস্ট ছড়িয়ে দেওয়া, যাতে কোনো একটি অ্যাড্রেসের ওপর সব চাপ না পড়ে।

Playwright ও Puppeteer-এর সঙ্গে কাজ করে

এসবের জন্য আপনার বিদ্যমান স্ক্র্যাপিং কোড ফেলে দিতে হবে না। Playwright ও Puppeteer লোকাল Chrome বাইনারি চালু করার বদলে CDP দিয়ে সংযুক্ত হয়, আর বাকি সবকিছু – সিলেক্টর, ওয়েট, এক্সট্র্যাকশন – যেমন লেখা আছে তেমনই থাকে। দুই বছর আগে লোকাল হেডলেস Chrome-এর জন্য বানানো ক্রলারে সাধারণত একটি লাইন বদলাতে হয়, নতুন করে লিখতে হয় না।

  • Playwright
  • Puppeteer
  • Python
  • Node.js

কুইকস্টার্ট: সংযোগের জন্য উদাহরণ কোড

একটি সেশন চালু করতে কয়েক লাইনই যথেষ্ট:

সেশন খোলার সময় প্রক্সির ধরন ও দেশ যোগ করুন; স্ক্রিপ্টের বাকি অংশ লোকালি যেভাবে চলত, প্রায় তেমনই থাকে।

scrape.js
const browser = await chromium.connectOverCDP(connectUrl);const page = await browser.newPage();await page.goto('https://example.com');const data = await page.textContent('body');

দক্ষতার তুলনা: রিকোয়েস্ট বনাম ক্লাউড ব্রাউজার স্ক্র্যাপিং

ক্লাউড ব্রাউজার স্ক্র্যাপিংয়ে প্রতি পেজের খরচ সাধারণ রিকোয়েস্টের চেয়ে বেশি – এটা এড়ানোর উপায় নেই, কারণ পূর্ণাঙ্গ ব্রাউজার সেশন বেশি কাজ করে। দুটির প্রকৃত পার্থক্য যেখানে:

সাধারণ HTTP রিকোয়েস্ট ও Floppydata ক্লাউড ব্রাউজার স্ক্র্যাপিংয়ের তুলনা
সাধারণ HTTP রিকোয়েস্ট Floppydata ক্লাউড ব্রাউজার স্ক্র্যাপিং
JavaScript-রেন্ডার করা পেজ ফাঁকা ফিরে আসে প্রকৃত ভিজিটরের মতোই সম্পূর্ণ রেন্ডার হয়
প্রতি পেজের খরচ কম বেশি, তবে অপ্রয়োজনীয় রিসোর্স ব্লক করলে তা কমে আসে
লগইনের আড়ালের কনটেন্ট ধরে রাখার মতো কোনো সেশন নেই কুকি ও সেশন এক পেজ থেকে আরেক পেজে বজায় থাকে
অ্যান্টি-বট ফিঙ্গারপ্রিন্ট নেই, সহজেই চিহ্নিত হয় স্বয়ংক্রিয়ভাবে সামলানো হয়
ব্যান্ডউইথ সবকিছু লোড করে ছবি, ফন্ট ও CSS বাদ দিতে পারে

JavaScript ও বট সুরক্ষা ছাড়া স্ট্যাটিক কনটেন্টের ক্ষেত্রে খরচের দিক থেকে সাধারণ রিকোয়েস্টই এখনও এগিয়ে – যে পেজের ব্রাউজারের দরকারই নেই, তার জন্য পূর্ণাঙ্গ ব্রাউজার চালু করার কোনো কারণ নেই। এর বাইরে, শুধু রিকোয়েস্টভিত্তিক সেটআপে যেসব রিট্রাই, প্রক্সি ও ম্যানুয়াল প্যাচিং শেষ পর্যন্ত লাগেই, সেগুলো হিসাবে ধরলে ক্লাউড ব্রাউজার স্ক্র্যাপিং সাধারণত সস্তা পড়ে। টার্গেট সাইট সক্রিয়ভাবে বাধা দিতে শুরু করলে হিসাব খুব কমই রিকোয়েস্টের পক্ষে যায়।

অন্যান্য ক্লাউড ব্রাউজার সমাধান দেখুন