Доступ к веб-сайту запрещен с использованием кукловода в облачных функциях - PullRequest
4 голосов
/ 09 июля 2020

Я пытаюсь скрыть этот URL 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);

Затем я понял, что нам нужно добавить 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');

Теперь он работает в обоих случаях локально . Но когда я развертываю облачную функцию, она все равно не работает.

Это снимок экрана, сделанный с помощью 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........

Я что-то упустил?

Спасибо.

обновление :

Я использовал плагин скрытности кукловода вместе с ротацией 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 }))

И для ротации 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'
        });

Ротация IP работает локально, но все еще заблокирована в облачной функции.

1 Ответ

3 голосов
/ 19 июля 2020

Использование домашних прокси-серверов решило проблему.

Изначально я развернул в облаке функцию и AWS лямбда с ротацией IP. Я использовал сервис proxyme sh для ротации IP. но он предоставляет только прокси для центров обработки данных. Это не удалось. Затем я попробовал использовать резидентные прокси из другого сервиса. Это сработало.

...