Skip to content

Массовая проверка статуса оформления загранпаспортов через сайт МИД РФ, для тех, кто подавал заявление на загранпаспорт за границей.

License

Notifications You must be signed in to change notification settings

YourKey/mid-passport-checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

mid-passport-checker

Массовая проверка статуса оформления загранпаспортов через сервис МИД РФ, для тех, кто подавал заявление на загранпаспорт за границей.

Позволяет отслеживать соседние с вашими заявления, примерно понять дату готовности паспорта и посчитать, сколько паспортов было готово за период времени.

Статистика собирается через ваш браузер, с вашего IP, через официальные сервисы МИД.

Пример таблички

Проверка паспортов на 5 лет

Для паспортов, которые проверяются через этот сервис: https://passportzu.kdmid.ru/Home/Status

При использовании этого сервиса делается запрос к странице следующего вида:

https://passportzu.kdmid.ru/Petition/GetPetitionStatus?folderId=347004700 (номер в параметре folderId заменяется на номер вашего заявления)

Массовый сбор статусов

  1. Определите диапазон ID, по которым будете собирать данные, чтобы не собирать лишнее, иначе может вылезти капча или временно заблокируют проверку с вашего IP. Для этого посмотрите, какие статусы перед вашим номером заявления (номера заявлений идут по порядку) и какой номер заявления сейчас самый последний. Выйдет примерно 100-300 заявлений.
  2. Откройте любую страницу с сайта https://passportzu.kdmid.ru. Если этого не сделать, скрипт не сработает.
  3. Откройте панель разработчика, вкладка Консоль
  4. Вставьте этот скрипт, измените параметры для запросов в первых 2 строчках (начальный и конечный номер заявления) и нажмите Enter. Остальные строчки трогать не нужно.
const start_id = 347004700;
const end_id = 347004873;

for (let i = start_id; i < end_id; i++) {
	fetch('https://passportzu.kdmid.ru/Petition/GetPetitionStatus?folderId='+i)
  		.then((response) => response.json())
  		.then(
  			(data) => {
  				let status;
  				if (data.StatusText == 'Статус заявления: дело в обработке.') status = 'дело в обработке';
  				if (data.StatusText == 'Статус заявления: паспорт готов.') status = 'паспорт готов';
  				if (data.StatusText == 'Заявление с таким номером не было сохранено на сайте.') status = '–';
  				console.log(status+"\t"+i+"\n");
  			});
}

2022-11-16_23-11-36

  1. Скопируйте вывод консоли и вставьте в текстовый редактор, например Sublime Text 3. Выводятся следующие данные: статус, номер заявления. Удалите лишний код и вставьте в таблицу. 2022-11-16_23-12-13

  2. Не рекомендую запускать проверку слишком часто, достаточно 1-2 раза в сутки.

Проверка паспортов на 10 лет

Для паспортов, которые проверяются через этот сервис: https://info.midpass.ru/

При использовании этого сервиса делается запрос к странице следующего вида:

https://info.midpass.ru/api/request_ex/83104/00003900 (83104 — id консульства, 00003900 — номер заявления)

Чтобы узнать ID вашего консульства:

  1. Откройте https://info.midpass.ru/
  2. Откройте панель разработчика. Для этого в Windows нажмите F12, в MacOS Cmd+Alt+J.
  3. Откройте вкладку Сеть
  4. На странице вбейте свои данные и нажмите Найти.
  5. Посмотрите ID консульства в запросе (см. скриншот) 2022-11-16_22-22-03

Массовый сбор статусов

  1. Определите диапазон ID, по которым будете собирать данные, чтобы не собирать лишнее, иначе может вылезти капча или временно заблокируют проверку с вашего IP. Для этого посмотрите, какие статусы перед вашим номером заявления (номера заявлений идут по порядку) и какой номер заявления сейчас самый последний. Выйдет примерно 100-300 заявлений.
  2. Откройте любую страницу с сайта https://info.midpass.ru/. Если этого не сделать, скрипт не сработает.
  3. Откройте панель разработчика, вкладка Консоль
  4. Вставьте этот скрипт, измените параметры для запросов в первых 3 строчках (id консульства, начальный и конечный номер заявления) и нажмите Enter. Остальные строчки трогать не нужно.
const consulate_id = 83104;
const start_id = 3900;
const end_id = 4182;

for (let i = start_id; i <= end_id; i++) {
	fetchRetry('https://info.midpass.ru/api/request_ex/'+consulate_id+'/0000'+i, i);
}


async function fetchRetry(url, i) {
	const RETRY_COUNT = 5;
	let count = RETRY_COUNT;
	while(count > 0) {
		try {
			return fetch(url)
				.then((response) => response.json())
				.then(
					(data) => {
						let receptionDate = data[0]?.receptionDate ?? '—';
						let passportStatus = data[0]?.passportStatus.name ?? '–';
						let internalStatus = data[0]?.internalStatus.name ?? '–';
						let percent = data[0]?.internalStatus.percent ?? '–';
						console.log(`0000${i}\t${receptionDate}\t${passportStatus}\t${internalStatus}\t${percent}`);
					})
				.catch((error) => {
					console.log(`0000${i}\t–\t–\t–\t–\tОшибка`);
					console.log(error);
				});
		} catch(error) {
		  console.log(`Ошибка retry 0000${i}:`, error);
		}
	await new Promise(r => setTimeout(r, 500));
	count -= 1;
	}

  throw new Error(`0000${i} Too many retries`);
}
  1. Скопируйте вывод консоли и вставьте в текстовый редактор, например Sublime Text 3. Выводятся следующие данные: номер заявления, дата подачи документов, статус оформления, внутренний статус, процент оформления. Удалите лишний код и вставьте в таблицу. 2022-11-16_23-16-30

  2. Не рекомендую запускать проверку слишком часто, достаточно 1-2 раза в сутки.

Для подсветки json-кода в Chrome можно поставить расширение JSON Viewer

About

Массовая проверка статуса оформления загранпаспортов через сайт МИД РФ, для тех, кто подавал заявление на загранпаспорт за границей.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published