วิธีใช้ Authenticated Proxies กับ Puppeteer
Chrome รับ host และ port ของ proxy เป็น flag ในการเปิดตัว และ Puppeteer จะตอบรับพร้อมท์การเข้าสู่ระบบด้วย page.authenticate
ขั้นตอน
- เปิด Chrome ด้วย --proxy-server=host:port
- เรียก page.authenticate ด้วย username และ password ของ proxy
- เปิดการสกัดกั้นคำขอเพื่อบล็อกรูปภาพและฟอนต์
- เปิดเบราว์เซอร์หนึ่งตัวต่อ session id สำหรับ sticky IP
ตัวอย่างโค้ด
import puppeteer from "puppeteer";
const browser = await puppeteer.launch({ args: ["--proxy-server=gw.gbproxies.cc:10000"] });
const page = await browser.newPage();
await page.authenticate({ username: "USERNAME-cc-fr-sid-shop1-ttl-30", password: "PASSWORD" });
await page.setRequestInterception(true);
page.on("request", (r) => (["image", "font", "media"].includes(r.resourceType()) ? r.abort() : r.continue()));
await page.goto("https://api.ipify.org");
console.log(await page.content());
await browser.close();แทนที่ USERNAME และ PASSWORD ด้วยข้อมูลเข้าสู่ระบบ proxy จากหน้า Proxies ของคอนโซล พอร์ต 10000 คือ residential HTTP; ดูพอร์ตของทุกผลิตภัณฑ์ด้านล่าง
เคล็ดลับ
- การบล็อกรูปภาพมักลดปริมาณการใช้งานต่อหน้าลงมากกว่าครึ่ง
- session id แบบ sticky จะคง IP เดียวตลอดการท่องเว็บ
คำถามทั่วไป
ทำไม Chrome ยังแสดงป๊อปอัพเข้าสู่ระบบ?
page.authenticate ต้องทำงานก่อนการนำทางครั้งแรกของหน้านั้น