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

python
Теги: #<Tag:0x00007fedb821f928>

(Наталья Рощина) #1

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


(Dmitry Nesterov) #2

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


(Yury) #3

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

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

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


(Наталья Рощина) #4

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


(Dmytro) #5

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

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


(Наталья Рощина) #6

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


(Dmytro) #7

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


(ex3me0) #8

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


(ex3me0) #9

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


(Наталья Рощина) #10

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


(ex3me0) #11

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


(Наталья Рощина) #12

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