From e2113d648685216beb46def169fcb0d39b614dd0 Mon Sep 17 00:00:00 2001 From: Andrei Date: Fri, 2 Nov 2018 01:21:58 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3?= =?UTF-8?q?=D0=B0=20=D0=B8=20=D1=82=D1=80=D0=B5=D0=B1=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20=D0=BF=D1=80=D0=B8=20=D1=83=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B5=20=D0=B1=D0=B8=D0=B1=D0=BB?= =?UTF-8?q?=D0=B8=D0=BE=D1=82=D0=B5=D0=BA=D0=B8=20fake=5Fuseragent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Перерработка модуля NoCaptchaTask - удаление параметров для подключения к прокси(перенос этих параметров в `**kwargs`). Удаление использования fake_useragent, теперь пользователь сам должен задавать это поле. Добавление типизации в captcha_handler метод. --- python3_anticaptcha/NoCaptchaTask.py | 45 ++++++++++------------------ python3_anticaptcha/config.py | 9 ------ setup.py | 1 - 3 files changed, 16 insertions(+), 39 deletions(-) diff --git a/python3_anticaptcha/NoCaptchaTask.py b/python3_anticaptcha/NoCaptchaTask.py index 17a8735..8cebb67 100644 --- a/python3_anticaptcha/NoCaptchaTask.py +++ b/python3_anticaptcha/NoCaptchaTask.py @@ -3,28 +3,24 @@ import requests import asyncio import aiohttp -from .config import create_task_url, app_key, user_agent_data +from .config import create_task_url, app_key from .errors import ParamError, ReadError, IdGetError from .get_answer import get_sync_result, get_async_result class NoCaptchaTask: - def __init__(self, anticaptcha_key: str, proxyAddress: str, proxyPort: int, sleep_time: int = 5, proxyType: str = 'http', callbackUrl: str = None, **kwargs): + def __init__(self, anticaptcha_key: str, sleep_time: int = 10, callbackUrl: str = None, **kwargs): """ Модуль отвечает за решение NoCaptcha. - userAgent рандомно берётся из актульного списка браузеров-параметров :param anticaptcha_key: ключ от АнтиКапчи - :param proxyAdress: Адрес прокси-сервера - :param proxyPort: Порт сервера - :param proxyType: Тип прокси http/socks5/socks4 - :param sleeptime: Время ожидания решения + :param sleep_time: Время ожидания решения :param callbackUrl: URL для решения капчи с ответом через callback - :param kwargs: Необязательные параметры, можно переопределить userAgent + :param kwargs: Параметры для подключения к прокси. Подробнее в официальной документации или примерe - anticaptcha_examples/anticaptcha_nocaptcha_example.py """ - if sleep_time < 5: - raise ValueError(f'Параметр `sleep_time` должен быть не менее 5. Вы передали - {sleep_time}') + if sleep_time < 10: + raise ValueError(f'Параметр `sleep_time` должен быть не менее 10. Вы передали - {sleep_time}') self.sleep_time = sleep_time # Пайлоад для создания задачи @@ -32,10 +28,6 @@ class NoCaptchaTask: "task": { "type": "NoCaptchaTask", - "userAgent": user_agent_data, - "proxyType": proxyType, - "proxyAddress": proxyAddress, - "proxyPort": proxyPort, }, "softId": app_key } @@ -52,7 +44,7 @@ class NoCaptchaTask: self.task_payload['task'].update({key: kwargs[key]}) # Работа с капчей - def captcha_handler(self, websiteURL, websiteKey, **kwargs): + def captcha_handler(self, websiteURL: str, websiteKey: str): """ Метод получает ссылку на страницу, где расположена капча, и ключ капчи :param: websiteURL: Ссылка на страницу с капчёй @@ -62,7 +54,7 @@ class NoCaptchaTask: self.task_payload['task'].update({"websiteURL": websiteURL, "websiteKey": websiteKey}) # отправляем реквест, в ответ получаем JSON содержащий номер решаемой капчи - captcha_id = requests.post(create_task_url, json=self.task_payload, **kwargs).json() + captcha_id = requests.post(create_task_url, json=self.task_payload).json() # Проверка статуса создания задачи, если создано без ошибок - извлекаем ID задачи, иначе возвращаем ответ сервера if captcha_id['errorId'] == 0: @@ -82,18 +74,17 @@ class NoCaptchaTask: class aioNoCaptchaTask: - def __init__(self, anticaptcha_key: str, proxyAddress: str, proxyPort: int, sleep_time: str = 5, proxyType: str = 'http', callbackUrl: str = None, **kwargs): + def __init__(self, anticaptcha_key: str, sleep_time: str = 10, callbackUrl: str = None, **kwargs): """ Модуль отвечает за решение NoCaptcha. - userAgent рандомно берётся из актульного списка браузеров-параметров :param anticaptcha_key: ключ от АнтиКапчи - :param proxyAdress: Адрес прокси-сервера - :param proxyPort: Порт сервера - :param proxyType: Тип прокси http/socks5/socks4 - :param sleeptime: Время ожидания решения - :param callbackUrl: URL для решения капчи с ответом через callback - :param kwargs: Необязательные параметры, можно переопределить userAgent + :param sleep_time: Время ожидания решения + :param callbackUrl: URL для решения капчи с ответом через callback + :param kwargs: Параметры для подключения к прокси. Подробнее в официальной документации или примерe - anticaptcha_examples/anticaptcha_nocaptcha_example.py """ + + if sleep_time < 10: + raise ValueError(f'Параметр `sleep_time` должен быть не менее 10. Вы передали - {sleep_time}') self.sleep_time = sleep_time # Пайлоад для создания задачи @@ -101,10 +92,6 @@ class aioNoCaptchaTask: "task": { "type": "NoCaptchaTask", - "userAgent": user_agent_data, - "proxyType": proxyType, - "proxyAddress": proxyAddress, - "proxyPort": proxyPort, }, "softId": app_key } @@ -121,7 +108,7 @@ class aioNoCaptchaTask: self.task_payload['task'].update({key: kwargs[key]}) # Работа с капчей - async def captcha_handler(self, websiteURL, websiteKey): + async def captcha_handler(self, websiteURL: str, websiteKey: str): """ Метод получает ссылку на страницу, где расположена капча, и ключ капчи :param: websiteURL: Ссылка на страницу с капчёй diff --git a/python3_anticaptcha/config.py b/python3_anticaptcha/config.py index 387e35c..e0cd58a 100644 --- a/python3_anticaptcha/config.py +++ b/python3_anticaptcha/config.py @@ -24,12 +24,3 @@ RTMQ_PASSWORD = 'password' RTMQ_HOST = '85.255.8.26' RTMQ_PORT = 5672 RTMQ_VHOST = 'anticaptcha_vhost' - -# random user agent data -# получаем рандомный userAgent -# TODO протестировать `fake_useragent` на исправление старых беспричинных падений и обновить получение данных -from fake_useragent import UserAgent -try: - user_agent_data = UserAgent().random -except: - user_agent_data = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)' diff --git a/setup.py b/setup.py index 34410c6..6f59439 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,6 @@ setup( packages = ['python3_anticaptcha'], install_requires = [ - 'fake-useragent==0.1.11', 'requests==2.20.0', 'aiohttp==3.4.4', 'pika==0.12.0'