Автоматическое решение капчи с использованием сервиса Anti Capcha

30.07.18

Интеграция - WEB-интеграция

В данной статье приводится пример автоматического решения капчи с целью авторизации и дальнейшего использования веб ресурса.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Автоматическое решение капчи с использованием сервиса Anti Capcha:
.epf 7,19Kb
2
2
1 SM
Скачать Купить за 1 850 руб.

Решение капчи с помощью сервиса Anti Capcha можно условно разделить на 3 этапа:

  1. Получение изображения в Base64
  2. Создание задачи на решение 
  3. Получение результата решения

Накидаем простенький интерфейс - форма, реквизит вида картинка, реквизит поле ввода, 2 команды;

  • GetImage - получение капчи, помещение в хранилище, вывод на форму
  • SolveCapcha - создание задачи на решение и вывод результа

Фича делалась для англоязычного проекта поэтому код будет на английском.
Получаем картинку с веб ресурса get запросом, помещаем во временное хранилище и выводим на форму:

&AtClient
Procedure GetImage(Command)
	ImageBinary = GetImageAtServer(); 
	Image = PutToTempStorage(ImageBinary,UUID);
EndProcedure

&AtServer
Function GetImageAtServer()
	Headers = New Map;	
	Headers.Insert("Host", "www.adultwork.com");
	Headers.Insert("Connection", "keep-alive");
	Headers.Insert("Upgrade-Insecure-Requests", "1");
	Headers.Insert("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
	Headers.Insert("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36");
	Headers.Insert("Accept-Language", "en-US,en;q=0.8,ru;q=0.6");
	Headers.Insert("Cookie", "C=149; ReferralID=0;CameViaEntryPage=CountryID=149&GMTOffset=%2D180&HitID=1234660132&Time=12%2F09%2F2017+20%3A37%3A31");
	
	Connection = New HTTPConnection("www.adultwork.com",,,,,, New OpenSSLSecureConnection);
	Request = New HTTPRequest("imgTuring.asp", Headers);
	Response = Connection.CallHTTPMethod("GET", Request);

	ImageBinary = Response.GetBodyAsBinaryData();
	Return ImageBinary; 
EndFunction

Далее приступаем к решению. Заводим клиентский ключ с сайта, получаем картинку и передаем данные в следующую функцию.

&AtClient
Procedure SolveCaptcha(Command)
	ClientKey = "ххххххххххххххххххххххххх"; //put your key here
	ImageBinary = GetFromTempStorage(Image);
	Captcha = SolveCaptchaAtServer(ImageBinary,ClientKey);
EndProcedure

Создаем соединение, заполняем заголовки запроса и создаем задачу на решение. Если задача создана успешно, получаем результат решения. Т.к капчу решают сотрудники сервиса, то нужно некоторое время на ее решение. Методом подбора было установлено, что капча решается в среднем за 10 секунд. Делаем задержку и получаем результат решения.

&AtServer
Function SolveCaptchaAtServer(ImageBinary,ClientKey)
	Connection = New HTTPConnection("api.anti-captcha.com");
	Headers = New Map;
	Headers.Insert("Host", "api.anti-captcha.com");
	Headers.Insert("Connection", "keep-alive"); 
	Headers.Insert("Content-Type", "multipart/form-data");	
		
	TaskResult = CreateTask(Connection,Headers,ClientKey,ImageBinary);
	If TaskResult.errorId = 0 Then
		Delay(10);
		TaskResultBody = GetTaskResultBody(Connection,Headers,ClientKey,TaskResult.taskId);
		If TaskResultBody.errorId = 0 Then
			Return TaskResultBody.solution.text;		
		Else
			Message("Result error");	
		Endif;	
	Else
		Message("Failed to create task.");
	EndIF;		
EndFunction

&AtServer
Procedure Delay(Seconds)
	TimeOut = CurrentDate() + Seconds;
	While CurrentDate() <= TimeOut Do 
		//TODO: waiting
	EndDo;	
EndProcedure

Для создания задачи необходимо перевести картинку в Base64 и создать текст POST запроса. В ответе мы получим код ошибки (если ошибки нет код - 0) и id созданной задачи. 

&AtServer
Function CreateTask(Connection,Headers,ClientKey,ImageBinary)
	Base64Img = Base64String(ImageBinary);
	JSONBody = GetTaskBody(Base64Img,ClientKey);	
	Request = New HTTPRequest("/createTask", Headers);
	Request.SetBodyFromString(JSONBody);
	Response = Connection.CallHTTPMethod("POST", Request);
	ResultJson = Response.GetBodyAsString();	
	ReadJson = New JSONReader;
	ReadJson.SetString(ResultJson);
	Return ReadJSON(ReadJson); 
EndFunction	

&AtServer
Function GetTaskBody(Base64Img,ClientKey)
	WriteJson = New JSONWriter;
	WriteJson.SetString();	
	JsonBody = New Structure;
	JsonBody.Insert("clientKey",ClientKey);
	JsonTask = New Structure;
	JsonTask.Insert("type","ImageToTextTask");
	JsonTask.Insert("body",Base64Img);
	JsonTask.Insert("phrase",False);
	JsonTask.Insert("case",False);
	JsonTask.Insert("numeric",False);
	JsonTask.Insert("math",0);
	JsonTask.Insert("minLength",0);
	JsonTask.Insert("maxLength",0);
	JsonBody.Insert("task",JsonTask);
	WriteJSON(WriteJson,JsonBody);	
	Return WriteJson.Close();	
EndFunction

Для получения результата решения нужно отправить POST запрос с id задачи и пользовательским ключом.

&AtServer
Function GetTaskResultBody(Connection,Headers,ClientKey,TaskId)							
	WriteJson = New JSONWriter;
	WriteJson.SetString();
	JsonBody = New Structure;
	JsonBody.Insert("clientKey",ClientKey);
	JsonBody.Insert("taskId",Format(TaskId,"NG="));
	WriteJSON(WriteJson,JsonBody);

	SerializenStr = WriteJson.Close();
	Request = New HTTPRequest("/getTaskResult", Headers);
	Request.SetBodyFromString(SerializenStr);
	Response = Connection.CallHTTPMethod("POST", Request);
	ResultJson = Response.GetBodyAsString();

	ReadJson = New JSONReader;
	ReadJson.SetString(ResultJson);
	Return ReadJSON(ReadJson);	
EndFunction

Таким образом можно логиниться в системе, получать куки и использовать эти данные для авторизации. 
Спасибо за внимание, всем удачи!

anti capcha капча capcha

См. также

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18848    10    15    

16

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16635    15    19    

15

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16914    45    49    

24

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    13283    35    8    

15

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    87053    26    51    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bulpi 216 30.07.18 12:59 Сейчас в теме
"Т.к капчу решают сотрудники сервиса, то нужно некоторое время на ее решение"
???? Т.е. там сидят негры, которые посылают ответ руками ?
2. samoylov093 13 30.07.18 20:48 Сейчас в теме
(1) не обязательно негры, но в общем да)
Оставьте свое сообщение