首页 > 解决方案 > 使用 Puppeteer 每页使用不同的代理

问题描述

在 Puppeteer 浏览器中为每页设置代理

使用 For of 循环为每个自动化实例创建一个新页面,但是在两个页面加载并截取屏幕截图后,无论第一个实例首先开始自动化,它都会接管并且只有自动化发生。

根据我所见设置标志仅在创建新浏览器时可行,例如。

  const browser = await puppeteer.launch({args:['--proxy-server=ip:port']});

似乎找不到任何关于通过页面设置它的文档。

标签: proxypuppeteer

解决方案


我做了一个模块来做到这一点。它被称为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


推荐阅读