Help
RSS
API
Feed
Maltego
Contact
Domain > ippw.ru
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2015-03-21
104.28.13.39
(
ClassC
)
2026-02-11
62.213.106.142
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: nginx/1.24.0 (Ubuntu)Date: Wed, 11 Feb 2026 23:44:55 GMTContent-Type: text/htmlContent-Length: 178Connection: keep-aliveLocation: https://ippw.ru/ html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>nginx/1.24.0 (Ubuntu)/center>/body>/html>
Port 443
HTTP/1.1 200 OKServer: nginx/1.24.0 (Ubuntu)Date: Wed, 11 Feb 2026 23:44:56 GMTContent-Type: text/htmlContent-Length: 25557Last-Modified: Thu, 25 Sep 2025 17:57:57 GMTConnection: keep-aliveETag: 68d582a5-63d5Accept-Ranges: bytes !DOCTYPE html>html langru>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>Калькулятор стоимости запросов/title> style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: Inter, SF Pro Display, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; background: #0a0a0f; color: #ffffff; min-height: 100vh; padding: 20px; position: relative; overflow-x: hidden; } body::before { content: ; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at 25% 25%, rgba(99, 102, 241, 0.1) 0%, transparent 50%), radial-gradient(circle at 75% 75%, rgba(168, 85, 247, 0.08) 0%, transparent 50%); pointer-events: none; z-index: -1; } .container { max-width: 800px; margin: 0 auto; background: rgba(15, 15, 20, 0.8); border-radius: 24px; padding: 48px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.8), 0 0 0 1px rgba(255, 255, 255, 0.05); backdrop-filter: blur(24px); border: 1px solid rgba(255, 255, 255, 0.08); position: relative; } .container::before { content: ; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(99, 102, 241, 0.8), rgba(168, 85, 247, 0.8), transparent); border-radius: 24px 24px 0 0; } h1 { text-align: center; background: linear-gradient(135deg, #6366f1, #a855f7); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 48px; font-size: 2.75rem; font-weight: 800; letter-spacing: -0.025em; line-height: 1.1; } .form-group { margin-bottom: 32px; position: relative; } label { display: block; margin-bottom: 8px; color: #e5e7eb; font-weight: 500; font-size: 0.875rem; letter-spacing: 0.025em; } /* Стили для кнопок тарифа */ .tariff-buttons { display: flex; gap: 12px; margin-top: 8px; } .tariff-btn { flex: 1; padding: 16px 20px; background: rgba(30, 30, 35, 0.6); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 12px; color: #ffffff; font-size: 16px; font-weight: 500; cursor: pointer; transition: all 0.2s ease; text-align: center; } .tariff-btn:hover { border-color: rgba(255, 255, 255, 0.2); background: rgba(30, 30, 35, 0.7); } .tariff-btn.active { background: linear-gradient(135deg, #6366f1, #8b5cf6); border-color: #6366f1; color: #ffffff; } .tariff-btn.active:hover { background: linear-gradient(135deg, #5b5bf6, #7c3aed); } /* Стили для ползунков */ .slider-container { position: relative; margin-top: 0; margin-bottom: 20px; } .slider { -webkit-appearance: none; width: 100%; height: 8px; border-radius: 8px; background: rgba(30, 30, 35, 0.6); outline: none; transition: all 0.2s ease; position: relative; z-index: 2; } .slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 24px; height: 24px; border-radius: 50%; background: linear-gradient(135deg, #6366f1, #8b5cf6); cursor: pointer; box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3); transition: all 0.2s ease; } .slider::-webkit-slider-thumb:hover { transform: scale(1.1); box-shadow: 0 6px 20px rgba(99, 102, 241, 0.5); } .slider::-moz-range-thumb { width: 24px; height: 24px; border-radius: 50%; background: linear-gradient(135deg, #6366f1, #8b5cf6); cursor: pointer; border: none; box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3); transition: all 0.2s ease; } .slider::-moz-range-thumb:hover { transform: scale(1.1); box-shadow: 0 6px 20px rgba(99, 102, 241, 0.5); } .slider:focus { background: rgba(30, 30, 35, 0.8); } .slider:focus::-webkit-slider-thumb { box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2), 0 4px 12px rgba(99, 102, 241, 0.3); } .slider-value { display: inline-block; margin-top: 8px; padding: 4px 12px; background: rgba(99, 102, 241, 0.1); border: 1px solid rgba(99, 102, 241, 0.2); border-radius: 6px; color: #6366f1; font-size: 0.875rem; font-weight: 600; } /* Стили для отображения всех вариантов ползунков */ .slider-options { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; margin-bottom: 12px; position: relative; z-index: 1; padding: 0 12px; } .slider-option { padding: 6px 8px; background: rgba(30, 30, 35, 0.6); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 8px; color: #9ca3af; font-size: 0.75rem; font-weight: 500; transition: all 0.2s ease; cursor: pointer; text-align: center; min-width: 40px; flex-shrink: 0; } .slider-option.active { background: linear-gradient(135deg, #6366f1, #8b5cf6); border-color: #6366f1; color: #ffffff; font-size: 0.875rem; font-weight: 600; transform: scale(1.1); box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3); } .slider-option:hover:not(.active) { background: rgba(30, 30, 35, 0.8); border-color: rgba(255, 255, 255, 0.2); color: #e5e7eb; } /* Специальные стили для разных ползунков */ .form-group:nth-child(2) .slider-options { /* Количество предметов - 14 элементов */ justify-content: space-between; } .form-group:nth-child(3) .slider-options { /* Частота обновления - 9 элементов */ justify-content: space-between; } .form-group:nth-child(4) .slider-options { /* Длительность - 9 элементов */ justify-content: space-between; } .results { margin-top: 48px; padding: 32px; background: rgba(20, 20, 25, 0.6); border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.08); display: none; position: relative; overflow: hidden; animation: resultsSlideIn 0.3s ease-out; } @keyframes resultsSlideIn { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } } .results::before { content: ; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(99, 102, 241, 0.6), rgba(168, 85, 247, 0.6), transparent); border-radius: 16px 16px 0 0; } .results h3 { color: #ffffff; margin-bottom: 24px; font-size: 1.25rem; font-weight: 600; text-align: center; letter-spacing: -0.025em; } .result-item { display: flex; justify-content: space-between; align-items: center; padding: 16px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.06); transition: all 0.2s ease; position: relative; } .result-item:hover { background: rgba(255, 255, 255, 0.02); padding-left: 12px; border-radius: 8px; } .result-item:last-child { border-bottom: none; } .result-label { color: #9ca3af; font-weight: 500; font-size: 0.875rem; } .result-value { color: #6366f1; font-weight: 600; font-size: 1.125rem; } .total-cost { font-size: 1.25rem !important; color: #a855f7 !important; font-weight: 700 !important; } .input-hint { font-size: 0.75rem; color: #6b7280; margin-top: 6px; } /* Медиа-запросы для мобильных устройств */ @media (max-width: 768px) { body { padding: 12px; } .container { padding: 24px 20px; border-radius: 16px; margin: 0; max-width: none; } h1 { font-size: 2rem; margin-bottom: 32px; line-height: 1.2; } .form-group { margin-bottom: 24px; } /* Кнопки тарифов для мобильных */ .tariff-buttons { flex-direction: column; gap: 8px; } .tariff-btn { padding: 14px 16px; font-size: 14px; border-radius: 10px; } /* Ползунки для мобильных */ .slider { height: 10px; } .slider::-webkit-slider-thumb { width: 28px; height: 28px; } .slider::-moz-range-thumb { width: 28px; height: 28px; } /* Опции ползунков для мобильных */ .slider-options { flex-wrap: wrap; gap: 6px; justify-content: center; padding: 8px 0; margin-top: 8px; margin-bottom: 12px; } .slider-option { min-width: 50px; padding: 8px 10px; font-size: 0.75rem; border-radius: 6px; flex-shrink: 0; } .slider-option.active { font-size: 0.8rem; transform: scale(1.05); } /* Результаты для мобильных */ .results { margin-top: 32px; padding: 20px 16px; border-radius: 12px; } .results h3 { font-size: 1.125rem; margin-bottom: 20px; } .result-item { padding: 12px 0; flex-direction: column; align-items: flex-start; gap: 4px; } .result-item:hover { padding-left: 0; background: rgba(255, 255, 255, 0.03); border-radius: 6px; padding: 12px 8px; } .result-label { font-size: 0.8rem; } .result-value { font-size: 1rem; align-self: flex-end; } .total-cost { font-size: 1.125rem !important; } } @media (max-width: 480px) { body { padding: 8px; } .container { padding: 20px 16px; border-radius: 12px; } h1 { font-size: 1.75rem; margin-bottom: 24px; } .form-group { margin-bottom: 20px; } label { font-size: 0.8rem; margin-bottom: 6px; } .tariff-btn { padding: 12px 14px; font-size: 13px; } .slider-option { min-width: 45px; padding: 6px 8px; font-size: 0.7rem; } .slider-option.active { font-size: 0.75rem; } .results { padding: 16px 12px; margin-top: 24px; } .results h3 { font-size: 1rem; margin-bottom: 16px; } .result-item { padding: 10px 0; } .result-label { font-size: 0.75rem; } .result-value { font-size: 0.9rem; } .total-cost { font-size: 1rem !important; } } /style>/head>body> div classcontainer> h1>Стоимость запросов/h1> form idcalculatorForm> div classform-group> label>Выберите тариф:/label> div classtariff-buttons> button typebutton classtariff-btn active data-tariff6> 6 минут ~0.0147 ₽ за запрос /button> button typebutton classtariff-btn data-tariff10> 10 минут ~0.0246 ₽ за запрос /button> /div> /div> div classform-group> label foritemCount>Количество предметов:/label> div classslider-options iditemCountOptions>/div> div classslider-container> input typerange iditemCount classslider min0 max13 value0 step1> /div> /div> div classform-group> label forupdateFrequency>Частота обновления каждого предмета:/label> div classslider-options idupdateFrequencyOptions>/div> div classslider-container> input typerange idupdateFrequency classslider min0 max8 value1 step1> /div> /div> div classform-group> label forduration>Длительность получения данных:/label> div classslider-options iddurationOptions>/div> div classslider-container> input typerange idduration classslider min0 max8 value2 step1> /div> /div> /form> div idresults classresults> h3>Результаты расчета/h3> div classresult-item> span classresult-label>Необходимо IP адресов:/span> span idrequiredIPs classresult-value>0/span> /div> div classresult-item> span classresult-label>Стоимость в час:/span> span idcostPerHour classresult-value>0 ₽/span> /div> div classresult-item> span classresult-label>Стоимость за период:/span> span idtotalCost classresult-value total-cost>0 ₽/span> /div> /div> /div> script> // Тарифы и стоимость запросов const TARIFFS { 6: { interval: 6, costPerRequest: 13056 / (123 * (30 * 24 * 60 / 6)), // 13056 / (123 * 7200) ≈ 0.0147 ₽ name: Тариф 6 минут }, 10: { interval: 10, costPerRequest: 13056 / (123 * (30 * 24 * 60 / 10)), // 13056 / (123 * 4320) ≈ 0.0246 ₽ name: Тариф 10 минут } }; // Массивы значений для ползунков const ITEM_COUNT_VALUES 1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 100, 200, 500, 1000; const UPDATE_FREQUENCY_VALUES 0.5, 1, 2, 3, 4, 5, 10, 30, 60; // в минутах const UPDATE_FREQUENCY_LABELS 30 сек, 1 мин, 2 мин, 3 мин, 4 мин, 5 мин, 10 мин, 30 мин, 60 мин; const DURATION_VALUES 10, 30, 60, 120, 180, 240, 300, 600, 1440; // в минутах const DURATION_LABELS 10 мин, 30 мин, 1 час, 2 часа, 3 часа, 4 часа, 5 часов, 10 часов, 24 часа; function createSliderOptions() { // Создаем опции для количества предметов const itemCountContainer document.getElementById(itemCountOptions); itemCountContainer.innerHTML ; ITEM_COUNT_VALUES.forEach((value, index) > { const option document.createElement(div); option.className slider-option; option.textContent value; option.addEventListener(click, () > { document.getElementById(itemCount).value index; updateSliderValues(); calculateCost(); }); itemCountContainer.appendChild(option); }); // Создаем опции для частоты обновления const updateFrequencyContainer document.getElementById(updateFrequencyOptions); updateFrequencyContainer.innerHTML ; UPDATE_FREQUENCY_LABELS.forEach((label, index) > { const option document.createElement(div); option.className slider-option; option.textContent label; option.addEventListener(click, () > { document.getElementById(updateFrequency).value index; updateSliderValues(); calculateCost(); }); updateFrequencyContainer.appendChild(option); }); // Создаем опции для длительности const durationContainer document.getElementById(durationOptions); durationContainer.innerHTML ; DURATION_LABELS.forEach((label, index) > { const option document.createElement(div); option.className slider-option; option.textContent label; option.addEventListener(click, () > { document.getElementById(duration).value index; updateSliderValues(); calculateCost(); }); durationContainer.appendChild(option); }); } function updateSliderValues() { // Обновляем активные опции для количества предметов const itemCountIndex parseInt(document.getElementById(itemCount).value); document.querySelectorAll(#itemCountOptions .slider-option).forEach((option, index) > { option.classList.toggle(active, index itemCountIndex); }); // Обновляем активные опции для частоты обновления const updateFrequencyIndex parseInt(document.getElementById(updateFrequency).value); document.querySelectorAll(#updateFrequencyOptions .slider-option).forEach((option, index) > { option.classList.toggle(active, index updateFrequencyIndex); }); // Обновляем активные опции для длительности const durationIndex parseInt(document.getElementById(duration).value); document.querySelectorAll(#durationOptions .slider-option).forEach((option, index) > { option.classList.toggle(active, index durationIndex); }); } let selectedTariff 6; // По умолчанию выбран первый тариф function calculateCost() { // Получаем значения из формы const itemCountIndex parseInt(document.getElementById(itemCount).value) || 0; const itemCount ITEM_COUNT_VALUESitemCountIndex; const updateFrequencyIndex parseInt(document.getElementById(updateFrequency).value) || 0; const updateFrequency UPDATE_FREQUENCY_VALUESupdateFrequencyIndex; const durationIndex parseInt(document.getElementById(duration).value) || 0; const duration DURATION_VALUESdurationIndex; const tariff TARIFFSselectedTariff; // Расчеты const requestsPerMinute itemCount / updateFrequency; const totalRequests Math.ceil(requestsPerMinute * duration); const totalCost totalRequests * tariff.costPerRequest; const costPerHour (requestsPerMinute * 60 * tariff.costPerRequest); // Расчет необходимого количества IP адресов // Один IP может делать запрос каждые tariff.interval минут // Значит за минуту один IP может сделать 1/tariff.interval запросов const requestsPerIPPerMinute 1 / tariff.interval; const requiredIPs Math.ceil(requestsPerMinute / requestsPerIPPerMinute); // Отображение результатов document.getElementById(requiredIPs).textContent requiredIPs.toLocaleString(ru-RU); document.getElementById(totalCost).textContent totalCost.toFixed(2) + ₽; document.getElementById(costPerHour).textContent costPerHour.toFixed(2) + ₽; // Показываем блок с результатами document.getElementById(results).style.display block; } // Обработчики для кнопок тарифа document.addEventListener(click, function(e) { if (e.target.classList.contains(tariff-btn)) { // Убираем активный класс со всех кнопок document.querySelectorAll(.tariff-btn).forEach(btn > btn.classList.remove(active)); // Добавляем активный класс к нажатой кнопке e.target.classList.add(active); // Обновляем выбранный тариф selectedTariff e.target.getAttribute(data-tariff); // Пересчитываем calculateCost(); } }); document.getElementById(itemCount).addEventListener(input, function() { updateSliderValues(); calculateCost(); }); document.getElementById(updateFrequency).addEventListener(input, function() { updateSliderValues(); calculateCost(); }); document.getElementById(duration).addEventListener(input, function() { updateSliderValues(); calculateCost(); }); // Выполняем первоначальную настройку при загрузке страницы document.addEventListener(DOMContentLoaded, function() { createSliderOptions(); updateSliderValues(); calculateCost(); }); /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]