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);
它支持http、https、socks4和socks5代理,如果需要,它还支持身份验证:
const-proxy=”http://login:pass@127.0.0.1:8000'
存储库:
如何使用setRequestInterception来阻止图像/css/字体并在页面级别使用代理?如果我对每个请求使用useProxy,它的工作速度会太慢。需要询问我应该如何在args中传递多个代理服务器并将其与多个If条件一起使用?如果您可以建议,这应该是关于该问题的正确答案
`--proxy-server =${argv.proxy}`
npm i puppeteer-page-proxy