2017-10-30 11:37:39 +00:00
|
|
|
|
import asyncio
|
2018-07-27 10:15:17 +00:00
|
|
|
|
import base64
|
|
|
|
|
import requests
|
2017-10-30 11:37:39 +00:00
|
|
|
|
|
2017-10-29 20:21:06 +00:00
|
|
|
|
from python3_anticaptcha import ImageToTextTask
|
2018-05-15 11:18:17 +00:00
|
|
|
|
from python3_anticaptcha import errors
|
2017-10-29 20:21:06 +00:00
|
|
|
|
|
|
|
|
|
ANTICAPTCHA_KEY = ""
|
|
|
|
|
"""
|
|
|
|
|
Данная библиотека реализует два различных метода для сохранения изображений(для последующей их передачи сервису):
|
2018-07-27 10:15:17 +00:00
|
|
|
|
1. В качестве временного файла, параметр задаётся по умолчанию:
|
2017-10-29 20:21:06 +00:00
|
|
|
|
save_format = 'temp' .
|
|
|
|
|
2. В качестве обычного файла, для этого нужно передать:
|
2017-12-15 11:24:20 +00:00
|
|
|
|
save_format = 'const' . !!!Используйте данный параметр при работе через Windows. USE IT ON WINDOWS!!!
|
2018-07-27 10:15:17 +00:00
|
|
|
|
========================================================================================================================
|
|
|
|
|
This library implements two different methods for saving images (for their subsequent transfer to the service):
|
|
|
|
|
1. As a temporary file, the parameter is set by default:
|
|
|
|
|
save_format = 'temp'.
|
|
|
|
|
2. As a normal file, you need to pass this:
|
2018-10-21 18:11:22 +00:00
|
|
|
|
save_format = 'const' . !!! USE IT ON WINDOWS !!!
|
2017-10-29 20:21:06 +00:00
|
|
|
|
"""
|
2017-12-15 11:24:20 +00:00
|
|
|
|
# Пример который показывает работу антикапчи при решении капчи-изображением и сохранением её в качестве обычного файла в
|
|
|
|
|
# папку.
|
|
|
|
|
# Example for working with captcha-image link, and save it like a usual file in system.
|
|
|
|
|
|
|
|
|
|
result = ImageToTextTask.ImageToTextTask(anticaptcha_key=ANTICAPTCHA_KEY, save_format='const') \
|
|
|
|
|
.captcha_handler(captcha_link='http://85.255.8.26/static/image/common_image_example/800070.png')
|
|
|
|
|
print(result)
|
|
|
|
|
|
2017-10-29 20:21:06 +00:00
|
|
|
|
# Пример который показывает работу антикапчи при решении капчи-изображением и сохранением её в качестве ВРЕМЕННОГО файла
|
2017-12-15 11:24:20 +00:00
|
|
|
|
# Протестировано на Линуксах. Не используйте данный вариант на Windows! Возможно починим, но потом.
|
|
|
|
|
# Example for working with captcha-image like a temporary file. Tested on UNIX-based systems. Don`t use it on Windows!
|
|
|
|
|
result = ImageToTextTask.ImageToTextTask(anticaptcha_key=ANTICAPTCHA_KEY) \
|
|
|
|
|
.captcha_handler(captcha_link='http://85.255.8.26/static/image/common_image_example/800070.png')
|
2017-10-30 11:37:39 +00:00
|
|
|
|
print(result)
|
|
|
|
|
|
2018-05-15 11:18:17 +00:00
|
|
|
|
"""
|
2018-07-27 10:15:17 +00:00
|
|
|
|
========================================================================================================================
|
|
|
|
|
Base64 files
|
|
|
|
|
|
|
|
|
|
Пример работы с декодированием в base64 файла-капчи "налету"
|
|
|
|
|
An example of working with decoding in base64 captcha-file after download. On-the-fly-encoding
|
|
|
|
|
"""
|
|
|
|
|
base_64_link = base64.b64encode(requests.get("http://85.255.8.26/static/image/common_image_example/862963.png").content).decode('utf-8')
|
2017-10-30 11:37:39 +00:00
|
|
|
|
|
2018-07-27 10:15:17 +00:00
|
|
|
|
user_answer_base64 = ImageToTextTask.ImageToTextTask(anticaptcha_key=ANTICAPTCHA_KEY).captcha_handler(captcha_base64=base_64_link)
|
2017-12-14 20:41:13 +00:00
|
|
|
|
|
|
|
|
|
"""
|
2017-12-15 11:24:20 +00:00
|
|
|
|
Пример работы со скачанными файлами изображений капчи.
|
|
|
|
|
Example for working with downloaded file.
|
2017-12-14 20:41:13 +00:00
|
|
|
|
"""
|
|
|
|
|
# Синхронный
|
|
|
|
|
# папка в которой находится изображение, один из вариантов написания
|
2017-12-15 11:24:20 +00:00
|
|
|
|
# The path to the file must be transferred in this format to the method
|
2018-05-15 11:18:17 +00:00
|
|
|
|
captcha_file = '088636.png'
|
2017-12-14 20:41:13 +00:00
|
|
|
|
# так же есть возможность передать так:
|
2017-12-15 11:24:20 +00:00
|
|
|
|
# or in this format:
|
2017-12-14 20:41:13 +00:00
|
|
|
|
# captcha_file = 'D:\/Python\/933588.png'
|
2018-05-15 11:18:17 +00:00
|
|
|
|
# captcha_file = r'D:\Python\933588.png'
|
2017-12-14 20:41:13 +00:00
|
|
|
|
|
2017-12-15 11:24:20 +00:00
|
|
|
|
result = ImageToTextTask.ImageToTextTask(anticaptcha_key=ANTICAPTCHA_KEY).captcha_handler(captcha_file=captcha_file)
|
2017-12-14 20:41:13 +00:00
|
|
|
|
print(result)
|
2018-05-15 11:18:17 +00:00
|
|
|
|
"""
|
|
|
|
|
Пример для работы с локальными файлами
|
|
|
|
|
"""
|
|
|
|
|
# папка в которой находится изображение, один из вариантов написания
|
2017-12-14 20:41:13 +00:00
|
|
|
|
|
2018-05-15 11:18:17 +00:00
|
|
|
|
# так же есть возможность передать так:
|
|
|
|
|
# captcha_file = r'D:\Python\933588.png'
|
|
|
|
|
# captcha_file = 'D:\/Python\/933588.png'
|
|
|
|
|
try:
|
|
|
|
|
user_answer_local = ImageToTextTask.ImageToTextTask(anticaptcha_key=ANTICAPTCHA_KEY).captcha_handler(captcha_file=captcha_file)
|
|
|
|
|
if user_answer_local['errorId'] == 0:
|
|
|
|
|
# решение капчи
|
2018-10-21 18:11:22 +00:00
|
|
|
|
print(user_answer_local['solution']['text'])
|
2018-05-15 11:18:17 +00:00
|
|
|
|
elif user_answer_local['errorId'] == 1:
|
|
|
|
|
# Тело ошибки, если есть
|
|
|
|
|
print(user_answer_local['errorBody'])
|
|
|
|
|
|
|
|
|
|
# отлов ошибки при проблемах чтения файла-изображения
|
|
|
|
|
except errors.ReadError as err:
|
|
|
|
|
print(err)
|
2017-12-15 11:24:20 +00:00
|
|
|
|
|
2018-07-27 10:15:17 +00:00
|
|
|
|
"""
|
|
|
|
|
========================================================================================================================
|
|
|
|
|
Asynchronous examples
|
|
|
|
|
|
|
|
|
|
Пример асинхронного запуска решения капчи
|
|
|
|
|
# AsyncIO example. Work with constant-saved file.
|
|
|
|
|
"""
|
|
|
|
|
async def run():
|
|
|
|
|
try:
|
|
|
|
|
resolve = await ImageToTextTask.aioImageToTextTask(anticaptcha_key=ANTICAPTCHA_KEY, save_format='const') \
|
|
|
|
|
.captcha_handler(captcha_link='http://85.255.8.26/static/image/common_image_example/800070.png')
|
|
|
|
|
|
|
|
|
|
print(resolve)
|
|
|
|
|
|
2017-12-17 15:05:33 +00:00
|
|
|
|
resolve = await ImageToTextTask.aioImageToTextTask(anticaptcha_key=ANTICAPTCHA_KEY)\
|
|
|
|
|
.captcha_handler(captcha_file=captcha_file)
|
2017-12-15 11:24:20 +00:00
|
|
|
|
|
|
|
|
|
print(resolve)
|
2018-10-21 18:11:22 +00:00
|
|
|
|
|
|
|
|
|
resolve = await ImageToTextTask.aioImageToTextTask(anticaptcha_key = ANTICAPTCHA_KEY) \
|
|
|
|
|
.captcha_handler(captcha_base64=base_64_link)
|
|
|
|
|
|
|
|
|
|
print(resolve)
|
|
|
|
|
|
2017-12-15 11:24:20 +00:00
|
|
|
|
except Exception as err:
|
|
|
|
|
print(err)
|
2017-12-14 20:41:13 +00:00
|
|
|
|
|
|
|
|
|
|
2017-10-30 11:37:39 +00:00
|
|
|
|
if __name__ == '__main__':
|
2017-12-15 11:24:20 +00:00
|
|
|
|
loop = asyncio.get_event_loop()
|
|
|
|
|
loop.run_until_complete(run())
|
|
|
|
|
loop.close()
|