Распознать код на изображении (капчи) с помощью 1С и сайта http://antigate.com/

28.06.14

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

Нужно с помощь 1с распознать код на изображении (капчи). Решить данную проблему удалось используя API сайта http://antigate.com/panel.php?action=api

Для распознавания кода на изображении (капчи) потребуется аккаунт в системе antigate.

Регистрация аккаунта в системе antigate:

  1. Зайдите на сайт http://antigate.com/panel.php
  2. Заполните поля регистрационной формы и нажмите "регистрация"
  3. Войдите в систему
  4. Перейдите к пополнению баланса (финансы > пополнить баланс)
  5. Введите необходимую сумму (можно ввести 0.1)
  6. Следуйте указаниям системы.
Рекомендую выставлять ставку 2 (распознавание > ставки)
После регистрации и пополнения баланса перейдите к настройкам аккаунта (инструменты > настройки аккаунта).
Скопируйте ключ капчи(captcha ключ).
Теперь, когда у нас есть аккаунт в системе antigate и captcha ключ, приступим к разгадыванию кода на изображении(капчи):
  1. Нужно сохранить изображение(капчу);
  2. Отправить изображение(капчу) и получить идентификатор капчи;
  3. Получить символы с изображения(капчи).

1. Сохраняем изображение(капчу):

&НаКлиенте
Процедура СохранитьКартинкуКапчи()		
	СслкаНаКапчу = "Ваша ссылка на капчу";
	Сервер = "Ваш сервер";
	АдресРесурсаКапчи = СтрЗаменить(СслкаНаКапчу,Сервер ,"")
Попытка
		HTTP =  Новый HTTPСоединение(Сервер);
		ФайлРезультатаКапчи = ПолучитьИмяВременногоФайла("JPG");
		
		КапчаКартинка = Новый HTTPЗапрос(АдресРесурсаКапчи);
		КапчаКартинка.Заголовки.Вставить("Referer", Элементы.ПолеHTMLДокумента.Документ.url);
		КапчаКартинка.Заголовки.Вставить("User-Agent", Элементы.ПолеHTMLДокумента.ИнформацияПрограммыПросмотра);
		КапчаКартинка.Заголовки.Вставить("Cookie", Элементы.ПолеHTMLДокумента.Документ.cookie);
		ОтветКапчи = HTTP.Получить(КапчаКартинка);
		ДвоичныеДанные = ОтветКапчи.ПолучитьТелоКакДвоичныеДанные();
		
		Попытка 			
			ДвоичныеДанные.Записать(ФайлРезультатаКапчи);	
			КапчаИД = ФайлРезультатаКапчи;
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "Картинка капчи записана. " + ФайлРезультатаКапчи;
			Сообщение.Сообщить();
				
			ОтправитьКапчуИПолучитьИДКапчи(ФайлРезультатаКапчи);//(следующий пункт №2)
		Исключение
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "Картинка капчи не записана. ";
			Сообщение.Сообщить(); 
		КонецПопытки; 
			
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не удалось установить соединение и получить картинку капчи. " + ОписаниеОшибки();
		Сообщение.Сообщить(); 
	КонецПопытки;
КонецПроцедуры

2. Отправляем изображение(капчу) и получаем идентификатор капчи:

&НаКлиенте 
Процедура ОтправитьКапчуИПолучитьИДКапчи(ФайлРезультатаКапчи)
	Сервер = "antigate.com";
	АдресРесурса = "/in.php";
	Попытка
		HTTP =  Новый HTTPСоединение(Сервер);
		ФайлЗапроса = Новый Файл(ПолучитьИмяВременногоФайла("TXT"));
		
		Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
		
		ФайлОтправки = Новый ЗаписьТекста(ФайлЗапроса.ПолноеИмя, КодировкаТекста.UTF8, Символы.ПС, Ложь); 
	        //Определяем раздел двоичных данных 
		ФайлОтправки.ЗаписатьСтроку("--" + Boundary); 
	        ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""method""" + Символы.ПС + Символы.ПС); 				
		ФайлОтправки.ЗаписатьСтроку("base64");
		
		ФайлОтправки.ЗаписатьСтроку("--" + Boundary); 
	        ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""key""" + Символы.ПС + Символы.ПС); 				
		ФайлОтправки.ЗаписатьСтроку(XMLСтрока(СокрЛП(КлючАнтиКапчи)));
		
	        ФайлОтправки.ЗаписатьСтроку("--" + Boundary); 
		ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""body"""); 
		ФайлОтправки.ЗаписатьСтроку("Content-Type: image/jpeg" + Символы.ПС + Символы.ПС); 
		СодержимоеФайла = Base64Строка(Новый ДвоичныеДанные(ФайлРезультатаКапчи));
		ФайлОтправки.ЗаписатьСтроку(СодержимоеФайла);
		
		ФайлОтправки.ЗаписатьСтроку("--" + Boundary); 
	        ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""numeric""" + Символы.ПС + Символы.ПС); 				
		ФайлОтправки.ЗаписатьСтроку("1");
		
		//Завершение сообщения для сервера 
	        ФайлОтправки.ЗаписатьСтроку("--" + Boundary + "--"); 

	        ФайлОтправки.Закрыть(); 
		
		ЗаголовокHTTP = Новый Соответствие(); 
		//Обязательные поля заголовка 
		//Укажем формат данных Content-Type 
	        ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);
		ЗаголовокHTTP.Вставить("Accept-Language", "ru");
		
		HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовокHTTP) ;
		HTTPЗапрос.УстановитьИмяФайлаТела(ФайлЗапроса.ПолноеИмя);
		
	        ФайлРезультата = ПолучитьИмяВременногоФайла("TXT");
		
		Ответ = HTTP.ОтправитьДляОбработки(HTTPЗапрос,ФайлРезультата);
		Ответ = Новый ТекстовыйДокумент();
		Ответ.Прочитать(ФайлРезультата, КодировкаТекста.UTF8);
		
		ТекстОтвета = Ответ.ПолучитьТекст();
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ТекстОтвета + " После передачи капчи ";
		Сообщение.Сообщить(); 
		Если Лев(ТекстОтвета,3) = "OK|" Тогда
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "Ждем 10 секунд";
			Сообщение.Сообщить(); 
			
			Задержка(10);
			
			ПолучитьСимволыСКапчи(КапчаИД);
		ИначеЕсли ТекстОтвета = "ERROR_NO_SLOT_AVAILABLE" Тогда
			ОтправитьКапчуИПолучитьИДКапчи(ФайлРезультатаКапчи);	
		Иначе
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "Капча отправлена, но есть ошибки. Код ошибки: " + ТекстОтвета;
			Сообщение.Сообщить();	
		КонецЕсли; 
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не удалось установить соединение и получить картинку капчи. " + ОписаниеОшибки();
		Сообщение.Сообщить(); 
	КонецПопытки;
КонецПроцедуры

3. Получаем символы с изображения(капчи):

&НаКлиенте 
Процедура ПолучитьСимволыСКапчи(КапчаИД)
	Сервер = "antigate.com";
	АдресРесурса = "/res.php?key="+КлючАнтиКапчи+"&action=get&id=" + КапчаИД;
	Попытка
		HTTP =  Новый HTTPСоединение(Сервер);
		ФайлРезультатаКапчиИД = ПолучитьИмяВременногоФайла("TXT");
		
		HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
		
		ОтветКапчиИД = HTTP.Получить(HTTPЗапрос,ФайлРезультатаКапчиИД);
		ОтветКапчиИД = Новый ТекстовыйДокумент();
		ОтветКапчиИД.Прочитать(ФайлРезультатаКапчиИД, КодировкаТекста.UTF8);
		
		ТекстОтветаСимволыСКапчи = ОтветКапчиИД.ПолучитьТекст();
		
		Если Лев(ТекстОтветаСимволыСКапчи,3) = "OK|" Тогда
			СимволыСКапчи = СокрЛП(СтрЗаменить(ТекстОтветаСимволыСКапчи,"OK|",""));
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = СимволыСКапчи + " - символы с капчи";
			Сообщение.Сообщить(); 
		ИначеЕсли СокрЛП(ТекстОтветаСимволыСКапчи) = "CAPCHA_NOT_READY" Тогда 
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "" + ТекстОтветаСимволыСКапчи + Символы.ПС + "Ждем еще 5 секунд";
			Сообщение.Сообщить(); 
			
			Задержка(5);
			ПолучитьСимволыСКапчи(КапчаИД);
		Иначе
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "Капча не распознана. Код ошибки: " + ТекстОтветаСимволыСКапчи;
			Сообщение.Сообщить();	
		КонецЕсли;		
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не удалось установить соединение и получить символы с капчи. " + ОписаниеОшибки();
		Сообщение.Сообщить(); 	
	КонецПопытки;
КонецПроцедуры

капча Капча распознать капчу antigate.com antigate

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

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

36000 руб.

03.08.2020    15748    10    17    

11

Интеграция 1С — Битрикс24. Обмен задачами

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

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

5040 руб.

04.05.2021    17551    6    15    

13

Интеграция с сервисом vetmanager

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

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

12000 руб.

02.02.2021    16360    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25741    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88581    160    215    

318
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. OldthiefXXX 153 29.06.14 17:30 Сейчас в теме
2. seermak 665 30.06.14 07:05 Сейчас в теме
3. eduardpetrovych 31 01.07.14 11:58 Сейчас в теме
(1) OldthiefXXX, не нашел готового решения - разбирался сам. Вот тем что получилось делюсь со всеми.
4. creatermc 27 02.07.14 09:54 Сейчас в теме

Не дурно, я бы сказал интересно.
5. eduardpetrovych 31 02.07.14 18:57 Сейчас в теме
Если у кого то есть другие решения моей задачи, прошу поделится если можете...буду рад ознакомится
6. stanru1 91 15.08.14 16:20 Сейчас в теме
Сам изобретал такой же велосипед, и никак не хотел уходить ключ в антигейт. Благодаря этой обработке понял, где у меня была ошибка =) Спасибо!
7. vslimv 27.01.15 07:43 Сейчас в теме
(6) stanru1, Аналогичная ситуация)) Решил у себя небольшую проблемку.
Статье однозначно +. Автору спасибо, хоть и очень запоздало))
8. Agregad 10.03.15 13:31 Сейчас в теме
Здравствуйте.
разве перед вызовом "ПолучитьСимволыСКапчи(КапчаИД);" не надо вырезать ИД с ответа?
9. eduardpetrovych 31 14.03.15 00:25 Сейчас в теме
(8) Agregad, ничего не нужно вырезать КапчаИД это сохраненная картинка капчи, её надо передать в Антигейт для распознавания
10. vitalya24 233 31.05.15 23:01 Сейчас в теме
Вам спасибо за публикацию, но вот сейчас переделыю на rucaptcha, параметры апи такие же 1 в 1, но не могу передать капчу пишет что ERROR_ZERO_CAPTCHA_FILESIZE, капча есть и ее размер 2-3 кб, и как пишут в описании апи уже кодирую юрл энкод. Но похоже не отправляется капча на сайт толком... может что-то подскажете?
11. 1c_programmist 05.07.15 12:40 Сейчас в теме
Ооооо, крутая крутотень. Как раз ищу подобное. Большое спасибо. Сейчас тестирую
12. capitan 2466 12.03.16 21:34 Сейчас в теме
Не взлетит.
Если запрашивать капчу с сервера - он вернет следующую картинку, а не ту которую надо ввести на странице запроса.
13. eduardpetrovych 31 13.03.16 01:17 Сейчас в теме
(12) capitan, в процедуре СохранитьКартинкуКапчи(), когда мы запрашываем картинку с сервера то мы передаем "Cookie" в HTTPЗапрос, без них возвращает новую картинку, а не ту с которой нужно ввести изображение, с ними возвращает нужную картинку.

P.S. Код полностью рабочий, работал он в этой обработке - Бот для он-лайн игры GanjaWars.ru (ГБот) , пока там не поменяли защиту, раньше нужно было ввести цыфры с картинки, а сейчас сопоставить две картинки - я это планирую доделать.
14. capitan 2466 10.05.16 14:46 Сейчас в теме
А вот и реальная задачка ;)
https://egrul.nalog.ru/
Взлетит ?
15. eduardpetrovych 31 10.05.16 18:46 Сейчас в теме
(14) capitan, без проблем взлетит, нужно только правильную картинку отправить
19. KroVladS 34 07.10.17 13:35 Сейчас в теме
(14)
А вот и реальная задачка ;)
https://egrul.nalog.ru/
Взлетит ?


Взлетит.
16. capitan 2466 11.05.16 14:08 Сейчас в теме
Есть очень полезное расширение конфигурации http://infostart.ru/public/510293/
Попробуйте в него добавить своим методом распознавание, а я своим.
Ваш проще, если он взлетит, то и чудесно.
17. пользователь 23.05.17 10:37
Сообщение было скрыто модератором.
...
18. KroVladS 34 07.10.17 13:35 Сейчас в теме
После небольшого допила всё отлично работает. Спасибо.
Не реализованы методы API по оспариванию неправильных капч.
Так-же при использовании сервиса нужно понимать что это биржа и стоимость распознавания может меняться как в меньшую, так и в большую сторону, а может оказаться что все работники системы ушли на выходные и всё :)
20. VKuser139072386 22.05.20 10:06 Сейчас в теме
подскажите как скачать бота на гв?
Оставьте свое сообщение