(Linux Mac)Puppeteer加代理爬坑(隧道代理) 加代理的两种方式(Linux Mac)

Puppeteer 代理脱坑记

废话不多说 基本就是干货 纯实践,

puppeteer版本 1.7.0 发文时是最新的 linux和mac也都是最新的chromium浏览器(https://www.chromium.org/getting-involved/download-chromium) 浏览器下载地址版本很多 找找都是!

问题: 想将puppeteer这个东西运用到实际项目当中,当然就要加代理嘛,我这里是隧道代理,但是我升级到1.7之后 原来这种方法加代理不可以了,基本是打不开页面:

 // const proxyUrl = 'http://xxxxxx:9020';
        // const username = 'xxxxxx';
        // const password = 'xxxxxx';
        const browser = await puppeteer.launch({
            ignoreHTTPSErrors: true,
            headless: true,
            args: ['--no-sandbox', '--disable-setuid-sandbox', `--proxy-server=${proxyUrl}`],
        }).catch(() => browser.close);

        const page = await browser.newPage();
        
            //加隧道代理的api authenticate这个方法 多看官方文档的api
            await page.authenticate({username, password});

如上代码 ,亲测这种加代理方式是可以加隧道代理,场景就是浏览器跳出请输入账号密码让你加代理的方式,这个是可以用在puppeteer0.9版本1.5版本搭配当时版本的浏览器中的(这个是亲测可以用来加上代理的,这个是定位问题 如果有准确的请大家留言一起讨论)

但是升级到1.7的版本后不能用了,然后其实还有一种加代理的方式,后面会叙述技巧和场景

Puppeteer 1.7.0版本亲测可加代理 (主要是隧道代理可以加到Headers头中)

const browser = await puppeteer.launch({
            ignoreHTTPSErrors: true,
            headless: false,
            args: ['--no-sandbox', '--disable-setuid-sandbox'],
        }).catch(() => browser.close);

        const page = await browser.newPage();
//加隧道代理 加headers头即可
        await page.setExtraHTTPHeaders({
            'Proxy-Authorization': 'Basic ' + Buffer.from(`${username}:${password}`).toString('base64'),
        });

以上代码亲测是可以加到代理的,而且记住args[]中是不加--proxy-server的 不要和上种方法弄错了

总结:

      其实遇到了好多问题定位到的是无法打开某个网页,就是加代理这里的问题,如果是不加代理自己玩那无所谓,只要加代理的话一定会出现一些问题,本人已经爬坑爬过了,所以一定要注意加代理的方式.

      建议用第二种,第二种的话基本是肯定可以加到代理的,如果版本低的话第一种是可以加的到的,本人再Github还有一些国外论坛也查证了很多结合自己总结的 Puppeteer加代理的方式,有兴趣 交流的可以留言共同学习进步

猜你喜欢

转载自blog.csdn.net/m0_37089544/article/details/82225036