Javascript 如何使用代理在木偶和无头铬?

Javascript 如何使用代理在木偶和无头铬?,javascript,node.js,proxy,puppeteer,Javascript,Node.js,Proxy,Puppeteer,请告诉我如何正确使用带有木偶演员和无头铬合金的代理。我的选择不起作用 const puppeteer = require('puppeteer'); (async () => { const argv = require('minimist')(process.argv.slice(2)); const browser = await puppeteer.launch({args: ["--proxy-server =${argv.proxy}","--no-sandbox",

请告诉我如何正确使用带有木偶演员和无头铬合金的代理。我的选择不起作用

const puppeteer = require('puppeteer');
(async () => {
  const argv = require('minimist')(process.argv.slice(2));

  const browser = await puppeteer.launch({args: ["--proxy-server =${argv.proxy}","--no-sandbox", "--disable-setuid-sandbox"]});
  const page = await browser.newPage();

  await page.setJavaScriptEnabled(false);
  await page.setUserAgent(argv.agent);
  await page.setDefaultNavigationTimeout(20000);
  try{
  await page.goto(argv.page);

  const bodyHTML = await page.evaluate(() => new XMLSerializer().serializeToString(document))
  body = bodyHTML.replace(/\r|\n/g, '');
  console.log(body);
}catch(e){
        console.log(e);
}
  await browser.close();
})();

您可以在以下位置找到有关代理的示例:


如果要为每页使用不同的代理,请尝试使用https代理或http代理来代理每页的请求

"--proxy-server =${argv.proxy}"  
这是一个普通字符串,而不是模板文本
使用“而不是”

否则,
argv.proxy
将不会被替换
在将该字符串传递给启动函数之前,请检查该字符串,以确保其正确性 您可能希望访问该浏览器以确保代理正常工作

您可以使用该浏览器为整个页面或仅为特定请求设置代理,例如

从“木偶师”导入木偶师;
进口{
createPageProxy,
}来自“木偶演员代理”;
(异步()=>{
const browser=wait puppeter.launch();
const page=wait browser.newPage();
const pageProxy=createPageProxy({
页
proxyUrl:'http://127.0.0.1:3000',
});
等待页面。setRequestInterception(true);
page.once('request',异步(request)=>{
等待pageProxy.proxyRequest(请求);
});
等待页面。转到('https://example.com');
})();
要跳过代理,只需有条件地调用
request.continue()

使用
页面
可以有多个代理。

可以使用。 它支持为整个页面设置代理,或者如果您愿意,它可以为每个请求设置不同的代理。是的,它可以在无头和无头Chrome中工作

首先安装它:

npm i puppeteer-page-proxy
然后要求它:

const useProxy=require('puppeter-page-proxy');
使用它很容易; 为整个页面设置代理:

wait useProxy(第页,'http://127.0.0.1:8000');
如果您希望为每个请求使用不同的代理,则只需执行以下操作:

wait page.setRequestInterception(true);
第页('request',req=>{
使用代理(要求“socks5://127.0.0.1:9000”);
});
然后,如果你想确定你的网页的IP已经改变,你可以查它

const data=wait useProxy.lookup(第页);
console.log(data.ip);
它支持httphttpssocks4socks5代理,如果需要,它还支持身份验证:

const-proxy=”http://login:pass@127.0.0.1:8000'
存储库:

如何使用setRequestInterception来阻止图像/css/字体并在页面级别使用代理?如果我对每个请求使用useProxy,它的工作速度会太慢。需要询问我应该如何在args中传递多个代理服务器并将其与多个If条件一起使用?如果您可以建议,这应该是关于该问题的正确答案
`--proxy-server =${argv.proxy}`
npm i puppeteer-page-proxy