Как подключить прокси в функции AWS Lambda, чтобы избежать «403 Forbidden error»? - PullRequest
0 голосов
/ 07 февраля 2019

Я создаю сканер Scrapy, который анализирует данные сайта и вставляет их в DynamoDB с помощью лямбда-функции AWS.

Иногда он работает нормально - возвращает все данные, которые мне нужны, со статусом 200.И иногда он не будет сканироваться из-за статуса 403 (Запрещено).

Я проверил, что в AWS Cloud9 вероятность того, что ошибка 403 Запретится, будет меньше, чем в AWS Lambda: работает 100 функций и только 3 Запрещено в AWS Cloud9, 100 функций запуска и 78 запрещены на AWS Lambda.Поэтому я думаю, что мне следует попробовать что-то сделать с сетевыми настройками AWS Lambda, например, подключить прокси-сервер или что-то еще, но как я могу это сделать?

Я уже попробовал настройки для сканера, например:

process = CrawlerProcess({
    'USER_AGENT':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3)    AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10',
    'ROBOTSTXT_OBEY':False,
    'DOWNLOAD_DELAY': random.randint(1,10),
    'DOWNLOAD_TIMEOUT': random.randint(80,150),
    'REDIRECT_ENABLED':False,
    'SPIDER_MIDDLEWARES' : {
        'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware':True
    }
})

ранее настройки были:

process = CrawlerProcess({
    'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})

но это не имеет значения: все еще хорошо работает на cloud9, иногда (редко) хорошо на AWS Lambda

UPD: я обнаружил, чтоя получаю 403 запрещенного статуса в дневное время (с 8:00 до 22:00), а в ночное время я в основном получаю статус 200 нормально, поэтому я думаю, что это из-за разрешений сайта разрешать и запрещать роботов в разные периоды дня,но почему запуск одного и того же сценария через AWS cloud9 в основном работает хорошо даже в дневное время, а AWS lambda в основном не работает?

, заранее извиняюсь за грамматику

...