- ID de l'analyse :
- 35513ac5-6119-4af3-91d2-990c1e1d27c0Terminée
- URL soumise :
- https://qu.ax/
- Fin du rapport :
Liens : 1 trouvé(s)
Liens sortants identifiés à partir de la page
Lien | texte |
---|---|
https://trace.cat | Trace.cat |
Variables JavaScript : 6 trouvée(s)
Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel
Nom | Type |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
tailwind | object |
/template.html | string |
tianji | object |
Messages de journal de console : 1 trouvé(s)
Messages consignés dans la console web
Type | Catégorie | Enregistrement |
---|---|---|
warning | other |
|
HTML
Le corps HTML de la page en données brutes
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="qu.ax - Simple, private, and reliable file hosting service. Upload and share files easily with our user-friendly platform. Fast, secure, and free to use.">
<meta name="keywords" content="file hosting, file sharing, file upload, secure file hosting, private file sharing, qu.ax">
<meta name="author" content="qu.ax">
<meta name="robots" content="index, follow">
<meta name="language" content="English">
<meta property="og:type" content="website">
<meta property="og:url" content="https://qu.ax">
<meta property="og:title" content="qu.ax - Simple & Private File Hosting">
<meta property="og:description" content="Fast, secure, and private file hosting service. Upload and share files with ease.">
<meta property="og:image" content="https://qu.ax/favicon.ico">
<meta name="twitter:card" content="summary">
<meta name="twitter:url" content="https://qu.ax">
<meta name="twitter:title" content="qu.ax - Simple & Private File Hosting">
<meta name="twitter:description" content="Fast, secure, and private file hosting service. Upload and share files with ease.">
<meta name="twitter:image" content="https://qu.ax/favicon.ico">
<meta name="theme-color" content="#151515">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" type="image/png" sizes="32x32" href="favicon.ico">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="canonical" href="https://qu.ax">
<title>qu.ax - Simple & Private File Hosting</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Open Sans', sans-serif;
background-color: #151515;
}
.gradient-text {
background: linear-gradient(90deg, #E555A6 0%, #e80860 100%);
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
#upload-input {
position: absolute;
top: 0;
left: -5000px;
}
.gradient-hover {
position: relative;
color: #ffffff;
transition: color 0.3s ease;
}
.gradient-hover::after {
content: '';
position: absolute;
left: 0;
right: 0;
bottom: -2px;
height: 2px;
background: linear-gradient(90deg, #E555A6 0%, #e80860 100%);
opacity: 0;
transform: scaleX(0);
transition: all 0.3s ease;
}
.gradient-hover:hover {
color: #e80860;
}
.gradient-hover:hover::after {
opacity: 1;
transform: scaleX(1);
}
.grill-container {
position: fixed;
bottom: 0;
right: 200px;
z-index: -1;
pointer-events: none;
height: auto; /* Changed from fixed height */
max-height: 80vh; /* Added max-height to prevent overflow */
display: flex;
align-items: flex-end;
}
.grill-image {
height: auto; /* Changed from fixed height */
width: auto; /* Changed from fixed width */
background-image: url('/grill.php');
background-position: center;
background-repeat: no-repeat;
background-size: contain; /* Changed to contain */
min-width: 100px; /* Added minimum width */
max-width: 100%; /* Added maximum width */
max-height: 100%; /* Added maximum height */
}
/* Settings dropdown styles */
.settings-dropdown {
display: none;
position: absolute;
right: 0;
top: 100%;
margin-top: 0.5rem;
background-color: #18181b;
border: 1px solid #27272a;
border-radius: 0.5rem;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
z-index: 50;
min-width: 200px;
}
.settings-dropdown.show {
display: block;
}
.settings-dropdown-backdrop {
display: none;
position: fixed;
inset: 0;
z-index: 40;
}
.settings-dropdown-backdrop.show {
display: block;
}
.upload-group {
position: relative;
display: inline-flex;
gap: 0.5rem;
}
</style>
<script async="" defer="" src="https://tianji.1337.la/tracker.js" data-website-id="cm4krj4fm000187p2belzg55x"></script>
<style>*, ::before, ::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/* ! tailwindcss v3.4.16 | MIT License | https://tailwindcss.com */*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{--tw-content:''}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.relative{position:relative}.mx-auto{margin-left:auto;margin-right:auto}.my-8{margin-top:2rem;margin-bottom:2rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:0.5rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.hidden{display:none}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.min-h-screen{min-height:100vh}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-full{width:100%}.max-w-3xl{max-width:48rem}.max-w-\[700px\]{max-width:700px}.-translate-y-\[2px\]{--tw-translate-y:-2px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:0.5rem}.space-x-4 > :not([hidden]) ~ :not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1 > :not([hidden]) ~ :not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.25rem * var(--tw-space-y-reverse))}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:0.5rem}.rounded-md{border-radius:0.375rem}.border{border-width:1px}.border-0{border-width:0px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-\[\#a20140\]{--tw-border-opacity:1;border-color:rgb(162 1 64 / var(--tw-border-opacity, 1))}.border-\[\#e80860\]{--tw-border-opacity:1;border-color:rgb(232 8 96 / var(--tw-border-opacity, 1))}.border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91 / var(--tw-border-opacity, 1))}.border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70 / var(--tw-border-opacity, 1))}.bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))}.bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1))}.p-2{padding:0.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-2{padding-left:0.5rem;padding-right:0.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-6xl{font-size:3.75rem;line-height:1}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.text-\[\#e80860\]{--tw-text-opacity:1;color:rgb(232 8 96 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.transition-colors{transition-property:color, background-color, border-color, fill, stroke, -webkit-text-decoration-color;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, -webkit-text-decoration-color;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-200{transition-duration:200ms}.duration-300{transition-duration:300ms}.hover\:bg-\[\#a20140\]:hover{--tw-bg-opacity:1;background-color:rgb(162 1 64 / var(--tw-bg-opacity, 1))}.hover\:bg-zinc-700:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70 / var(--tw-bg-opacity, 1))}.hover\:bg-zinc-800:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))}.hover\:text-\[\#a20140\]:hover{--tw-text-opacity:1;color:rgb(162 1 64 / var(--tw-text-opacity, 1))}</style></head>
<body class="min-h-screen text-gray-300">
<div class="min-h-screen flex flex-col items-center justify-center p-4">
<main class="w-full max-w-3xl mx-auto">
<header class="text-center mb-12">
<h1 class="text-6xl font-normal mb-2">
<span class="gradient-text">qu.ax</span>
</h1>
<p class="text-xl text-gray-400">Simple & Private File Hosting</p>
</header>
<div class="grill-container">
<img src="/grill.php" class="grill-image" alt="Grill Image">
</div>
<section class="mb-12">
<div class="bg-zinc-900 rounded-lg p-8 text-center">
<form id="upload-form" class="mb-6 js">
<input type="file" id="upload-input" multiple="">
<div class="upload-group">
<button id="upload-btn" type="button" class="bg-zinc-800 hover:bg-[#a20140] border border-[#a20140] text-white px-8 py-4 rounded-lg text-xl transition-colors duration-300">
Select or drop file(s)
</button>
<div class="relative">
<button type="button" id="settings-btn" class="bg-zinc-800 hover:bg-zinc-700 border border-zinc-700 text-white px-4 py-4 rounded-lg transition-colors duration-300">
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"></path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
</svg>
</button>
<div class="settings-dropdown-backdrop"></div>
<div id="settings-dropdown" class="settings-dropdown">
<div class="p-4 border-b border-zinc-700">
<h3 class="text-sm font-medium text-gray-300">File Storage Duration</h3>
</div>
<div class="p-2">
<div class="space-y-1">
<label class="block px-2 py-2 rounded-md cursor-pointer hover:bg-zinc-800 transition-colors duration-200">
<input type="radio" name="file-expiry" value="1" class="hidden">
<div class="flex items-center justify-between">
<span>1 day</span>
<div class="w-4 h-4 rounded-full border border-zinc-600 flex items-center justify-center expiry-radio"></div>
</div>
</label>
<label class="block px-2 py-2 rounded-md cursor-pointer hover:bg-zinc-800 transition-colors duration-200">
<input type="radio" name="file-expiry" value="7" class="hidden">
<div class="flex items-center justify-between">
<span>7 days</span>
<div class="w-4 h-4 rounded-full border border-zinc-600 flex items-center justify-center expiry-radio"></div>
</div>
</label>
<label class="block px-2 py-2 rounded-md cursor-pointer hover:bg-zinc-800 transition-colors duration-200">
<input type="radio" name="file-expiry" value="30" class="hidden" checked="">
<div class="flex items-center justify-between">
<span>30 days</span>
<div class="w-4 h-4 rounded-full border border-zinc-600 flex items-center justify-center expiry-radio"></div>
</div>
</label>
<label class="block px-2 py-2 rounded-md cursor-pointer hover:bg-zinc-800 transition-colors duration-200">
<input type="radio" name="file-expiry" value="365" class="hidden">
<div class="flex items-center justify-between">
<span>1 year</span>
<div class="w-4 h-4 rounded-full border border-zinc-600 flex items-center justify-center expiry-radio"></div>
</div>
</label>
<label class="block px-2 py-2 rounded-md cursor-pointer hover:bg-zinc-800 transition-colors duration-200">
<input type="radio" name="file-expiry" value="-1" class="hidden">
<div class="flex items-center justify-between">
<span>Permanent</span>
<div class="w-4 h-4 rounded-full border border-zinc-600 flex items-center justify-center expiry-radio"></div>
</div>
</label>
</div>
</div>
</div>
</div>
</div>
</form>
<p class="text-sm text-gray-400 mt-4">Max upload size is 256MB</p>
<ul id="upload-filelist" class="mt-6 text-left"></ul>
</div>
</section>
<div class="bg-zinc-900 rounded-lg p-4 mb-8 text-center">
<a href="/static/quax.sxcu" target="_blank" class="inline-flex items-center gap-2 gradient-hover font-medium">
<span>Using <img src="/img/ShareX_Logo_16.png" alt="ShareX" class="inline-block w-4 h-4 -translate-y-[2px]"> ShareX? Get our .sxcu file for direct desktop uploads!</span>
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path>
</svg>
</a>
</div>
<hr class="border-0 border-t border-[#e80860] my-8 max-w-[700px] mx-auto">
<footer class="text-center space-x-4">
<a href="mailto:[email protected]" class="text-[#e80860] hover:text-[#a20140] transition-colors duration-300">Report Abuse</a>
<span class="text-gray-600">|</span>
<a href="/donate.html" class="text-[#e80860] hover:text-[#a20140] transition-colors duration-300">Donate! ❤️</a>
<span class="text-gray-600">|</span>
<a href="/tos.html" class="text-[#e80860] hover:text-[#a20140] transition-colors duration-300">Terms of Service (Rules!)</a>
<span class="text-gray-600">|</span>
<a target="_blank" href="https://tracker.qu.ax/" class="text-[#e80860] hover:text-[#a20140] transition-colors duration-300">Tracker</a>
<span class="text-gray-600">|</span>
<a target="_blank" href="https://trace.cat" class="text-[#e80860] hover:text-[#a20140] transition-colors duration-300">Trace.cat</a>
</footer>
</main>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const settingsBtn = document.getElementById('settings-btn');
const settingsDropdown = document.getElementById('settings-dropdown');
const backdrop = document.querySelector('.settings-dropdown-backdrop');
const radioInputs = document.querySelectorAll('input[name="file-expiry"]');
function updateRadioButtons() {
radioInputs.forEach(input => {
const radioDiv = input.nextElementSibling.querySelector('.expiry-radio');
if (input.checked) {
radioDiv.innerHTML = '<div class="w-2 h-2 rounded-full bg-[#e80860]"></div>';
} else {
radioDiv.innerHTML = '';
}
});
}
settingsBtn.addEventListener('click', function(e) {
e.stopPropagation();
settingsDropdown.classList.toggle('show');
backdrop.classList.toggle('show');
updateRadioButtons();
});
backdrop.addEventListener('click', function() {
settingsDropdown.classList.remove('show');
backdrop.classList.remove('show');
});
radioInputs.forEach(input => {
input.addEventListener('change', function() {
updateRadioButtons();
localStorage.setItem('preferred-expiry', this.value);
});
});
const savedExpiry = localStorage.getItem('preferred-expiry');
if (savedExpiry) {
const radioToCheck = document.querySelector(`input[name="file-expiry"][value="${savedExpiry}"]`);
if (radioToCheck) {
radioToCheck.checked = true;
updateRadioButtons();
}
}
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') {
settingsDropdown.classList.remove('show');
backdrop.classList.remove('show');
}
});
});
</script>
<script src="/static/js/main2.js"></script>
</body></html>