Help
RSS
API
Feed
Maltego
Contact
Domain > app.spintel.io
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2024-06-18
52.52.49.151
(
ClassC
)
2026-01-22
3.212.134.141
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: awselb/2.0Date: Thu, 22 Jan 2026 08:56:51 GMTContent-Type: text/htmlContent-Length: 134Connection: keep-aliveLocation: https://app.spintel.io:443/ html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Thu, 22 Jan 2026 08:56:51 GMTContent-Type: text/htmlContent-Length: 8563Connection: keep-aliveServer: nginxLast-Modified: Wed, 21 Jan 2026 22:45:15 GMTETag: 697156fb-2173Expires: Thu, 22 Jan 2026 08:56:50 GMTCache-Control: no-cacheCache-Control: no-cache, must-revalidateAccept-Ranges: bytes !DOCTYPE html>html langen>head> !-- If you are serving your web app in a path other than the root, change the href value below to reflect the base path you are serving from. The path provided below has to start and end with a slash / in order for it to work correctly. For more details: * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base This is a placeholder for base href that will be replaced by the value of the `--base-href` argument provided to `flutter build`. --> base href/> meta charsetUTF-8> meta contentIEEdge http-equivX-UA-Compatible> meta namedescription contentA new Flutter project.> !-- iOS meta tags & icons --> meta namemobile-web-app-capable contentyes> meta nameapple-mobile-web-app-status-bar-style contentblack> meta nameapple-mobile-web-app-title contentapp> link relapple-touch-icon hreficons/Icon-192.png> !-- Favicon --> link relicon typeimage/png hreffavicon.png/> title>app/title> link relmanifest hrefmanifest.json> link relstylesheet typetext/css hrefsplash/style.css /> script srcsplash/splash.js>/script> script> (function () { const params new URLSearchParams(location.search); if (!params.has(force_update)){ console.log(No force_update flag found, skipping service worker unregistration.); return; } console.log(Unregistering service workers due to force_update flag...); (async () > { const sleep (ms) > new Promise(r > setTimeout(r, ms)); async function unregisterAll() { if (!(serviceWorker in navigator)) return 0; try { const regs await navigator.serviceWorker.getRegistrations(); await Promise.all(regs.map(r > r.unregister().catch(() > {}))); } catch (_) {} try { const leftover await navigator.serviceWorker.getRegistrations(); return leftover.length; } catch (_) { return 0; } } // OPTIONAL: clear SW caches (doesnt affect cookies/localStorage) async function clearSwCaches() { try { if (typeof caches ! undefined && caches.keys) { const keys await caches.keys(); await Promise.all(keys.map(k > caches.delete(k).catch(() > {}))); } } catch (_) {} } // Try a few times in case the worker is transitioning states let tries 0, left 1; while (tries 3 && left > 0) { left await unregisterAll(); if (left > 0) await sleep(200); tries++; } // If you want to also wipe SW caches, uncomment next line: await clearSwCaches(); // Reload without the flag; keep a cache-busting param so index + loader refetch const url new URL(location.href); url.searchParams.delete(force_update); url.searchParams.set(v, Date.now().toString()); location.replace(url.toString()); })(); })(); /script> script typetext/javascript> // Amplitude Browser SDK v2 snippet !function(){use strict;!function(e,t){var re.amplitude||{_q:,_iq:{}};if(r.invoked)e.console&&console.error&&console.error(Amplitude snippet has been loaded.);else{var nfunction(e,t){e.prototypetfunction(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},sfunction(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},ofunction(e,t,r){e._q.push({name:t,args:Array.prototype.slice.call(r,0)})},ifunction(e,t,r){etfunction(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))};o(e,t,Array.prototype.slice.call(arguments))}},afunction(e){for(var t0;tg.length;t++)i(e,gt,!1);for(var r0;rm.length;r++)i(e,mr,!0)};r.invoked!0;var ct.createElement(script);c.typetext/javascript,c.integritysha384-K1KvcW5ay5cpQB4M23T3dC4N4z1ni0GPHpreY51koDicHJB6P1wwX8WA7xlFygXT,c.crossOriginanonymous,c.async!0,c.srchttps://cdn.amplitude.com/libs/analytics-browser-2.11.5-min.js.gz,c.onloadfunction(){e.amplitude.runQueuedFunctions||console.log(Amplitude Error: could not load SDK)};var ut.getElementsByTagName(script)0;u.parentNode.insertBefore(c,u);for(var lfunction(){return this._q,this},padd,append,clearAll,prepend,set,setOnce,unset,preInsert,postInsert,remove,getUserProperties,d0;dp.length;d++)n(l,pd);r.Identifyl;for(var ffunction(){return this._q,this},vgetEventProperties,setProductId,setQuantity,setPrice,setRevenue,setRevenueType,setEventProperties,y0;yv.length;y++)n(f,vy);r.Revenuef;var ggetDeviceId,setDeviceId,getSessionId,setSessionId,getUserId,setUserId,setOptOut,setTransport,reset,extendSession,minit,add,remove,track,logEvent,identify,groupIdentify,setGroup,revenue,flush;a(r),r.createInstancefunction(e){return r._iqe{_q:},a(r._iqe),r._iqe},e.amplituder}}(window,document)}(); // Initialize Amplitude Analytics amplitude.init(b741e8dc0fdc38f50e78a71cdae9fd37, { defaultTracking: { pageViews: false, sessions: true, formInteractions: false, fileDownloads: false, attribution: false } }); /script> !-- Load Guides and Surveys SDK --> script srchttps://cdn.amplitude.com/script/b741e8dc0fdc38f50e78a71cdae9fd37.engagement.js>/script> script> // Initialize Guides and Surveys plugin (function() { function initializeEngagement() { if (window.amplitude && window.engagement && window.engagement.plugin) { try { // Add the engagement plugin amplitude.add(window.engagement.plugin()); console.log(Amplitude G&S ✅ Plugin added successfully); // Check engagement status after initialization completes setTimeout(function() { // Simple check - just verify engagement exists if (window.engagement) { console.log(Amplitude G&S ✅ Engagement object available); // Try to check if functions are available if (window.engagement.gs) { console.log(Amplitude G&S ✅ Guide/Survey functions available); } } }, 3000); } catch (error) { console.error(Amplitude G&S Error adding plugin:, error); // Retry after a delay setTimeout(initializeEngagement, 500); } } else { // Not ready yet, retry setTimeout(initializeEngagement, 100); } } // Start initialization initializeEngagement(); })(); /script>/head>body>!-- Fix keyboard events for vanna-chat web component -->script> // Prevent Flutter from intercepting keyboard events for embedded web components // This must run before Flutter loads (function() { document.addEventListener(keydown, function(e) { if (e.target && e.target.closest && e.target.closest(vanna-chat)) { e.stopPropagation(); } }, true); document.addEventListener(keyup, function(e) { if (e.target && e.target.closest && e.target.closest(vanna-chat)) { e.stopPropagation(); } }, true); document.addEventListener(keypress, function(e) { if (e.target && e.target.closest && e.target.closest(vanna-chat)) { e.stopPropagation(); } }, true); })();/script>script srcflutter_bootstrap.js?t1769035515 async>/script>/body>/html>!-- splash screen -->picture idsplash> !-- Light-mode images --> source srcset splash/img/light-1x.png 1x, splash/img/light-2x.png 2x, splash/img/light-3x.png 3x, splash/img/light-4x.png 4x media(prefers-color-scheme: light) /> !-- Dark-mode images --> source srcset splash/img/dark-1x.png 1x, splash/img/dark-2x.png 2x, splash/img/dark-3x.png 3x, splash/img/dark-4x.png 4x media(prefers-color-scheme: dark) /> !-- Fallback image --> img classcenter aria-hiddentrue srcsplash/img/light-1x.png altSplash image />/picture>
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
]