Playwright और Puppeteer के साथ प्रॉक्सी का उपयोग: Python और Node (2026)

2 जून 2026 को प्रकाशित · ≈9 मिनट पढ़ें

Headless ब्राउज़र JavaScript रेंडर करते हैं, इसलिए वे आधुनिक साइटों को संभालते हैं जिन्हें सादे HTTP क्लाइंट नहीं संभाल सकते। पर एक ब्राउज़र अब भी हर अनुरोध एक IP से भेजता है, और जैसे ही कोई साइट उस पते को rate-limit करती है या फ़िंगरप्रिंट करती है, ऑटोमेशन पकड़ा जाता है। Playwright और Puppeteer के साथ प्रॉक्सी का उपयोग करना ट्रैफ़िक को कई IP पर फैलाता है और, सही ढंग से किया जाए तो, आपके ऑटोमेशन को सामान्य उपयोगकर्ताओं जैसा बना देता है। यहाँ दोनों के लिए काम करने वाला सेटअप है, Python और Node में।

प्रॉक्सी के साथ Playwright (Python)

प्रॉक्सी को ब्राउज़र launch पर सेट करें। प्रमाणीकरण को अलग username और password फ़ील्ड के रूप में पास करें — server URL में क्रेडेंशियल इनलाइन न करें:

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 प्रॉक्सी का समर्थन नहीं करते, इसलिए HTTP-with-auth विश्वसनीय विकल्प है।

प्रॉक्सी के साथ Playwright (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 पर IP रोटेट करें

Playwright में रोटेट करने का सबसे साफ़ तरीका है प्रति BrowserContext एक IP। हर context एक अलग session है (अपनी स्वयं की cookies और cache), इसलिए हर को एक अलग 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 प्रॉक्सी सेटअप गाइड

प्रॉक्सी के साथ Puppeteer (Node)

Puppeteer प्रॉक्सी server को एक Chromium launch फ़्लैग के रूप में सेट करता है, फिर 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();
})();

क्योंकि प्रॉक्सी एक प्रोसेस-स्तरीय फ़्लैग है, एक एकल Puppeteer ब्राउज़र एक IP का उपयोग करता है। रोटेट करने के लिए, प्रति पहचान एक नया ब्राउज़र launch करें (भारी) या एक ऐसे गेटवे के ज़रिए रोटेशन चलाएँ जो प्रति कनेक्शन IP बदलता है।

लॉगिन फ़्लो के लिए Sticky Sessions

कोई भी फ़्लो जो एक session cookie बनाता है उसे अपने पूरे जीवन के लिए वही IP रखना चाहिए। IP-A पर बनी एक cookie जो अचानक IP-B से दिखाई देती है, session hijacking जैसी पढ़ी जाती है और एक re-auth या एक बैन ट्रिगर करती है। पूरे session के लिए प्रति लॉग-इन अकाउंट एक context (या एक ब्राउज़र) रखें, एक sticky session टोकन से पिन किया हुआ।

फ़िंगरप्रिंट को न भूलें

एक रेज़िडेंशियल IP ज़रूरी है पर पर्याप्त नहीं। साइटें आपके ब्राउज़र का TLS/JA4 handshake, HTTP/2 फ़्रेम क्रम, canvas, WebGL, और navigator गुण भी पढ़ती हैं। वैनिला headless Chromium navigator.webdriver = true और एक headless फ़िंगरप्रिंट लीक करता है जो सबसे अच्छे IP को भी हरा देता है। stealth plugins और यथार्थवादी launch फ़्लैग से इसे कम करें:

// 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 फ़िंगरप्रिंट चेकर के विरुद्ध चलाएँ। handshakes क्यों फ़्लैग होते हैं इसके गहरे यंत्रशास्त्र के लिए, पढ़ें TLS फ़िंगरप्रिंटिंग को बायपास करना और पूरी Cloudflare बायपास रेसिपी

सत्यापित करें और डीबग करें

अपने ब्राउज़र ऑटोमेशन को सशक्त बनाएँ

500MB मुफ़्त ट्रैफ़िक क्रेडिट और रेज़िडेंशियल IP पाएँ जो Playwright और Puppeteer को बैन सूची से दूर रखते हैं।

मुफ़्त ट्रायल शुरू करें

सभी IP प्रोडक्ट्स के लिए · किसी भी समय उपलब्ध नोड्स का विशाल पूल

अभी साइन अप करें और अपने रिचार्ज पर 100% तक का रिबेट पाएं

नए यूज़र्स को साइन अप पर 500MB मिलते हैं, साथ ही पहली रिचार्ज पर बोनस। सीमित समय की पेशकश।