RECAPTCHA со строннего сайта, как обойти?

Ребята, добрый вечер! Кто может подсказать на сегодняшний момент, если какое-то рещение, чтобы обойти RECAPTCHA, которая подтягивается со стороннего сайта? Средствами Selenium это сделать невозможно, кто как решал эту проблему? Очень жду любого ответа :slightly_smiling_face:

1 лайк

К сожалению вряд ли вам удастся это сделать, иначе в чем смысл ее? Если бы это был ваш продукт (сайт) тогда модно было бы внести ваш ай пи в вайт лист и заблокировать ее путем добавления в URL ?captcha_no=true ну или что-то в этом роде. А если сайт не ваш, как вы указали выше, то единственным решением будет просто добавить wait и ручками вводить то что нужно. Например
WebDriverWait wait = new WebDriverWait;
WebElement вашеИмя = wait.until(ExpectedCondition.visibilityOfElemetLocated(ваш елемент после каптчи));
Знаю,что это не то что вы ожидали, но к сожалению думаю, что другого решения нет.

По большому счету есть два пути:

Трудный путь в вечность >>

Лёгкий путь в никуда >>

8 лайков

Спасибо! Я поняла, что recaptcha со стороннего сайта не обойти. Может кто-то подскажет, как используя py.test оставаться в учетной записи для дальнейших тестов, чтобы не логиниться много раз?

Общий принцип таков что вам нужно после логина запомнить куку сессии. На java это выглядит так
Cookie session_cookie = driver.manage().getCookieNamed("[your_session_cookie_name]").
А перед тем как снова залогиниться, и вы уже ранее вылогинились, то куку сессии снова поместить в драйвер:
driver.manage().addCookie(session_cookie);

На python будет только синтаксис отличаться.

3 лайка

Интересная идея! Спасибо, Дмитрий, попробую!

1 лайк

Вернее вам уже логиниться не надо будет. Сервер по куке сесии вас идентифицирует как клиента при выполнении любого запроса.

Это в случае, если используется только сессионная кука. Если дополнительно задействован локал-сторедж браузера - такой воркэраунд не прокатит

Что мешает логиниться единожды на протяжении тестового набора/модуля? Модульные фикстуры есть для этого.

Это используя @pytest.fixture(scope=‘module’)?

Именно. Так же подойдет и session, или class, в зависимости от того как организованы тесты
Тут вроде довольно неплохо расписано что к чему, важно лишь понимание преследуемой цели: http://pythontesting.net/framework/pytest/pytest-session-scoped-fixtures/

Спасибо за ссылку, буду разбираться!

Не проще ли и универсальнее — использовать сервис распознавания капч?