const browser =
await chromium.launch(); সেশন বিনামূল্যে — মূল্য দিন শুধু ট্রাফিকের জন্য
Playwright ক্লাউডে চালান
আপনার Playwright স্ক্রিপ্ট ও টেস্টগুলো Floppydata ক্লাউডে চলা Chromium-এর দিকে নির্দেশ করুন। একটি API রিকোয়েস্ট ব্রাউজার চালু করে, connectOverCDP() তাতে কানেক্ট করে, আর আপনার বাকি কোড যেমন আছে তেমনই থাকে।
- connectOverCDP() দিয়ে কানেক্ট করুন — কোনো ব্রাউজার ইনস্টল করতে হবে না
- Node.js, Python এবং Playwright Test
- Floppydata প্রক্সির সাথে বিনামূল্যে — আপনি শুধু ট্রাফিকের জন্য পেমেন্ট করেন
কীভাবে Playwright ক্লাউডে চালাবেন
একটি API রিকোয়েস্টে সেশন তৈরি করুন, তারপর এর connectUrl Playwright-কে দিন। উদাহরণটি আমাদের ডকুমেন্টেশনের Cloud Browser গাইড অনুসরণ করে।
তিনটি ধাপ
- 1 আপনার Floppydata অ্যাকাউন্টে একটি Client API key তৈরি করুন।
- 2 POST /v2/browser/sessions পাঠান। রেসপন্সে একটি connectUrl থাকে।
- 3 এটি connectOverCDP()-তে দিন এবং স্বাভাবিকভাবে কাজ করুন। ব্রাউজার বন্ধ করলে সেশন থেমে যায়।
import { chromium } from 'playwright';const res = await fetch('https://api.floppydata.net/v2/browser/sessions', { method: 'POST', headers: { 'X-Api-Key': process.env.FLOPPY_API_KEY, 'Content-Type': 'application/json', }, body: JSON.stringify({ proxy: { type: 'residential', location: { countryCode: 'US' } }, }),});const { connectUrl } = await res.json();const browser = await chromium.connectOverCDP(connectUrl);const page = await browser.contexts()[0].newPage();await page.goto('https://example.com/');console.log(await page.title());await browser.close(); // stops the session import os, requestsfrom playwright.sync_api import sync_playwrightsession = requests.post( 'https://api.floppydata.net/v2/browser/sessions', headers={'X-Api-Key': os.environ['FLOPPY_API_KEY']}, json={'proxy': { 'type': 'residential', 'location': {'countryCode': 'US'}, }},).json()with sync_playwright() as p: browser = p.chromium.connect_over_cdp(session['connectUrl']) page = browser.contexts[0].new_page() page.goto('https://example.com/') print(page.title()) browser.close() import { test as base, expect, chromium } from '@playwright/test';const SESSIONS_URL = 'https://api.floppydata.net/v2/browser/sessions';const test = base.extend({ page: async ({}, use) => { const res = await fetch(SESSIONS_URL, { method: 'POST', headers: { 'X-Api-Key': process.env.FLOPPY_API_KEY, 'Content-Type': 'application/json', }, body: '{}', }); const { connectUrl } = await res.json(); const browser = await chromium.connectOverCDP(connectUrl); await use(await browser.contexts()[0].newPage()); await browser.close(); },});test('home page loads', async ({ page }) => { await page.goto('https://example.com/'); await expect(page.locator('h1')).toBeVisible();}); সেশন তৈরি, কানেক্ট, পেজ খোলা।
লোকাল Playwright থেকে ক্লাউড Playwright
লোকালি প্রতিটি Playwright worker নিজের Chromium চালু করে। টেস্ট স্যুট বা স্ক্র্যাপার বড় হলে এই ব্রাউজারগুলো CPU ও মেমরির জন্য প্রতিযোগিতা করে, আর প্রতিটি CI রানারকে আগে সেগুলো ডাউনলোড করতে হয়।
Floppydata Cloud Browser-এ Chromium রিমোটলি চলে। আপনার কোড Chrome DevTools Protocol দিয়ে কানেক্ট করে, তাই আপনার দিকে playwright-core-ই যথেষ্ট, আর প্রতিটি রান নিজস্ব ব্রাউজার সেশন পায়।
const browser =
await chromium.connectOverCDP(connectUrl); এই লাইনের পরের সবকিছু আগের মতোই থাকে। connectUrl আসে ওপরের সেশন তৈরির রিকোয়েস্ট থেকে।
বিল্ট-ইন প্রক্সি সহ Playwright
প্রতিটি সেশন Floppydata প্রক্সির মধ্য দিয়ে চলে, তাই Playwright-এ কোনো প্রক্সি সার্ভার সেট আপ করতে হয় না। IP-এর ধরন, দেশ ও রোটেশন বেছে নিন, আর ফলাফলটি সেশন তৈরির রিকোয়েস্টের বডি হিসেবে পাঠান।
আপনার Playwright ক্লাউড সেশন কনফিগার করুন
{
"proxy": {
"type": "residential",
"location": {
"countryCode": "US"
},
"rotation": {
"mode": "sticky"
}
}
} একই রিকোয়েস্টে শহর, স্টেট বা ASN-ও বেছে নেওয়া যায়। আবাসিক IP আছে 148টি দেশে, মোবাইল 150টিতে এবং ডেটাসেন্টার 71টিতে।
লোকাল বনাম ক্লাউড Playwright
| লোকাল Playwright | Cloud Browser-এ Playwright | |
|---|---|---|
| Chromium | প্রতিটি মেশিনে ইনস্টল ও আপডেট করতে হয় | Floppydata ক্লাউডে চলে |
| CI-তে ব্রাউজার | প্রতিটি রানারে ডাউনলোড হয় | দরকার নেই: playwright-core-ই যথেষ্ট |
| প্রক্সি | প্রতিটি লঞ্চে আপনাকেই সেট আপ করতে হয় | বিল্ট-ইন: আবাসিক, মোবাইল বা ডেটাসেন্টার |
| সমান্তরাল ব্রাউজার | আপনার CPU ও RAM দিয়ে সীমিত | প্রতি অ্যাকাউন্টে 100টি পর্যন্ত সেশন |
| ব্রাউজারের খরচ | আপনার সার্ভারের সময় | বিনামূল্যে: শুধু প্রক্সি ট্রাফিকের বিল হয় |
| কানেকশন | Playwright প্রোটোকল, যেকোনো ব্রাউজার ইঞ্জিন | connectOverCDP() দিয়ে CDP, শুধু Chromium |
connectOverCDP() বেশিরভাগ স্ক্রিপ্ট যা করে তা কভার করে (নেভিগেশন, লোকেটর, ক্লিক, ফর্ম, অপেক্ষা ও JavaScript), তবে এটি পূর্ণ Playwright প্রোটোকল নয়। অস্বাভাবিক কিছু নিজের স্ক্রিপ্টে যাচাই করে নিন।
প্রতিটি সেশন স্কেল ও কাস্টমাইজ করুন
প্রতিটি সেটিং সেশন তৈরির রিকোয়েস্টের একটি ঐচ্ছিক ফিল্ড: শুধু দরকারিগুলো পাঠান, অথবা কিছুই না পাঠিয়ে পান একটি আবাসিক প্রক্সি, সামঞ্জস্যপূর্ণ ফিঙ্গারপ্রিন্ট এবং 10 মিনিটের টাইমআউট।
-
সমান্তরাল রান: এক অ্যাকাউন্টে একসাথে 100টি পর্যন্ত সেশন, অনুরোধে আরও বেশি
-
ফিঙ্গারপ্রিন্ট: OS, লোকেল, টাইমজোন, হার্ডওয়্যার, এবং canvas, WebGL ও WebRTC মাস্কিং
-
রানটাইম: 1 মিনিট থেকে 6 ঘণ্টা, keepAlive চালু থাকলে আবার কানেক্টসহ
-
সংরক্ষিত অবস্থা: একটি ব্রাউজার পরিচয় ও তার কুকি বিভিন্ন সেশনে আবার ব্যবহার করুন
-
Start URLs: লঞ্চের সময় এক বা একাধিক পেজ খুলুন, প্রতিটি আলাদা ট্যাবে
-
Metadata: সেশনে নিজের কাজের ID ট্যাগ করুন, যাতে লগের সাথে মেলাতে পারেন
লাইভ ব্রাউজারে Playwright রান ডিবাগ করুন
কোনো স্ক্রিপ্ট যদি অপ্রত্যাশিত স্ক্রিনে থেমে যায়, যেমন কনসেন্ট ব্যানার বা লগইনের বাড়তি ধাপ, তাহলে নিজের ব্রাউজারে সেশনের লাইভ ভিউ খুলে দেখুন পেজটি ঠিক কী দেখাচ্ছে।
Playwright ও লাইভ ভিউ একই সেশন পালা করে ব্যবহার করে, তাই রান নতুন করে শুরু না হয়ে যেখানে থেমেছিল সেখান থেকেই চলতে থাকে। UI মোড সম্পর্কে আরও
- 1 keepAlive: true দিয়ে সেশন তৈরি করুন, যাতে ডিসকানেক্ট করলে সেটি থেমে না যায়।
- 2 কোনো রান অপ্রত্যাশিত স্ক্রিনে থেমে গেলে Playwright ডিসকানেক্ট করুন।
- 3 লাইভ ভিউ অনুরোধ করে খুলুন: পেজটি দেখুন এবং হাতে সামলান।
- 4 সেশনটি আবার নিন এবং নতুন connectUrl দিয়ে Playwright আবার কানেক্ট করুন।
Floppydata প্রক্সি ব্যবহারকারীদের জন্য বিনামূল্যে
Cloud Browser-এ কোনো সাবস্ক্রিপশন, রানটাইম বা প্রতি-সেশন ফি নেই। প্রতিটি সেশন Floppydata প্রক্সির মধ্য দিয়ে চলে, আর আপনি শুধু সেটি যে প্রক্সি ট্রাফিক ব্যবহার করে তার জন্য পেমেন্ট করেন: প্রতি GB $1.00 থেকে, আবাসিক, মোবাইল ও ডেটাসেন্টারের জন্য একই রেট।
আপনি যদি আগে থেকেই Floppydata প্রক্সি কেনেন, Cloud Browser তার অন্তর্ভুক্ত: একই ব্যালান্স, একই API key। এক অ্যাকাউন্টে একসাথে 100টি পর্যন্ত সেশন চালান, অথবা লিমিট বাড়াতে সাপোর্টকে বলুন।
সাধারণ Playwright ক্লাউড কানেকশন ত্রুটি
কিছু ভুল হলে API বা কানেকশন কী জানায়, আর তখন কী করতে হবে।
| ত্রুটি | এর অর্থ | কী করবেন |
|---|---|---|
unauthorized | সাইন করা connectUrl-এর মেয়াদ শেষ হয়ে গেছে বা এটি অবৈধ। | সেশনটি আবার নিন এবং এর নতুন connectUrl দিয়ে কানেক্ট করুন। |
connection_in_use | অন্য কোনো ক্লায়েন্ট বা লাইভ ভিউ আগে থেকেই কানেক্ট করা আছে: প্রতি সেশনে একটিই কানেকশন চলে। | অন্য কানেকশনটি বন্ধ করুন, তারপর আবার চেষ্টা করুন। |
session_not_active | সেশনটি থেমে গেছে, মেয়াদ শেষ হয়েছে বা ব্যর্থ হয়েছে। | নতুন সেশন তৈরি করুন; দীর্ঘ কাজের জন্য runtime.timeoutSeconds বাড়ান। |
| কানেকশন বন্ধ হয়ে যায় | একটি মেসেজ প্রায় 1 MiB ছাড়িয়ে গেছে, যেমন পুরো পেজের স্ক্রিনশট বা স্ক্রিনকাস্টের একটি ফ্রেম। | ভিউপোর্ট বা কোনো এলিমেন্টের স্ক্রিনশট নিন, অথবা দরকারি অংশটি ক্রপ করুন। |
upstream_error | ব্রাউজার সার্ভিসের একটি অপারেশন ক্ষণিকের জন্য ব্যর্থ হয়েছে। | আবার চেষ্টা করুন: সেশন থামানো নিরাপদে বারবার করা যায়। |