From 2616796cdf2a657f755512ac7085d8dcfb509ca6 Mon Sep 17 00:00:00 2001 From: Andrei Date: Tue, 24 Oct 2017 14:20:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D1=80=D0=B5=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=A0=D0=B5=D0=9A=D0=B0=D0=BF=D1=87?= =?UTF-8?q?=D0=B8=20=D0=B1=D0=B5=D0=B7=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=BA=D1=81=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- python3_anticaptcha/NoCaptchaTaskProxyless.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 python3_anticaptcha/NoCaptchaTaskProxyless.py diff --git a/python3_anticaptcha/NoCaptchaTaskProxyless.py b/python3_anticaptcha/NoCaptchaTaskProxyless.py new file mode 100644 index 0000000..867f9e0 --- /dev/null +++ b/python3_anticaptcha/NoCaptchaTaskProxyless.py @@ -0,0 +1,65 @@ +import requests +import time + +from .config import create_task_url, get_result_url, app_key +# from .errors import RuCaptchaError +#TODO Добавить документацию + + +class NoCaptchaTaskProxyless: + def __init__(self, anticaptcha_key, sleep_time=5, **kwargs): + + self.ANTICAPTCHA_KEY = anticaptcha_key + self.sleep_time = sleep_time + + # Пайлоад для создания задачи + self.task_payload = {"clientKey": self.ANTICAPTCHA_KEY, + "task": + { + "type": "NoCaptchaTaskProxyless", + }, + } + + # отправляем запрос на результат решения капчи, если ещё капча не решена - ожидаем 5 сек + # если всё ок - идём дальше + self.result_payload = {"clientKey": self.ANTICAPTCHA_KEY} + + # Если переданы ещё параметры - вносим их в payload + if kwargs: + for key in kwargs: + self.task_payload['task'].update({key: kwargs[key]}) + + # Работа с капчёй + def captcha_handler(self, websiteURL, websiteKey): + + # вставляем в пайлоад адрес страницы и ключ-индентификатор рекапчи + self.task_payload['task'].update({"websiteURL": websiteURL, + "websiteKey": websiteKey}) + # Отправляем на антикапчу пайлоад + # в результате получаем JSON ответ содержащий номер решаемой капчи + captcha_id = requests.post(create_task_url, json=self.task_payload).json() + + # Проверка статуса создания задачи, если создано без ошибок - извлекаем ID задачи, иначе возвращаем ответ сервера + if captcha_id['errorId'] == 0: + captcha_id = captcha_id["taskId"] + self.result_payload.update({"taskId": captcha_id}) + else: + return captcha_id + + # Ожидаем решения капчи + time.sleep(self.sleep_time) + while True: + # отправляем запрос на результат решения капчи, если не решена ожидаем + captcha_response = requests.post(get_result_url, json=self.result_payload) + + # Если ошибки нет - проверяем статус капчи + if captcha_response.json()['errorId'] == 0: + # Если капча ещё не готова- ожидаем + if captcha_response.json()["status"] == "processing": + time.sleep(self.sleep_time) + # если уже решена - возвращаем ответ сервера + else: + return captcha_response.json() + # Иначе возвращаем ответ сервера + else: + return captcha_response.json()