Playwright اور Puppeteer کے ساتھ Proxies کا استعمال: Python اور Node (2026)

شائع کردہ 2 جون 2026 · ≈9 منٹ کا مطالعہ

Headless براؤزرز JavaScript رینڈر کرتے ہیں، اس لیے یہ ایسی جدید سائٹس کو سنبھال لیتے ہیں جنہیں سادہ HTTP کلائنٹس نہیں سنبھال سکتے۔ لیکن ایک براؤزر پھر بھی ہر درخواست ایک ہی IP سے بھیجتا ہے، اور جیسے ہی کوئی سائٹ اس ایڈریس پر rate-limit لگاتی ہے یا اس کی fingerprinting کرتی ہے، آٹومیشن پکڑی جاتی ہے۔ Playwright اور Puppeteer کے ساتھ proxies کا استعمال ٹریفک کو متعدد IPs میں پھیلا دیتا ہے اور، اگر صحیح طریقے سے کیا جائے، تو آپ کی آٹومیشن عام صارفین کی طرح دکھائی دیتی ہے۔ یہاں دونوں کے لیے کام کرنے والی سیٹ اپ ہے، Python اور Node میں۔

Playwright کے ساتھ ایک Proxy (Python)

براؤزر لانچ کے وقت proxy سیٹ کریں۔ تصدیق کو الگ username اور password فیلڈز کے طور پر پاس کریں — کریڈینشلز کو server URL میں inline نہ کریں:

from playwright.sync_api import sync_playwright

PROXY = {
    "server": "http://gate.jibaoproxy.com:10001",
    "username": "USERNAME",
    "password": "PASSWORD",
}

with sync_playwright() as p:
    browser = p.chromium.launch(proxy=PROXY, headless=True)
    page = browser.new_page()
    page.goto("https://httpbin.org/ip")
    print(page.inner_text("body"))
    browser.close()

JIBAO گیٹ وے پر HTTP اور SOCKS5 دونوں فراہم کرتا ہے۔ براؤزر آٹومیشن کے لیے HTTP endpoint استعمال کریں: Playwright اور Puppeteer تصدیق شدہ SOCKS5 proxies کو سپورٹ نہیں کرتے، اس لیے HTTP-with-auth قابلِ اعتماد انتخاب ہے۔

Playwright کے ساتھ ایک Proxy (Node)

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({
    headless: true,
    proxy: {
      server: 'http://gate.jibaoproxy.com:10001',
      username: 'USERNAME',
      password: 'PASSWORD',
    },
  });
  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  console.log(await page.innerText('body'));
  await browser.close();
})();

ہر براؤزر Context کے لیے IPs گھمائیں

Playwright میں گھمانے کا سب سے صاف طریقہ یہ ہے کہ ہر BrowserContext کے لیے ایک IP ہو۔ ہر context ایک الگ تھلگ سیشن ہوتا ہے (اپنے کوکیز اور کیش کے ساتھ)، اس لیے ہر ایک کو ایک مختلف exit IP سے باندھنے سے آپ کو ایک ہی براؤزر پروسیس سے متوازی شناختیں ملتی ہیں:

from playwright.sync_api import sync_playwright

def ctx_proxy(session_id):
    return {
        "server": "http://gate.jibaoproxy.com:10001",
        "username": f"USERNAME-session-{session_id}",
        "password": "PASSWORD",
    }

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    for i in range(3):
        context = browser.new_context(proxy=ctx_proxy(f"ctx{i}"))
        page = context.new_page()
        page.goto("https://httpbin.org/ip")
        print(i, page.inner_text("body"))
        context.close()
    browser.close()

ہر context ایک الگ sticky session ٹوکن استعمال کرتا ہے، اس لیے IP ایک context کے اندر مستحکم رہتا ہے (لاگ ان فلوز کے لیے اچھا) لیکن مختلف contexts میں مختلف ہوتا ہے (متوازی طور پر کئی اکاؤنٹس چلانے کے لیے اچھا)۔ یہی وہ پیٹرن ہے جسے GoLogin اور Dolphin Anty جیسے anti-detect براؤزرز خودکار بناتے ہیں — ہماری anti-detect proxy سیٹ اپ گائیڈ دیکھیں۔

Puppeteer کے ساتھ ایک Proxy (Node)

Puppeteer proxy server کو ایک Chromium لانچ فلیگ کے طور پر سیٹ کرتا ہے، پھر page آبجیکٹ پر تصدیق کرتا ہے:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: 'new',
    args: ['--proxy-server=http://gate.jibaoproxy.com:10001'],
  });
  const page = await browser.newPage();
  await page.authenticate({ username: 'USERNAME', password: 'PASSWORD' });

  await page.goto('https://httpbin.org/ip');
  console.log(await page.evaluate(() => document.body.innerText));
  await browser.close();
})();

چونکہ proxy ایک process-level فلیگ ہے، اس لیے ایک Puppeteer براؤزر ایک ہی IP استعمال کرتا ہے۔ گھمانے کے لیے، ہر شناخت کے لیے ایک نیا براؤزر لانچ کریں (زیادہ بھاری) یا ایسے گیٹ وے کے ذریعے گھمائیں جو ہر کنکشن پر IPs تبدیل کرتا ہے۔

لاگ ان فلوز کے لیے Sticky Sessions

کوئی بھی فلو جو سیشن کوکی بناتا ہے اسے اپنی پوری زندگی کے لیے وہی IP برقرار رکھنا چاہیے۔ IP-A پر بنی ایک کوکی جو اچانک IP-B سے ظاہر ہوتی ہے، session hijacking کے طور پر پڑھی جاتی ہے اور دوبارہ تصدیق یا پابندی کو متحرک کرتی ہے۔ ہر لاگ ان شدہ اکاؤنٹ کے لیے ایک context (یا ایک براؤزر) رکھیں، جو پورے سیشن کے لیے ایک sticky session ٹوکن سے جڑا ہو۔

Fingerprint کو نہ بھولیں

ایک residential IP ضروری ہے لیکن کافی نہیں۔ سائٹس آپ کے براؤزر کا TLS/JA4 ہینڈ شیک، HTTP/2 فریم آرڈر، canvas، WebGL، اور navigator پراپرٹیز بھی پڑھتی ہیں۔ سادہ headless Chromium navigator.webdriver = true اور ایک headless fingerprint لیک کرتا ہے جو بہترین IP کو بھی شکست دے دیتا ہے۔ اسے stealth پلگ انز اور حقیقت پسندانہ لانچ فلیگز سے کم کریں:

// Node: puppeteer-extra + stealth
const puppeteer = require('puppeteer-extra');
const Stealth = require('puppeteer-extra-plugin-stealth');
puppeteer.use(Stealth());

// Realistic launch flags
const browser = await puppeteer.launch({
  headless: 'new',
  args: [
    '--proxy-server=http://gate.jibaoproxy.com:10001',
    '--disable-blink-features=AutomationControlled',
    '--window-size=1920,1080',
  ],
});

یہ بالکل دیکھنے کے لیے کہ آپ کون سے سگنلز لیک کر رہے ہیں، اپنے خودکار براؤزر کو JIBAO کے مفت JA3/JA4 fingerprint چیکر کے خلاف چلائیں۔ یہ سمجھنے کے گہرے میکانکس کے لیے کہ ہینڈ شیکس کیوں فلیگ ہوتے ہیں، TLS fingerprinting کو بائی پاس کرنا اور مکمل Cloudflare بائی پاس ریسپی پڑھیں۔

تصدیق اور ڈیبگ

اپنی براؤزر آٹومیشن کو طاقت دیں

500MB مفت ٹریفک اور residential IPs حاصل کریں جو Playwright اور Puppeteer کو پابندی کی فہرست سے دور رکھتے ہیں۔

مفت ٹرائل شروع کریں

تمام IP پروڈکٹس کے لیے · ہر وقت دستیاب نوڈز کا وسیع پول

ابھی رجسٹر کریں اور ری چارج پر 100% تک کیش بیک حاصل کریں

نئے صارفین کو سائن اپ پر 500MB ملتے ہیں، اس کے علاوہ پہلے ری چارج پر بونس۔ پیشکش محدود وقت کے لیے ہے۔