请告诉我如何正确使用代理与傀儡和Headless Chromium 。我的选项不起作用。
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();
})();
7条答案
按热度按时间gc0ot86w1#
您可以在here中找到有关代理的示例
dwbf0jvd2#
这在puppeteer-page-proxy上是可以实现的。它支持为整个页面设置代理,或者如果你愿意,它可以为每个请求设置不同的代理。是的,它在headless和headful Chrome上都可以使用。
首先安装:
然后要求:
**使用方便;**为整个页面设置代理:
如果您希望为每个请求使用不同的代理,那么您可以简单地执行以下操作:
然后,如果你想确定你的网页的IP已经改变,你可以查找它;
它支持http、https、socks 4和socks 5代理,并且如果需要,它还支持身份验证:
存储库:https://github.com/Cuadrix/puppeteer-page-proxy
dw1jzc5e3#
不使用
这是常规字符串而不是模板文本
用'代替“
型
否则将不替换
argv.proxy
检查这个字符串在你传递它到launch函数之前,以确保它是正确的,并且你可能想要在浏览器中访问http://api.ipify.org/以确保代理正常工作
unhi4e5o4#
如果要对每个页面使用不同代理,请尝试this,使用https-proxy-agent或https-proxy-agent代理每个页面的请求
col17t5w5#
您可以使用https://github.com/gajus/puppeteer-proxy为整个页面或仅为特定请求设置代理,例如
要跳过代理,只需有条件地调用
request.continue()
。使用puppeteer-proxy
Page
可以有多个代理。xghobddn6#
您可以在Private Proxy上找到代理列表,并将其与下面的代码一起使用
你可以找到完整的职位here
0ejtzxu17#
根据我的经验,以上失败的原因各不相同。我发现在整个操作系统上应用代理每次都是有效的。我没有遇到代理失败的情况。这个策略在Windows和Linux上都有效。
这样,我得到零puppeteer机器人失败。请记住,我旋转了7000机器人每服务器。我运行这个在7个服务器上。