Каталог решений - Проверка мобильного телефона в базе МВД Украины (IMEI)

Проверка мобильного телефона в базе МВД Украины (IMEI)

Проверка мобильного телефона в базе МВД Украины (IMEI)

В наличии

Добрый день, коллеги. Данная статья просто показывает готовый метод, при помощи которого вы сможете проверить мобильный телефон в базе МВД Украины.

Категория:

Описание

В связи со спецификой работы поступила задача — нужно проверять телефоны по IMEI, и если они в розыске — бьем тревогу.

Первое, что нам необходимо, это наличие в конфигураторе КоннекторHTTP (//sale.itcity.ru/public/709325/), это не реклама!
Это очень полезная обработка/библиотека, и я очень сильно жалею, что долго тянул время с переходом на нее 😉

Ну а тут у нас, собственно, метод, который и производит проверку, разбил метод на блоки, чтобы удобнее воспринимать информацию, код вроде бы самодокументируемый.
 

  // Проверка мобильного телефона по IMEI на предмет нахождения его(телефона)
  // в базе розыска МВД
  //
  // Параметры:
  //  IMEI - Строка - IMEI код мобильного телефона. Для определения кода IMEI, записанного в памяти телефона, наберите комбинацию *#06#.
  //  ОписаниеРезультата - Структура - выходной параметр. Данный параметр будет заполнен ТОЛЬКО в случае если мобильный телефон
  //    находится в розыске.
  //
  // Возвращаемое значение:
  //  Неопределено, Булево - возможны ТОЛЬКО 3(три) варианта ответа, описание вариантов ответа:
  //    - Неопределено - если произошла не предвиденная(ошибка при отправке запроса, ошибка при парсинге ответа и т.д.)
  //      ситуации и неудалось получить ответ;
  //    - Истина - если мобильный телефон находится в розыске (также в этом случае будет заполнен параметр ОписаниеРезультата);
  //    - Ложь - мобильный телефон не находится в розыске.
  //
  &НаСервере
  Функция МобильныйТелефонНаходитсяВРозыске(Знач IMEI, ОписаниеРезультата = Неопределено)
  	
  	// Инициализация результата.
  	Результат = Неопределено;
  	
  	// Создание сессии.
  	Сессия = КоннекторHTTP.СоздатьСессию();
  	Ответ = КоннекторHTTP.Get("https://wanted.mvs.gov.ua/searchthing/",,, Сессия);
  	Если Ответ.КодСостояния <> 200 Тогда
  		Возврат Результат;	
  	КонецЕсли;
  
  	// Получение идентификатора сессии.
  	ИдентификаторСессии = Неопределено;
  	Если Сессия.Cookies.Получить("wanted.mvs.gov.ua") = Неопределено
  		Или Сессия.Cookies["wanted.mvs.gov.ua"].Получить("/") = Неопределено
  		Или Сессия.Cookies["wanted.mvs.gov.ua"]["/"].Получить("PHPSESSID") = Неопределено
  		Или Не Сессия.Cookies["wanted.mvs.gov.ua"]["/"]["PHPSESSID"].Свойство("Значение", ИдентификаторСессии) Тогда
  		Возврат Результат;	
  	КонецЕсли;
  	
  	// Выполнение запроса на поиск.
  	
  	СтруктураДанных = Новый Структура;
  	СтруктураДанных.Вставить("IMEI", IMEI);
  	СтруктураДанных.Вставить("sestoken", ИдентификаторСессии);
  	
  	Ответ = КоннекторHTTP.Post("https://wanted.mvs.gov.ua/searchthing/result/", СтруктураДанных,, Сессия);
  	Если Ответ.КодСостояния <> 200 Тогда
  		Возврат Результат;	
  	КонецЕсли;
  	
  	ТелоОтвета = КоннекторHTTP.КакТекст(Ответ, КодировкаТекста.UTF8);;
  	
  	// Парсинг. Подготовка.
  	ЧтениеHTML = Новый ЧтениеHTML;
  	ЧтениеHTML.УстановитьСтроку(ТелоОтвета);
  	ПостроительDOM = Новый ПостроительDOM;
  	ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);
  	ДокументHTML.НормализоватьДокумент();
  
  	// Парсинг. Поиск поля которое отвечает за отрицательный ответ(т.е. когда такого телефона нет в базе)
  	// а значит мобильный телефон НЕ в розыске.	
  	МассивЭлементовHTML = ДокументHTML.НайтиПоФильтру("
  	|{
  	|  ""type"": ""intersection"",
  	|  ""value"": [
  	|    {
  	|      ""type"": ""elementname"",
  	|      ""value"": {
  	|        ""value"": ""div"",
  	|        ""operation"": ""equals""
  	|      }
  	|    },
  	|    {
  	|      ""type"": ""hasattribute"",
  	|      ""value"": {
  	|        ""value"": ""id"",
  	|        ""operation"": ""nameequals""
  	|      }
  	|    },
  	|    {
  	|      ""type"": ""hasattribute"",
  	|      ""value"": {
  	|        ""value"": ""TextNotFind"",
  	|        ""operation"": ""valueequals""
  	|      }
  	|    }
  	|  ]
  	|}
  	|");
  	
  	Если МассивЭлементовHTML.Количество() Тогда
  		Результат = Ложь;
  		Возврат Результат;	
  	КонецЕсли;
  	
  	// Парсинг. Поиск полей с дополнительной информацией.
  	// Если выполнение метода дошло до этого этапа то телефон с указанным IMEI есть в базе МВД и он в розыске.
  	// Присваевать значение Истина в параметр Результат, будем только после удачного парсинга.
  	МассивЭлементовHTML = ДокументHTML.НайтиПоФильтру("
  	|{
  	|  ""type"": ""intersection"",
  	|  ""value"": [
  	|    {
  	|      ""type"": ""elementname"",
  	|      ""value"": {
  	|        ""value"": ""li"",
  	|        ""operation"": ""equals""
  	|      }
  	|    },
  	|    {
  	|      ""type"": ""hasattribute"",
  	|      ""value"": {
  	|        ""value"": ""class"",
  	|        ""operation"": ""nameequals""
  	|      }
  	|    },
  	|    {
  	|      ""type"": ""hasattribute"",
  	|      ""value"": {
  	|        ""value"": ""clearfix"",
  	|        ""operation"": ""valueequals""
  	|      }
  	|    }
  	|  ]
  	|}
  	|");
  	
  	Если МассивЭлементовHTML.Количество() Тогда
  		
  		ОписаниеРезультата = Новый Структура;
  		ОписаниеРезультата.Вставить("ПодразделениеМВД");
  		ОписаниеРезультата.Вставить("IMEI");
  		ОписаниеРезультата.Вставить("Модель");
  		
  		Для Индекс = 0 По МассивЭлементовHTML.ВГраница() Цикл
  			
  			ЭлементHTML = МассивЭлементовHTML[Индекс];
  			
  			Если Индекс = 0 Тогда
  				ОписаниеРезультата.ПодразделениеМВД = ЭлементHTML.ПоследнийДочерний.ТекстовоеСодержимое;
  				Продолжить;	
  			КонецЕсли;
  			
  			Если Индекс = 1 Тогда
  				ОписаниеРезультата.IMEI = ЭлементHTML.ПоследнийДочерний.ТекстовоеСодержимое;
  				Продолжить;	
  			КонецЕсли;
  			
  			Если Индекс = 2 Тогда
  				ОписаниеРезультата.Модель = ЭлементHTML.ПоследнийДочерний.ТекстовоеСодержимое;
  				Продолжить;	
  			КонецЕсли;
  		
  		КонецЦикла;
  		
  		Результат = Истина;
  		Возврат Результат;
  	КонецЕсли;
  
  	Возврат Результат;
  	
  КонецФункции

 

Если будет необходимость, то пишите в комментариях или ставьте плюсики, сделаю независимую (без использования КоннекторHTTP) обработку.

has been added to your cart:
Оформление заказа