Поддерживает ли Google Compute Engine выполнение запросов aiohttp get?

#google-cloud-platform #discord #google-compute-engine #python-asyncio #aiohttp

# #google-облачная платформа #Discord #google-compute-engine #python-asyncio #aiohttp

Вопрос:

Итак, я пытаюсь создать бота discord, который проверяет веб-сайт и отправляет сообщение, если цена товара падает ниже определенной цены. Я запустил его на своем локальном компьютере, поэтому решил разместить его на Google Compute Engine, чтобы он мог работать 24/7, но столкнулся с некоторыми проблемами.

После долгих тестов я определил, что это связано с тем, что Google Compute Engine не нравится делать запросы aiohttp GET. Ниже приведена изолированная часть моего кода, которая вызывает проблемы в Google Compute Engine, но отлично работает на моем локальном компьютере.

 import asyncio
from bs4 import BeautifulSoup
import aiohttp

async def myDriver():
    await httpReq()


async def httpReq():
    async with aiohttp.ClientSession() as session:
        async with session.get("https://www.newegg.com/p/N82E16824569005?Item=N82E16824569005amp;cm_sp=Homepage_BS-_-P1_24-569-005-_-12062020") as page:
            pageContent = await page.text()
            content = BeautifulSoup(pageContent, 'lxml')
            price = content.find("li", {"class": "price-current"}).strong.text.replace(",", "")
            print(price)


asyncio.run(myDriver())
 

Ошибка:

 File "GCEtestAiohttp.py", line 19, in httpReq
    price = content.find("li", {"class": "price-current"}).strong.text.replace(",", "") AttributeError: 'NoneType' object has no attribute 'strong'
 

Примечания:

  • «Debian GNU / Linux 10 (buster)»
  • python 3.7.3
  • aiohttp 3.6.3
  • Я пробовал аналогичный код с обычной библиотекой запросов в Google Compute Engine, и все работает нормально, поэтому я действительно считаю, что это проблема с использованием запросов aiohttp.

Комментарии:

1. Что содержится content во время выполнения поиска?

2. Ах, я вижу, это recaptcha. <!DOCTYPE html> <html lang=»en» xmlns=» w3.org/1999/xhtml «> <заголовок> <заголовок> Вы человек? </title> . . . grecaptcha.ready(функция () Знаете ли вы, есть ли способ обойти это, и по какой причине я сталкиваюсь с recaptcha через aiohttp, а не с запросами?

3. Возможно, это невозможно. Помните, что идея recaptcha и других подобных проверок может заключаться в том, чтобы предотвратить именно то, что вы пытаетесь сделать. Такое ощущение, что вы работаете над «роботом», который сканирует веб-страницы, и когда я когда-либо вижу recaptcha, название истории — доказать, что «вы не робот».

4. Кроме того, я бы рекомендовал вам проверить пользовательский агент, который вы используете для отправки этого запроса. Но да, как указано в комментарии выше, веб-сайты, защищенные recaptcha, пытаются избегать именно таких действий (автоматические действия)

5. Отлично, спасибо за советы, люди. Я просто подумал, что это странно, потому что я мог делать это с запросами просто отлично, но у меня были проблемы с aiohttp.