Массовая проверка статуса оформления загранпаспортов через сервис МИД РФ, для тех, кто подавал заявление на загранпаспорт за границей.
Позволяет отслеживать соседние с вашими заявления, примерно понять дату готовности паспорта и посчитать, сколько паспортов было готово за период времени.
Статистика собирается через ваш браузер, с вашего IP, через официальные сервисы МИД.
Для паспортов, которые проверяются через этот сервис: https://passportzu.kdmid.ru/Home/Status
При использовании этого сервиса делается запрос к странице следующего вида:
https://passportzu.kdmid.ru/Petition/GetPetitionStatus?folderId=347004700
(номер в параметре folderId
заменяется на номер вашего заявления)
- Определите диапазон ID, по которым будете собирать данные, чтобы не собирать лишнее, иначе может вылезти капча или временно заблокируют проверку с вашего IP. Для этого посмотрите, какие статусы перед вашим номером заявления (номера заявлений идут по порядку) и какой номер заявления сейчас самый последний. Выйдет примерно 100-300 заявлений.
- Откройте любую страницу с сайта https://passportzu.kdmid.ru. Если этого не сделать, скрипт не сработает.
- Откройте панель разработчика, вкладка Консоль
- Вставьте этот скрипт, измените параметры для запросов в первых 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");
});
}
-
Скопируйте вывод консоли и вставьте в текстовый редактор, например Sublime Text 3. Выводятся следующие данные: статус, номер заявления. Удалите лишний код и вставьте в таблицу.
-
Не рекомендую запускать проверку слишком часто, достаточно 1-2 раза в сутки.
Для паспортов, которые проверяются через этот сервис: https://info.midpass.ru/
При использовании этого сервиса делается запрос к странице следующего вида:
https://info.midpass.ru/api/request_ex/83104/00003900
(83104
— id консульства, 00003900
— номер заявления)
Чтобы узнать ID вашего консульства:
- Откройте https://info.midpass.ru/
- Откройте панель разработчика. Для этого в Windows нажмите F12, в MacOS Cmd+Alt+J.
- Откройте вкладку Сеть
- На странице вбейте свои данные и нажмите Найти.
- Посмотрите ID консульства в запросе (см. скриншот)
- Определите диапазон ID, по которым будете собирать данные, чтобы не собирать лишнее, иначе может вылезти капча или временно заблокируют проверку с вашего IP. Для этого посмотрите, какие статусы перед вашим номером заявления (номера заявлений идут по порядку) и какой номер заявления сейчас самый последний. Выйдет примерно 100-300 заявлений.
- Откройте любую страницу с сайта https://info.midpass.ru/. Если этого не сделать, скрипт не сработает.
- Откройте панель разработчика, вкладка Консоль
- Вставьте этот скрипт, измените параметры для запросов в первых 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`);
}
-
Скопируйте вывод консоли и вставьте в текстовый редактор, например Sublime Text 3. Выводятся следующие данные: номер заявления, дата подачи документов, статус оформления, внутренний статус, процент оформления. Удалите лишний код и вставьте в таблицу.
-
Не рекомендую запускать проверку слишком часто, достаточно 1-2 раза в сутки.
Для подсветки json-кода в Chrome можно поставить расширение JSON Viewer