在云功能上使用 puppeteer 拒绝网站访问

vjn*_*369 9 node.js web-scraping google-cloud-functions google-chrome-headless puppeteer

我正在尝试使用 puppeteer来逃避这个网址https://www.myntra.com/laptop-bag/chumbak/chumbak-unisex-brown-geo-bird--printed-laptop-bag/6795882/buy。它在我使用时工作{ headless: false },但在无头模式下失败。

然后我使用这个比较了两种情况下的响应。

const resp = await page.goto(url);
console.log(resp);
Run Code Online (Sandbox Code Playgroud)

然后我发现我们需要在使用无头模式时添加 userAgent。所以我添加了这个。

await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
Run Code Online (Sandbox Code Playgroud)

现在它在这两种情况下都在本地工作。但是当我部署到云功能时,它仍然失败。

这是使用 puppeteer 截取的屏幕截图。 在此处输入图片说明

这是响应日志的一部分。

_headers: 
   { status: '403',
     server: 'AkamaiGHost',
     'mime-version': '1.0',
     'content-type': 'text/html',
     'content-length': '395',
     expires: 'Thu, 09 Jul 2020 12:16:30 GMT',
     date: 'Thu, 09 Jul 2020 12:16:30 GMT',
     'set-cookie': 'AKA_A2=A; expires=Thu, 09-Jul-2020 13:16:30 GMT........
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

谢谢。

更新:

我使用了 puppeteer 隐形插件和 IP 轮换。这是代码

const puppeteer = require('puppeteer-extra');

const StealthPlugin = require('puppeteer-extra-plugin-stealth')
puppeteer.use(StealthPlugin())

const AdblockerPlugin = require('puppeteer-extra-plugin-adblocker')
puppeteer.use(AdblockerPlugin({ blockTrackers: true }))

Run Code Online (Sandbox Code Playgroud)

对于 IP 轮换:

var browser = await puppeteer.launch({
           headless: true,
           args: ['--proxy-server=abcd-efg.proxymesh.com:12345']
         });

var page = await browser.newPage();

await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');

await page.authenticate({
          username: 'myusername',
          password: 'mypassword'
        });

Run Code Online (Sandbox Code Playgroud)

IP 轮换在本地工作,但仍被云功能阻止。

vjn*_*369 5

使用住宅代理解决了这个问题。

最初我已经在云函数和 AWS lambda 中部署了 IP 轮换。我已经使用 proxymesh 服务进行 IP 轮换。但它仅提供数据中心代理。它失败了。然后我尝试使用其他服务的住宅代理。有效。

  • @daniel 我正在使用 BlazingSEO 服务。如果你需要批量 IP,我听说 luminati 是最好的。 (2认同)