วิธีตั้งค่าพร็อกซีที่มีการยืนยันตัวตนใน Selenium WebDriver
อัปเดตเมื่อ:
คำสั่งมาตรฐานของ ChromeDriver อย่าง --proxy-server=http://ip:port จะละเว้นข้อมูลบัญชี user:pass ที่แนบมา และจะเด้งหน้าต่างถามรหัสผ่านขึ้นมาขัดจังหวะการทำงานอัตโนมัติ ในการใช้งานพร็อกซี HTTP(S) ของ VinaProxy ใน Selenium อย่างราบรื่น ขอแนะนำให้ส่งค่าผ่าน selenium-wire หรือโหลดส่วนขยายเบื้องหลังขนาดเล็ก onAuthRequired ของ Chrome เข้ามาช่วย
http://user:pass@ip:port (selenium-wire / Chrome proxy extension)- 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
- 1 IP₫75,000
- 3+ IP₫70,000
- 5+ IP₫65,000
- 10+ IP₫60,000
- 50+ IP₫60,000
- 100+ IP₫60,000
- 200+ IP₫60,000
- 500+ IP₫55,000
สองวิธีที่เชื่อถือได้ในการยืนยันตัวตนพร็อกซีใน Selenium
เลือกแนวทางที่เหมาะสมกับภาษาและไดรเวอร์เบราว์เซอร์ของคุณ:
| แนวทาง | รูปแบบไวยากรณ์การตั้งค่า | เหมาะสำหรับ |
|---|---|---|
selenium-wire (Python) | seleniumwire_options={'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} | ตั้งค่าง่ายที่สุดใน Python รองรับการสลับเปลี่ยน IP พร็อกซีแบบเรียลไทม์ระหว่างทำงาน |
| ส่วนขยาย Chrome Auth | โหลดส่วนขยาย ZIP ที่จัดการ chrome.webRequest.onAuthRequired | Selenium มาตรฐานใน Python, Java, C# และ undetected-chromedriver |
| เปลี่ยนไปใช้ Playwright | browser.newContext({ proxy: { server, username, password } }) | รองรับการยืนยันตัวตนพร็อกซีระดับ Context โดยไม่ต้องพึ่งพาส่วนขยายใดๆ |
เคล็ดลับเพิ่มประสิทธิภาพสำหรับงานสแครปปิ้ง Selenium ผ่านพร็อกซี
- กำหนด
options.page_load_strategy = 'eager'เพื่อให้ WebDriver เริ่มทำงานได้ทันทีที่โครงสร้าง DOM พร้อม โดยไม่ต้องรอตัวติดตามของบุคคลที่สามที่โหลดช้า - ใช้ตัวเลือก
--headless=new(Chrome 109+) เมื่อรันแบบไม่แสดงหน้าจอ เพื่อให้ส่วนขยายและการยืนยันตัวตนของพร็อกซีทำงานได้เหมือนกับโหมดปกติ - ปิดการโหลดรูปภาพในการตั้งค่าของ Chrome เมื่อเก็บเฉพาะข้อมูลตัวหนังสือ เพื่อประหยัดแบนด์วิดท์และเพิ่มความเร็วในการโหลด
- ครอบโค้ดการทำงานไว้ในบล็อก
try / finally: driver.quit()เสมอ เพื่อป้องกันไม่ให้มีโปรเซส Chromium ค้างในระบบ
ขั้นตอนทีละขั้น
- 1
ติดตั้ง selenium-wire
รันคำสั่ง
pip install selenium-wireในสภาพแวดล้อมเสมือนของ Python - 2
กำหนดค่าดิกชันนารีพร็อกซี VinaProxy
จัดรูปแบบข้อมูล:
sw_options = {'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} - 3
เปิดใช้งาน webdriver.Chrome พร้อม seleniumwire_options
เริ่มต้นสร้างออบเจกต์:
driver = webdriver.Chrome(seleniumwire_options=sw_options) - 4
ตรวจสอบหมายเลข IP ขาออก
นำทางไปที่
driver.get('https://vinaproxy.com/api/my-ip')และยืนยันว่าการตอบกลับแบบ JSON แสดง IP ของพร็อกซี
คำถามที่พบบ่อย
ทำไมการตั้งค่า '--proxy-server=http://user:pass@ip:port' ใน ChromeOptions จึงใช้ไม่ได้?
Chromium ถูกออกแบบมาให้ตัดข้อมูล user:pass@ ออกจากพารามิเตอร์คำสั่ง --proxy-server การใช้ selenium-wire, ส่วนขยาย onAuthRequired หรือการเปลี่ยนไปใช้ Playwright จะช่วยแก้ปัญหานี้ได้อย่างสมบูรณ์
สามารถเปลี่ยนพร็อกซีโดยไม่ต้องรีสตาร์ท Chrome ใน selenium-wire ได้หรือไม่?
ได้ คุณสามารถกำหนดค่าดิกชันนารีใหม่ให้กับ driver.proxy = {'http': 'http://...', 'https': 'http://...'} ได้ตลอดเวลาเพื่อเปลี่ยนพร็อกซีแบบเรียลไทม์
ส่วนขยายพร็อกซีของ Chrome ทำงานในโหมด Headless ได้หรือไม่?
ทำงานได้ ตราบใดที่คุณส่งค่าพารามิเตอร์ --headless=new แทนที่จะใช้คำสั่งเก่า --headless
รัน Selenium WebDriver ในระดับสเกลใหญ่ด้วย IP นิ่งไม่จำกัดปริมาณข้อมูล
พร็อกซี IPv4 ส่วนตัวและ Static ISP พร้อมใช้งานทันทีใน 7 ประเทศ
ซื้อพร็อกซีสำหรับ Selenium