/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/javascript/js-501-103-011/main.js
78 строк
2 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
const http = require('http'); const https = require('https'); const { URL } = require('url'); function parseAndCheckUrl(targetUrl) { return new Promise((resolve, reject) => { let parsedUrl; try { parsedUrl = new URL(targetUrl); } catch (e) { reject(new Error('Некорректный формат URL')); return; } const protocol = parsedUrl.protocol === 'https:' ? https : http; const options = { hostname: parsedUrl.hostname, port: parsedUrl.port || (parsedUrl.protocol === 'https:' ? 443 : 80), path: parsedUrl.pathname, method: 'HEAD', // Используем HEAD для экономии ресурсов timeout: 5000 }; const req = protocol.request(options, (res) => { resolve({ url: targetUrl, status: res.statusCode, headers: res.headers, valid: res.statusCode >= 200 && res.statusCode < 400 }); }); req.on('error', (e) => { resolve({ url: targetUrl, status: null, error: e.message, valid: false }); }); req.on('timeout', () => { req.destroy(); resolve({ url: targetUrl, status: null, error: 'Таймаут запроса', valid: false }); }); req.end(); }); } async function main() { const testUrls = [ 'https://example.com', 'http://invalid-domain-xyz.com', 'not-a-url' ]; for (const url of testUrls) { try { const result = await parseAndCheckUrl(url); console.log(`URL: ${result.url}`); console.log(`Статус: ${result.status || 'Ошибка'}`); console.log(`Доступен: ${result.valid ? 'Да' : 'Нет'}`); if (result.error) console.log(`Ошибка: ${result.error}`); console.log('---'); } catch (err) { console.log(`Ошибка парсинга для ${url}: ${err.message}`); } } } // main();