This commit is contained in:
redV0ID 2017-10-27 21:46:20 +07:00
commit 8534c57520
3 changed files with 37 additions and 15 deletions

7
.gitignore vendored
View File

@ -1,11 +1,6 @@
# Created by .ignore support plugin (hsz.mobi)
.idea/.name
.idea/PythonAntiCaptcha.iml
.idea/inspectionProfiles/
.idea/misc.xml
.idea/modules.xml
.idea/workspace.xml
/test.py
.idea/preferred-vcs.xml
.idea/python3-anticaptcha.iml
python3_anticaptcha/__pycache__/
/.idea/

View File

@ -2,11 +2,19 @@ import requests
import time
from .config import create_task_url, get_result_url, app_key, user_agent_data
# from .errors import RuCaptchaError
#TODO Добавить документацию
class FunCaptchaTask:
def __init__(self, anticaptcha_key, sleep_time=5, proxyType = 'http', proxyAddress = None, proxyPort = None, **kwargs):
"""
Модуль отвечает за решение FunCaptcha
Параметр userAgent рандомно берётся из актульного списка браузеров-параметров
:param anticaptcha_key: Ключ от АнтиКапчи
:param sleep_time: Время ожидания решения
:param proxyType: Тип прокси http/socks5/socks4
:param proxyAddress: Адрес прокси-сервера
:param proxyPort: Порт сервера
:param kwargs: Можно передать необязательные параметры и переопределить userAgent
"""
self.ANTICAPTCHA_KEY = anticaptcha_key
self.sleep_time = sleep_time
@ -23,8 +31,7 @@ class FunCaptchaTask:
},
}
# отправляем запрос на результат решения капчи, если ещё капча не решена - ожидаем 5 сек
# если всё ок - идём дальше
# пайлоад для получения ответа сервиса
self.result_payload = {"clientKey": self.ANTICAPTCHA_KEY}
# Если переданы ещё параметры - вносим их в payload
@ -34,16 +41,22 @@ class FunCaptchaTask:
# Работа с капчёй
def captcha_handler(self, websiteURL, websitePublicKey):
"""
Метод получает ссылку на страницу на которпой расположена капча и ключ капчи
:param websiteURL: Ссылка на страницу с капчёй
:param websitePublicKey: Ключ капчи(как его получить - описано в документаии на сайте антикапчи)
:return: Возвращает ответ сервера в виде JSON(ответ так же можно глянуть в документации антикапчи)
"""
self.task_payload['task'].update({"websiteURL": websiteURL,
"websiteKey": websitePublicKey})
# Отправляем на антикапча изображение капчи и другие парметры,
# Отправляем на антикапча параметры фанкапич,
# в результате получаем 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

20
test.py
View File

@ -1,5 +1,19 @@
from python3_anticaptcha import ImageToTextTask, config
from python3_anticaptcha import ImageToTextTask, config, AntiCaptchaControl, FunCaptchaTask, NoCaptchaTaskProxyless
key = config.TEST_KEY
print(ImageToTextTask.ImageToTextTask(key, save_format = 'const').captcha_handler('http://85.255.8.26/static/image/common_image_example/800070.png'))
print(ImageToTextTask.ImageToTextTask(key).captcha_handler('http://85.255.8.26/static/image/common_image_example/800070.png'))
#print(ImageToTextTask.ImageToTextTask(key, save_format = 'const').captcha_handler('http://85.255.8.26/static/image/common_image_example/800070.png'))
#print(AntiCaptchaControl.AntiCaptchaControl(anticaptcha_key = config.TEST_KEY).complaint_on_result(reported_id = -5))
print(AntiCaptchaControl.AntiCaptchaControl(anticaptcha_key = config.TEST_KEY).get_balance())
'''
print(FunCaptchaTask.FunCaptchaTask(config.TEST_KEY,
proxyType='HTTP',
proxyAddress="8.8.8.8",
proxyPort=8080,
proxyLogin="proxyLoginHere",
proxyPassword="proxyPasswordHere")
.captcha_handler(websiteURL='85.450.48',
websitePublicKey='789456132'))
'''
print(NoCaptchaTaskProxyless.NoCaptchaTaskProxyless(anticaptcha_key=config.TEST_KEY)
.captcha_handler(websiteURL='https://www.google.com/recaptcha/intro/android.html',
websiteKey='6LeuMjIUAAAAAODtAglF13UiJys0y05EjZugej6b'))