我已经使用 PuppeteerCrawler 开发了一个爬虫行为,目前最小。和最大。并发1,我有几个问题:
- 代理轮换是默认激活还是我必须激活它以及如何激活?
- 如果代理轮换处于活动状态,我如何才能看到它工作,例如我在哪里可以获得使用的 IP?
- 何时触发代理轮换,是否创建了新的爬虫,或者是否打开了新选项卡?
最好的毕业生,Wulfgääng
我已经使用 PuppeteerCrawler 开发了一个爬虫行为,目前最小。和最大。并发1,我有几个问题:
最好的毕业生,Wulfgääng
首先,您不需要将 maxConcurrency 设置为 1。相反,您可以使用puppeteerPoolOptions
选项来控制 chromium(或 chrome)实例,因为代理与它们相关联(参见答案 1)。
const crawler = new Apify.PuppeteerCrawler({
... // code omitted for brevity
puppeteerPoolOptions: {
maxOpenPagesPerInstance: 1,
retireInstanceAfterRequestCount: 3,
killInstanceAfterSecs: 5,
},
launchPuppeteerFunction: () => {
return Apify.launchPuppeteer({
useApifyProxy: true,
// Use a new proxy with a new IP address for each new Chrome instance
apifyProxySession: Math.random().toString() ,
})
// Or you can use proxyUrl option
// const proxyUrl = Apify.getApifyProxyUrl({ /*groups,*/ session: Math.random().toString() })
// return Apify.launchPuppeteer({
// proxyUrl,
// })
},
...
});
console.log()
。要获取代理的 IP,请使用以下代码:...
const request = require('request-promise-native');
...
const session = Math.random().toString();
const proxy = Apify.getApifyProxyUrl({ /*groups,*/ session })
const { clientIp } = await request({ url: 'https://api.apify.com/v2/browser-info', proxy, json: true });
PuppeteerCrawler
时,底层实例PuppeteerPool
负责创建和处理铬(或铬)实例。这些 chromium 实例是通过 Puppeteer 启动的,有或没有代理设置(取决于传递给的选项PuppeteerCrawler
)。