Распознать код на изображении (капчи) с помощью 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

См. также

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

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    1487    1    1    

4

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

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

36000 руб.

03.08.2020    18539    20    22    

18

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20687    13    19    

18

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    443    2    0    

5

Обмен с ГосИС 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    92137    184    217    

337
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. OldthiefXXX 155 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 239 31.05.15 23:01 Сейчас в теме
Вам спасибо за публикацию, но вот сейчас переделыю на rucaptcha, параметры апи такие же 1 в 1, но не могу передать капчу пишет что ERROR_ZERO_CAPTCHA_FILESIZE, капча есть и ее размер 2-3 кб, и как пишут в описании апи уже кодирую юрл энкод. Но похоже не отправляется капча на сайт толком... может что-то подскажете?
11. 1c_programmist 05.07.15 12:40 Сейчас в теме
Ооооо, крутая крутотень. Как раз ищу подобное. Большое спасибо. Сейчас тестирую
12. capitan 2593 12.03.16 21:34 Сейчас в теме
Не взлетит.
Если запрашивать капчу с сервера - он вернет следующую картинку, а не ту которую надо ввести на странице запроса.
13. eduardpetrovych 31 13.03.16 01:17 Сейчас в теме
(12) capitan, в процедуре СохранитьКартинкуКапчи(), когда мы запрашываем картинку с сервера то мы передаем "Cookie" в HTTPЗапрос, без них возвращает новую картинку, а не ту с которой нужно ввести изображение, с ними возвращает нужную картинку.

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


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