繁体   English   中英

如何使用 aws lambda + Puppeteer 的代理服务器?

[英]How to use proxy servers with aws lambda + Puppeteer?

我正在尝试在 aws lambda 上使用代理链 package 运行 puppeteer,但我收到此错误消息:

"errorType": "Error",
"errorMessage": "Protocol error (Target.createTarget): Target closed.",

代码:

const chromium = require('chrome-aws-lambda');
const { addExtra } = require("puppeteer-extra");
const puppeteerExtra = addExtra(chromium.puppeteer);
const proxyChain = require('proxy-chain');

const StealthPlugin = require("puppeteer-extra-plugin-stealth");
puppeteerExtra.use(StealthPlugin());

exports.handler = async (event, context, callback) => {
    let finalResult = [];
    const url = ``;
    let browser;
    const oldProxyUrl = ''; // --> bright data proxy
    const newProxyUrl = await proxyChain.anonymizeProxy(oldProxyUrl);

    console.log("newProxyUrl", newProxyUrl)

    try {
        browser = await puppeteerExtra.launch({
            args: ['--no-sandbox', '--disable-setuid-sandbox', `--proxy-server=${newProxyUrl}`],
            defaultViewport: chromium.defaultViewport,
            executablePath: await chromium.executablePath,
            headless: chromium.headless
        });

        const page = await browser.newPage();

        await page.goto(url);

        finalResult = await extractElements(page);

    } catch (error) {
        return callback(error);
    } finally {
        await browser.close();
    }

    return callback(null, finalResult);
};

上面的代码在没有代理服务器 url 的 aws lambda 上运行良好。我还在 vercel 和 .netlify 等无服务器功能上测试了相同的代码,没有代理服务器 url 并且它有效。 唯一的问题是当我添加代理服务器 url 时它抛出协议错误。

以下是您可以尝试解决此问题的一些方法:

确保 url 变量具有值。 目前这是一个空字符串,这意味着 page.goto() 方法将没有有效的 URL 可以导航到。

确保 oldProxyUrl 变量有一个值。 目前这是一个空字符串,这意味着 proxyChain.anonymizeProxy() 方法将没有有效的代理进行匿名化。

确保 extractElements() function 已定义并且可以调用。 您提供的代码中不存在此 function,因此您可能需要包含它或修改代码以删除对此 function 的调用。

检查您的 AWS Lambda function 的日志,看看是否有任何其他错误消息可能提供有关该问题的更多信息。

查看 puppeteer-extra-plugin-stealth 和 proxy-chain 包的文档,看看是否存在任何已知问题或与 AWS Lambda 的兼容性问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM