วิธีตั้งค่าพร็อกซีพร้อมยืนยันตัวตนใน Puppeteer (Node.js)

อัปเดตเมื่อ:

Puppeteer ควบคุม Chrome และ Chromium ผ่าน DevTools Protocol (CDP) และมี API ในตัวคือ await page.authenticate({ username, password }) เพื่อรับมือกับการยืนยันตัวตน HTTP 407 การจับคู่ --proxy-server=http://ip:port ร่วมกับ page.authenticate() ช่วยให้บอทสแครปข้อมูล Node.js ของคุณเชื่อมต่อผ่านพร็อกซีแบบคงที่ของ VinaProxy ได้อย่างราบรื่นโดยไม่ต้องติดตั้งส่วนขยายเบราว์เซอร์เสริม

Puppeteer · HTTP Proxy Format
--proxy-server=http://ip:port + page.authenticate({ username, password })
IPv4 ส่วนตัว (Datacenter)
🇺🇸 United States
มีสินค้า
เริ่มต้น
₫20,000 / IP / เดือน
≈ US$0.74 · ชำระเป็น VND
ส่วนลดตามจำนวนการสั่งซื้อ
  • 1 IP₫40,000
  • 5+ IP₫35,000
  • 10+ IP₫25,000
  • 20+ IP₫25,000
  • 50+ IP₫25,000
  • 100+ IP₫25,000
  • 200+ IP₫25,000
  • 500+ IP₫25,000
  • 1000+ IP₫22,000
  • 2000+ IP₫20,000
ซื้อ United States
IPv4 ส่วนตัว (Datacenter)
🇸🇬 Singapore
มีสินค้า
เริ่มต้น
₫20,000 / IP / เดือน
≈ US$0.74 · ชำระเป็น VND
ส่วนลดตามจำนวนการสั่งซื้อ
  • 1 IP₫40,000
  • 5+ IP₫35,000
  • 10+ IP₫25,000
  • 20+ IP₫25,000
  • 50+ IP₫25,000
  • 100+ IP₫25,000
  • 200+ IP₫25,000
  • 500+ IP₫25,000
  • 1000+ IP₫22,000
  • 2000+ IP₫20,000
ซื้อ Singapore
พร็อกซีตามแพลตฟอร์ม:web-scrapingseo-rank-trackingyoutube

ขั้นตอนการตั้งค่าพร็อกซีสองสเต็ปใน Puppeteer

ห้ามใส่ข้อมูล user:pass@ ในแฟล็กเปิดเบราว์เซอร์ --proxy-server โดยเด็ดขาด ให้ระบุเฉพาะโฮสต์และพอร์ตขณะเปิด แล้วค่อยยืนยันตัวตนบนอินสแตนซ์ Page:

ขั้นตอนโค้ดใน Puppeteerเหตุผลและความสำคัญทางเทคนิค
1. เปิด Chromiumpuppeteer.launch({ args: ['--proxy-server=http://ip:port'] })กำหนดให้การเชื่อมต่อเครือข่ายของ Chromium วิ่งตรงไปยังพร็อกซี VinaProxy
2. ยืนยันตัวตนบน Pageawait page.authenticate({ username, password })ส่งข้อมูลรับรองผ่าน CDP เมื่อเซิร์ฟเวอร์ส่งคำขอ HTTP 407
3. โหลดหน้าเว็บเป้าหมายawait page.goto(url, { waitUntil: 'domcontentloaded' })โหลดเนื้อหาผ่านทันเนลพร็อกซีที่มีการยืนยันตัวตนเรียบร้อยแล้ว

การสลับใช้งานหลายพร็อกซีข้ามแท็บด้วย proxy-chain

  • โปรดทราบว่า page.authenticate() มีผลเฉพาะในแท็บ Page นั้นๆ ดังนั้นจึงต้องเรียกใช้งานทุกครั้งในแท็บใหม่ที่สร้างจาก browser.newPage()
  • หากต้องการใช้งานพร็อกซีต่างกันในบริบทไม่ระบุตัวตน (incognito) บนโพรเซส Chromium เดียวกัน ให้ใช้แพ็กเกจ npm proxy-chain (anonymizeProxy()) ครอบ URL http://user:pass@ip:port แล้วส่งต่อไปยัง browser.createBrowserContext({ proxyServer })
  • สามารถทำงานร่วมกับ puppeteer-extra และปลั๊กอินหลบการตรวจจับ puppeteer-extra-plugin-stealth ได้อย่างสมบูรณ์แบบ

ขั้นตอนทีละขั้น

  1. 1

    ส่งพารามิเตอร์ --proxy-server ไปยัง puppeteer.launch()

    เริ่มต้นเบราว์เซอร์ด้วยคำสั่ง const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });

  2. 2

    เรียกใช้ await page.authenticate() บนหน้าแท็บใหม่

    เปิดแท็บด้วย const page = await browser.newPage(); แล้วเรียกคำสั่ง await page.authenticate({ username: 'USER', password: 'PASS' });

  3. 3

    ตรวจสอบหมายเลข IP ขาออก

    เรียกใช้ await page.goto('https://vinaproxy.com/api/my-ip'); และตรวจสอบข้อมูล JSON ที่ได้รับ

  4. 4

    ปิดโพรเซสเบราว์เซอร์เมื่อเสร็จสิ้น

    เมื่อทำงานเสร็จสิ้น ให้เรียกคำสั่ง await browser.close(); เพื่อคืนหน่วยความจำให้ระบบ

คำถามที่พบบ่อย

ทำไม Puppeteer ถึงแจ้งข้อผิดพลาด ERR_NO_SUPPORTED_PROXIES?

ข้อผิดพลาดนี้เกิดขึ้นเมื่อใส่ชื่อผู้ใช้และรหัสผ่านไว้ในแฟล็กเปิดเบราว์เซอร์ เช่น --proxy-server=http://user:pass@ip:port ให้ระบุเฉพาะ --proxy-server=http://ip:port แล้วส่งรหัสผ่านผ่าน await page.authenticate({ username, password }) แทน

ทำไมแท็บที่สองที่เปิดด้วย browser.newPage() ถึงเกิดข้อผิดพลาด HTTP 407?

เนื่องจาก page.authenticate() ผูกอยู่กับแท็บเดี่ยวๆ ดังนั้นต้องเรียกคำสั่ง await secondPage.authenticate({ username, password }) ก่อนส่งคำขอในแท็บใหม่ทุกครั้ง

พร็อกซี VinaProxy มีการจำกัดปริมาณข้อมูลสำหรับการสแครปด้วย headless Chrome หรือไม่?

ไม่มี ทุกแพ็กเกจ Dedicated IPv4 และ Static ISP ของ VinaProxy มาพร้อมแบนด์วิดท์ไม่จำกัดตลอดทั้งเดือน

เพิ่มศักยภาพระบบ Puppeteer ใน Node.js ด้วย IP แบบคงที่เฉพาะคุณ

Dedicated IPv4 และ Static ISP พร็อกซีความเร็วสูง ไม่จำกัดการใช้งาน ใน 7 ประเทศทั่วโลก

ซื้อพร็อกซีสำหรับ Puppeteer

บทความที่เกี่ยวข้อง

พร็อกซีตามแพลตฟอร์ม
พร็อกซีสำหรับ Web Scraping: พูล IPv4 และ ISP แบบเฉพาะไม่จำกัด สำหรับบอทดูดข้อมูล 24/7
พร็อกซี HTTP(S) IPv4 แบบเฉพาะและ ISP แบบคงที่ความเร็วสูงสำหรับ Python, Playwright, Selenium และ Scrapy พร้อมแบนด์วิดท์รายเดือนไม่จำกัด
วิธีตั้งค่าพร็อกซี
วิธีตั้งค่าพร็อกซีใน Playwright (การยืนยันตัวตนระดับเบราว์เซอร์และราย Context)
กำหนดค่า HTTP(S) proxy พร้อมการยืนยันตัวตนใน Playwright สำหรับ Node.js และ Python ใช้งานหลาย IP แบบคงที่แยกจากกันบน BrowserContext
วิธีตั้งค่าพร็อกซี
วิธีตั้งค่าพร็อกซีใน Node.js (Axios และ Native Fetch)
วิธีกำหนดค่า HTTP(S) proxy พร้อมการยืนยันตัวตนใน Node.js และ TypeScript โดยใช้ https-proxy-agent ร่วมกับ Axios และ Undici ProxyAgent บน native fetch
เครื่องมือฟรี
เครื่องมือแปลงรูปแบบพร็อกซีแบบกลุ่ม (ประมวลผลบนเบราว์เซอร์ ปลอดภัย 100%)
เครื่องมือจัดรูปแบบรายการพร็อกซีจำนวนมากบนเบราว์เซอร์ 100% แปลงระหว่าง ip:port:user:pass, user:pass@ip:port, http:// URL, SOCKS5 URI, JSON array และ FoxyProxy ได้ทันที
พร็อกซีตามแพลตฟอร์ม
พร็อกซีสำหรับ SEO และติดตามอันดับ SERP: แสดงอันดับคำค้นหาที่แม่นยำใน 7 ประเทศ
ติดตามอันดับคีย์เวิร์ดระดับท้องถิ่น ตรวจสอบการเปลี่ยนเส้นทางตามพิกัดภูมิศาสตร์ และรัน Screaming Frog ด้วยพร็อกซี IPv4 แบบเฉพาะและ ISP แบบคงที่ไม่จำกัดแบนด์วิดท์
พร็อกซีตามแพลตฟอร์ม
พร็อกซีสำหรับ YouTube: แยกช่อง Studio และ AdSense หลายบัญชีด้วย IP คงที่
แยกช่อง YouTube Studio และบัญชี AdSense ด้วยพร็อกซี Static ISP และ IPv4 ส่วนตัวไม่จำกัดแบนด์วิดท์ในสหรัฐฯ เวียดนาม ญี่ปุ่น และสหราชอาณาจักร
IPV4 · united states
พร็อกซี IPv4 สหรัฐฯ ส่วนตัว: IP ดาต้าเซ็นเตอร์อเมริกาความเร็วสูงเฉพาะคุณ
พร็อกซี IPv4 ส่วนตัวสหรัฐฯ สำหรับดึงข้อมูล เช็กอันดับ ตรวจสอบโฆษณา และรีเสิร์ช Amazon มี IP คงที่ ใช้คนเดียว แบนด์วิดท์ไม่จำกัด เปิดใช้งานไว
IPV4 · singapore
พร็อกซี IPv4 ส่วนตัวสิงคโปร์: IP สิงคโปร์ความเร็วสูงเฉพาะคุณสำหรับร้านค้าและโฆษณา
พร็อกซี IPv4 สิงคโปร์ส่วนตัวสำหรับร้าน Lazada, Shopee SG, บัญชีโฆษณา และระบบบอทความหน่วงต่ำ เป็น IP เฉพาะ แบนด์วิดท์ไม่จำกัด