簡體   English   中英

如何使用 Node JS Puppeteer 在無頭 chrome 請求中設置代理服務器

[英]how do I set a proxy server in my headless chrome request using Node JS Puppeteer

/我在 chrome 上運行無頭搜索請求,我需要訪問代理服務器/

const puppeteer = require('puppeteer');
var url="https://www.google.com/search?q=";
var keyword="hotels";
var urls;
var desktopUserAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
const response=[];
var i=0;
var userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";

(async () => {

  const browser = await puppeteer.launch({headless: false });
  const page = await browser.newPage();
  urls=url+keyword;

page.setUserAgent(userAgent);
  response[i]=await page.goto(urls);
  console.log(await browser.version());
})();

//我需要能夠訪問代理服務器才能進行谷歌搜索

您可以在參數中傳入這樣的代理,

const options = {
        headless: false,
        args: [
            `--proxy-server=${proxyIP:proxyPORT}`,
            `--ignore-certificate-errors`
        ]
};
const browser = await puppeteer.launch(options);

如果您想要代理身份驗證,您可以在頁面對象中使用以下內容,

await page.authenticate(user, pass);

我做了一個模塊來做到這一點。 它被稱為puppeteer-page-proxy 它支持為整個頁面設置代理,或者如果您願意,它可以為每個請求設置不同的代理。

首先安裝它:

npm i puppeteer-page-proxy

然后要求它:

const useProxy = require('puppeteer-page-proxy');

使用它很容易; 為整個頁面設置代理:

await useProxy(page, 'http://127.0.0.1:8000');

如果您想為每個請求使用不同的代理,那么您可以簡單地執行以下操作:

await page.setRequestInterception(true);
page.on('request', req => {
    useProxy(req, 'socks5://127.0.0.1:9000');
});

然后如果你想確定你的頁面的IP有沒有變,你可以查一下;

const data = await useProxy.lookup(page);
console.log(data.ip);

它支持httphttpssocks4socks5代理,如果需要,它還支持身份驗證:

const proxy = 'http://login:pass@127.0.0.1:8000'

存儲庫: https : //github.com/Cuadrix/puppeteer-page-proxy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM