Puppeteer (Node.js) တွင် proxy authentication ထည့်သွင်း အသုံးပြုနည်း
Updated:
Puppeteer သည် Chrome နှင့် Chromium တို့ကို DevTools Protocol (CDP) မှတစ်ဆင့် ထိန်းချုပ်ပြီး HTTP 407 proxy authentication အတွက် သီးသန့် await page.authenticate({ username, password }) API ကို ထောက်ပံ့ပေးထားပါသည်။ --proxy-server=http://ip:port နှင့် page.authenticate() ကို တွဲဖက်အသုံးပြုခြင်းဖြင့် မည်သည့် ပြင်ပ browser extension မျှ မလိုဘဲ သင်၏ Node.js scraper များကို VinaProxy static proxy များမှတစ်ဆင့် ချိတ်ဆက် အသုံးပြုနိုင်ပါသည်။
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1 IP၄၀,၀၀၀ ₫
- 5+ IPs၃၅,၀၀၀ ₫
- 10+ IPs၂၅,၀၀၀ ₫
- 20+ IPs၂၅,၀၀၀ ₫
- 50+ IPs၂၅,၀၀၀ ₫
- 100+ IPs၂၅,၀၀၀ ₫
- 200+ IPs၂၅,၀၀၀ ₫
- 500+ IPs၂၅,၀၀၀ ₫
- 1000+ IPs၂၂,၀၀၀ ₫
- 2000+ IPs၂၀,၀၀၀ ₫
- 1 IP၄၀,၀၀၀ ₫
- 5+ IPs၃၅,၀၀၀ ₫
- 10+ IPs၂၅,၀၀၀ ₫
- 20+ IPs၂၅,၀၀၀ ₫
- 50+ IPs၂၅,၀၀၀ ₫
- 100+ IPs၂၅,၀၀၀ ₫
- 200+ IPs၂၅,၀၀၀ ₫
- 500+ IPs၂၅,၀၀၀ ₫
- 1000+ IPs၂၂,၀၀၀ ₫
- 2000+ IPs၂၀,၀၀၀ ₫
Puppeteer တွင် proxy ပြင်ဆင်ရန် အဆင့် ၂ ဆင့်
--proxy-server launch argument ထဲတွင် user:pass@ ကို မည်သည့်အခါမျှ ထည့်သွင်းခြင်း မပြုပါနှင့်။ ၎င်းအစား browser စတင်ချိန်တွင် host နှင့် port ကိုသာ ထည့်သွင်းပြီး Page instance ပေါ်တွင် authenticate လုပ်ပါ-
| အဆင့် | Puppeteer ကုဒ် | အရေးပါပုံ |
|---|---|---|
| 1. Chromium ကို စတင်ပါ | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Chromium ၏ network socket ကို သင်၏ VinaProxy proxy သို့ ညွှန်ပြပေးသည် |
| 2. Page ကို Authenticate လုပ်ပါ | await page.authenticate({ username, password }) | HTTP 407 စိစစ်မှုများအတွက် CDP အထောက်အထားများကို ဖြည့်သွင်းပေးသည် |
| 3. ဝင်ရောက်ကြည့်ရှုပါ | await page.goto(url, { waitUntil: 'domcontentloaded' }) | အတည်ပြုထားသော tunnel မှတစ်ဆင့် ပစ်မှတ် URL သို့ ဝင်ရောက်ကြည့်ရှုသည် |
proxy-chain ဖြင့် tab များအကြား proxy အများအပြားကို ပြောင်းလဲအသုံးပြုခြင်း
page.authenticate()သည်Pagetab တစ်ခုစီအတွက်သာ သက်ရောက်မှုရှိကြောင်း သတိပြုပါ—browser.newPage()ဖြင့် ဖွင့်သော tab အသစ်တိုင်းတွင် ၎င်းကို ထည့်သွင်းခေါ်ယူပါ- Chromium process တစ်ခုတည်းအတွင်းရှိ သီးခြား incognito context များတွင် မတူညီသော proxy များကို သုံးရန်
http://user:pass@ip:portURL တစ်ခုစီကိုproxy-chainnpm package (anonymizeProxy()) ဖြင့် ထုပ်ပိုးပြီးbrowser.createBrowserContext({ proxyServer })သို့proxyServerအဖြစ် ပေးပို့ပါ puppeteer-extraနှင့်puppeteer-extra-plugin-stealthတို့နှင့် တွဲဖက် အသုံးပြုနိုင်ပါသည်
အဆင့်ဆင့် လုပ်ဆောင်ရန်
- 1
puppeteer.launch() ထဲသို့ --proxy-server=http://ip:port ကို ထည့်သွင်းပါ
const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });ဖြင့် browser ကို စတင်ပါ။ - 2
စာမျက်နှာအသစ်တွင် await page.authenticate() ကို ခေါ်ယူပါ
const page = await browser.newPage();ဖြင့် tab တစ်ခုကို ဖွင့်ပြီးawait page.authenticate({ username: 'USER', password: 'PASS' });ကို ခေါ်ယူပါ။ - 3
ထွက်ပေါက် IP လိပ်စာကို စမ်းသပ်ပါ
await page.goto('https://vinaproxy.com/api/my-ip');ကို run ပြီး ရရှိလာသော JSON ကို စစ်ဆေးပါ။ - 4
Browser လုပ်ငန်းစဉ်များကို ပိတ်သိမ်းပါ
လုပ်ဆောင်ချက် ပြီးဆုံးပါက
await browser.close();ကို ခေါ်ယူပါ။
မကြာခဏမေးလေ့ရှိသော မေးခွန်းများ
Puppeteer က `ERR_NO_SUPPORTED_PROXIES` ဟု အဘယ်ကြောင့် ပြသသနည်း။
--proxy-server=http://user:pass@ip:port ထဲတွင် user:pass@ ကို ထည့်သွင်းမိပါက အဆိုပါ error ဖြစ်ပေါ်တတ်ပါသည်။ --proxy-server=http://ip:port အတိုင်းသာ ထားရှိပြီး await page.authenticate({ username, password }) မှတစ်ဆင့် အထောက်အထားများကို ဖြည့်သွင်းပါ။
`browser.newPage()` ဖြင့် ဖွင့်သော ဒုတိယ tab သည် HTTP 407 ဖြင့် အဘယ်ကြောင့် မအောင်မြင်သနည်း။
page.authenticate() သည် tab တစ်ခုစီအတွက်သာ သက်ရောက်ပါသည်။ အသစ်ဖွင့်ထားသော မည်သည့် tab တွင်မဆို စာမျက်နှာ မဖွင့်မီ await secondPage.authenticate({ username, password }) ကို ခေါ်ယူပေးပါ။
Headless Chrome scraping အတွက် VinaProxy proxy များသည် bandwidth အကန့်အသတ်မဲ့ ရရှိပါသလား။
ဟုတ်ကဲ့ ရရှိပါသည်။ သီးသန့် Dedicated IPv4 နှင့် Static ISP အစီအစဉ်အားလုံးတွင် လစဉ် bandwidth အကန့်အသတ်မဲ့ ပါဝင်ပါသည်။
သင်၏ Node.js Puppeteer လုပ်ငန်းစဉ်များကို static IP များဖြင့် အားဖြည့်ပါ
နိုင်ငံပေါင်း 7 နိုင်ငံရှိ အကန့်အသတ်မဲ့ Dedicated IPv4 နှင့် Static ISP proxy များကို ချက်ချင်း ရယူလိုက်ပါ။
Puppeteer Proxy များကို ဝယ်ယူရန်