diff --git a/.gitignore b/.gitignore index c36bd10..5fc3b2f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /test.py python3_anticaptcha/__pycache__/ /.idea/ +/python3_anticaptcha.egg-info/ diff --git a/python3_anticaptcha/FunCaptchaTask.py b/python3_anticaptcha/FunCaptchaTask.py index ad2c53f..5fa96de 100644 --- a/python3_anticaptcha/FunCaptchaTask.py +++ b/python3_anticaptcha/FunCaptchaTask.py @@ -4,7 +4,7 @@ import time from .config import create_task_url, get_result_url, app_key, user_agent_data class FunCaptchaTask: - def __init__(self, anticaptcha_key, sleep_time=5, proxyType = 'http', proxyAddress = None, proxyPort = None, **kwargs): + def __init__(self, anticaptcha_key, proxyAddress, proxyPort, sleep_time=5, proxyType = 'http', **kwargs): """ Модуль отвечает за решение FunCaptcha Параметр userAgent рандомно берётся из актульного списка браузеров-параметров @@ -15,12 +15,10 @@ class FunCaptchaTask: :param proxyPort: Порт сервера :param kwargs: Можно передать необязательные параметры и переопределить userAgent """ - - self.ANTICAPTCHA_KEY = anticaptcha_key self.sleep_time = sleep_time # Пайлоад для создания задачи - self.task_payload = {"clientKey": self.ANTICAPTCHA_KEY, + self.task_payload = {"clientKey": anticaptcha_key, "task": { "type": "FunCaptchaTask", @@ -32,7 +30,7 @@ class FunCaptchaTask: } # пайлоад для получения ответа сервиса - self.result_payload = {"clientKey": self.ANTICAPTCHA_KEY} + self.result_payload = {"clientKey": anticaptcha_key} # Если переданы ещё параметры - вносим их в payload if kwargs: diff --git a/python3_anticaptcha/ImageToTextTask.py b/python3_anticaptcha/ImageToTextTask.py index 18f8652..1450199 100644 --- a/python3_anticaptcha/ImageToTextTask.py +++ b/python3_anticaptcha/ImageToTextTask.py @@ -26,13 +26,11 @@ class ImageToTextTask: :param language: Язык капчи :param **kwargs: За подробной информацией обратитесь к документации на сайте anticaptcha. ''' - - self.ANTICAPTCHA_KEY = anticaptcha_key self.sleep_time = sleep_time self.save_format = save_format # Пайлоад для создания задачи - self.task_payload = {"clientKey": self.ANTICAPTCHA_KEY, + self.task_payload = {"clientKey": anticaptcha_key, "task": { "type": "ImageToTextTask", @@ -42,7 +40,7 @@ class ImageToTextTask: # отправляем запрос на результат решения капчи, если ещё капча не решена - ожидаем 5 сек # если всё ок - идём дальше - self.result_payload = {"clientKey": self.ANTICAPTCHA_KEY} + self.result_payload = {"clientKey": anticaptcha_key} # Если переданы ещё параметры - вносим их в payload if kwargs: diff --git a/python3_anticaptcha/NoCaptchaTask.py b/python3_anticaptcha/NoCaptchaTask.py index bb2d537..ab0e957 100644 --- a/python3_anticaptcha/NoCaptchaTask.py +++ b/python3_anticaptcha/NoCaptchaTask.py @@ -1,41 +1,36 @@ import requests +import time + from .config import create_task_url, get_result_url, app_key, user_agent_data -#TODO from .errors import AntiCaptchaError class NoCaptchaTask: - def __init__(self, anticaptcha_key, website_url, website_key, proxy_type="http", proxy_adress=None, - proxy_prot=None, proxy_password=None sleep_time=5, user_agent=user_agent_data, **kwargs): + def __init__(self, anticaptcha_key, proxyAddress, proxyPort, sleep_time=5, proxyType = 'http', **kwargs): """ - TODO :params return: """ - self.ANTIKAPTCHA_KEY = anticaptcha_key self.sleep_time = sleep_time - self.website_url = website_url - self.website_key = website_key - self.proxy_type = proxy_type - self.proxy_adress = proxy_adress - self.proxy_login = proxy_login - self.proxy_password = proxy_password - #TODO заполнить пайлоад для решения рекапчи - self.task_payload = {"clientKey": self.ANTIKAPTCHA_KEY, + # Пайлоад для создания задачи + self.task_payload = {"clientKey": anticaptcha_key, "task": - { - "type": "NoCaptchaTask", - "proxy_type": self.proxy_type, - "proxy_adress": self.proxy_adress, - "proxy_login": self.proxy_login, - "proxy_password": self.proxy_password - } + { + "type": "FunCaptchaTask", + "userAgent": user_agent_data, + "proxyType": proxyType, + "proxyAddress": proxyAddress, + "proxyPort": proxyPort, + }, } - if kwargs: - for key in kwargs: - self.task_payload['task'].update({key: kwargs[key]}) + # пайлоад для получения ответа сервиса + self.result_payload = {"clientKey": anticaptcha_key} + + if kwargs: + for key in kwargs: + self.task_payload['task'].update({key: kwargs[key]}) def captcha_handler(self, websiteURL, websiteKey): diff --git a/python3_anticaptcha/NoCaptchaTaskProxyless.py b/python3_anticaptcha/NoCaptchaTaskProxyless.py index 867f9e0..40cbc8e 100644 --- a/python3_anticaptcha/NoCaptchaTaskProxyless.py +++ b/python3_anticaptcha/NoCaptchaTaskProxyless.py @@ -9,11 +9,10 @@ from .config import create_task_url, get_result_url, app_key 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, + self.task_payload = {"clientKey": anticaptcha_key, "task": { "type": "NoCaptchaTaskProxyless", @@ -22,7 +21,7 @@ class NoCaptchaTaskProxyless: # отправляем запрос на результат решения капчи, если ещё капча не решена - ожидаем 5 сек # если всё ок - идём дальше - self.result_payload = {"clientKey": self.ANTICAPTCHA_KEY} + self.result_payload = {"clientKey": anticaptcha_key} # Если переданы ещё параметры - вносим их в payload if kwargs: diff --git a/python3_anticaptcha/errors.py b/python3_anticaptcha/errors.py deleted file mode 100644 index d246d19..0000000 --- a/python3_anticaptcha/errors.py +++ /dev/null @@ -1,61 +0,0 @@ -class AntiCaptchaError(Exception): - """Базовый класс для всех исключений в этом модуле.""" - def __init__(self, description): - if description=='ERROR_WRONG_USER_KEY': - print(WrongUserKeyError.__doc__) - - - -class WrongUserKeyError(AntiCaptchaError): - """Исключение порождается при неправильном RuCaptcha KEY. - Вы указали значение параметра key в неверном формате, ключ должен содержать 32 символа. - Прекратите отправку запросов и проверьте ваш ключ API. - - ERROR_WRONG_USER_KEY - исключение из таблицы. - """ - -''' -1 ERROR_KEY_DOES_NOT_EXIST Авторизационный ключ не существует в системе или имеет неверный формат (длина не равняется 32 байтам) -2 ERROR_NO_SLOT_AVAILABLE Нет свободных работников в данный момент, попробуйте позже либо повысьте свою максимальную ставку здесь -3 ERROR_ZERO_CAPTCHA_FILESIZE Размер капчи которую вы загружаете менее 100 байт -4 ERROR_TOO_BIG_CAPTCHA_FILESIZE Размер капчи которую вы загружаете более 500,000 байт -10 ERROR_ZERO_BALANCE Баланс учетной записи ниже нуля или равен нулю -11 ERROR_IP_NOT_ALLOWED Запрос с этого IP адреса с текущим ключом отклонен. Управление доступом по IP находится здесь -12 ERROR_CAPTCHA_UNSOLVABLE 5 разных работников не смогли разгадать капчу, задание остановлено -13 ERROR_BAD_DUPLICATES Не хватило заданного количества дублей капчи для функции 100% распознавания. -14 ERROR_NO_SUCH_METHOD Запрос в API выполнен на несуществующий метод -15 ERROR_IMAGE_TYPE_NOT_SUPPORTED Формат капчи не распознан по EXIF заголовку либо не поддерживается. Допустимые форматы: JPG, GIF, PNG -16 ERROR_NO_SUCH_CAPCHA_ID Капча с таким ID не была найдена в системе. Убедитесь что вы запрашиваете состояние капчи в течение 300 секунд после загрузки. -20 ERROR_EMPTY_COMMENT Отсутствует комментарий в параметрах рекапчи версии API 1 -21 ERROR_IP_BLOCKED Доступ к API с этого IP запрещен из-за большого количества ошибок. Узнать причину можно здесь. -22 ERROR_TASK_ABSENT Отсутствует задача в методе createTask. -23 ERROR_TASK_NOT_SUPPORTED Тип задачи не поддерживается или указан не верно. -24 ERROR_INCORRECT_SESSION_DATA Неполные или некорректные данные об эмулируемом пользователе. Все требуемые поля не должны быть пустыми. -25 ERROR_PROXY_CONNECT_REFUSED Не удалось подключиться к прокси-серверу - отказ в подключении -26 ERROR_PROXY_CONNECT_TIMEOUT Таймаут подключения к прокси-серверу -27 ERROR_PROXY_READ_TIMEOUT Таймаут операции чтения прокси-сервера. -28 ERROR_PROXY_BANNED Прокси забанен на целевом сервисе капчи -29 ERROR_PROXY_TRANSPARENT Ошибка проверки прокси. Прокси должен быть не прозрачным, скрывать адрес конечного пользователя. -В противном случае Google будет фильтровать запросы с IP нашего сервера. -30 ERROR_RECAPTCHA_TIMEOUT Таймаут загрузки скрипта рекапчи, проблема либо в медленном прокси, либо в медленном сервере Google -31 ERROR_RECAPTCHA_INVALID_SITEKEY Ошибка получаемая от сервера рекапчи. Неверный/невалидный sitekey. -32 ERROR_RECAPTCHA_INVALID_DOMAIN Ошибка получаемая от сервера рекапчи. Домен не соответствует sitekey. -33 ERROR_RECAPTCHA_OLD_BROWSER Для задачи используется User-Agent неподдерживаемого рекапчей браузера. -34 ERROR_RECAPTCHA_STOKEN_EXPIRED Параметр stoken устарел. Модифицируйте свое приложение, оно должно использовать stoken как можно быстрее. -35 ERROR_PROXY_HAS_NO_IMAGE_SUPPORT Прокси не поддерживает передачу изображений с серверов Google -36 ERROR_PROXY_INCOMPATIBLE_HTTP_VERSION Прокси не поддерживает длинные (длиной 2000 байт) GET запросы и не поддерживает SSL подключения -37 ERROR_FACTORY_SERVER_API_CONNECTION_FAILED Не смогли подключиться к API сервера фабрики в течени 5 секунд. -38 ERROR_FACTORY_SERVER_BAD_JSON -Неправильный JSON ответ фабрики, что-то сломалось. -39 ERROR_FACTORY_SERVER_ERRORID_MISSING API фабрики не вернул обязательное поле errorId -40 ERROR_FACTORY_SERVER_ERRORID_NOT_ZERO Ожидали errorId = 0 в ответе API фабрики, получили другое значение. -41 ERROR_FACTORY_MISSING_PROPERTY Значения некоторых требуемых полей в запросе к фабрике отсутствуют. Клиент должен прислать все требуемы поля. -42 ERROR_FACTORY_PROPERTY_INCORRECT_FORMAT -Тип значения не соответствует ожидаемому в структуре задачи фабрики. Клиент должен прислать значение с требуемым типом. -43 ERROR_FACTORY_ACCESS_DENIED Доступ к управлению фабрикой принадлежит другой учетной записи. Проверьте свой ключ доступа. -44 ERROR_FACTORY_SERVER_OPERATION_FAILED Общий код ошибки сервера фабрики. -45 ERROR_FACTORY_PLATFORM_OPERATION_FAILED Общий код ошибки платформы. -46 ERROR_FACTORY_PROTOCOL_BROKEN Ошибка в протоколе во время выполнения задачи фабрики. -47 ERROR_FACTORY_TASK_NOT_FOUND Задача не найдена или недоступна для этой операции. -48 ERROR_FACTORY_IS_SANDBOXED Фабрика находится в режиме песочницы, создание задач доступно только для владельца фабрики. Переведите фабрику в боевой режим, чтобы сделать ее доступной для всех клиентов. -''' \ No newline at end of file