- ID de l'analyse :
- 9d6edfa0-1f0c-4a43-9cf4-adb9a76764fbTerminée
- URL soumise :
- https://buzzheavier.com/
- Fin du rapport :
Liens : 0 trouvé(s)
Liens sortants identifiés à partir de la page
Variables JavaScript : 19 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 |
UploadManager | function |
htmx | object |
parseXHRError | function |
humanReadableSize | function |
copyTextToClipboard | function |
copyTextToClipboardFallback | function |
addFileToHistory | function |
Messages de journal de console : 0 trouvé(s)
Messages consignés dans la console web
HTML
Le corps HTML de la page en données brutes
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title>buzzheavier.com</title>
<meta name="title" content="buzzheavier.com">
<meta name="description" content="Motherfucking file hosting service.">
<meta name="application-name" content="buzzheavier.com">
<script src="/xz.js?v=3e27e7fa67c475a39341fec4ffea5ce48265555d-dirty" defer=""></script>
<link rel="stylesheet" href="/whysostylish.css?v=3e27e7fa67c475a39341fec4ffea5ce48265555d-dirty">
<link rel="stylesheet" href="/icons.css?v=3e27e7fa67c475a39341fec4ffea5ce48265555d-dirty">
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" defer=""></script>
<meta name="htmx-config" content="{"methodsThatUseUrlParams":["get"]}">
<style> .htmx-indicator{opacity:0} .htmx-request .htmx-indicator{opacity:1; transition: opacity 200ms ease-in;} .htmx-request.htmx-indicator{opacity:1; transition: opacity 200ms ease-in;} </style></head>
<body class="min-h-screen p-1.5" hx-ext="response-targets">
<div>
<p class="text-center text-3xl font-bold mt-1 mb-0">BUZZHEAVIER</p>
<p class="text-center mt-0">Motherfucking file hosting service</p>
</div>
<ul class="navbar text-center p-0 mb-7" hx-ext="preload">
<li><a>Index</a></li>
<li><a href="/pricing" preload="mouseover">Pricing</a></li>
<li><a href="/blog" preload="mouseover">Blog</a></li>
<li><a href="/speedtest" preload="mouseover">Speedtest</a></li>
<li><a href="/developers" preload="mouseover">Developers</a></li>
<li><a href="/privacy" preload="mouseover">Privacy</a></li>
<li><a href="/terms" preload="mouseover">Terms</a></li>
<li><a href="/contact" preload="mouseover">Contact</a></li>
<li><a href="/help" preload="mouseover">Help</a></li>
</ul>
<div class="mx-auto max-w-[60rem]">
<p>buzzheavier.com is a simple, fast and privacy-oriented file hosting provider.</p>
<div x-data="UploadManager()">
<div class="flex flex-col">
<div class="flex flex-wrap gap-4 items-center">
<label for="file-input">
<input type="file" id="file-input" multiple="">
</label>
<label class="flex items-center gap-2">
Location
<select x-model="selectedLocation">
<option value="3eb9t1559lkv">Central Europe</option>
<option value="12brteedoy0f">Eastern US</option>
<option value="95542dt0et21">Western US</option>
</select>
</label>
</div>
<div class="flex flex-wrap gap-2 items-center mt-2">
<button id="upload-button" @click="upload($event)">Upload</button>
<button @click="showNote=true;" x-show="!showNote">Add Note</button>
<button @click="abort()" :disabled="queued.filter(t => t.status === 'inprogress').length === 0" disabled="disabled">Cancel</button>
<button @click="copyLinks()" :disabled="completed.length === 0" x-text="copyLinksButtonText" disabled="disabled">Copy links</button>
</div>
<div class="mt-2" x-show="showNote" style="display: none;">
<label>
<textarea class="pt-1 border rounded-sm w-full sm:w-3/4" rows="1" maxlength="500" placeholder="Notes to display under the download link (e.g., file password, social handles)." x-model="note"></textarea>
</label>
</div>
<ul x-show="queued.length || completed.length" class="ps-4" style="display: none;">
<template x-for="task in queued">
<li x-show="task.status !== 'completed'">
<div class="flex-col flex gap-1">
<span x-text="task.file.name" class="mt-2"></span>
<div class="progress">
<div class="progress-bar" :style="'width: ' + task.stats.progress + '%;'" :class="{'progress-bar-danger': task.error}"></div>
</div>
<div class="flex justify-between">
<span x-text="task.statsText" :class="{'text-danger': task.error}"></span>
<button x-show="task.status === 'inprogress'" @click="task.abort()">Cancel</button>
</div>
</div>
</li>
</template>
<template x-for="task in completed">
<li>
<a :href="task.link" x-text="`${task.file.name} - ${humanReadableSize(task.file.size)}`" target="_blank"></a>
</li>
</template>
</ul>
</div>
</div>
<script>
function UploadManager() {
return {
note: '',
showNote: false,
queued: [],
completed: [],
running: 0,
concurrency: 5,
copyLinksButtonText: 'Copy links',
selectedLocation: "3eb9t1559lkv",
get settings() {
return {
note: this.note,
baseUrl: "https:\/\/w.buzzheavier.com",
directoryId: "",
locationId: this.selectedLocation,
uploadLinkId: this.uploadLinkId,
}
},
upload() {
const fi = document.getElementById('file-input')
const files = Array.from(fi.files)
if (!files || files.length === 0) return
const findOne = files.filter(f => f.name.length > 500)
if (findOne.length) this.error = 'file name must not exceed more than 500 characters'
else {
for (const file of files) {
const mp = new Uploader(file, this.settings)
this.queued.push(Alpine.reactive(mp))
this.process()
}
}
fi.value = null
},
process() {
this.queued.forEach((task) => {
if (task.status === 'queued' && this.running < this.concurrency) {
this.running += 1
task.upload().finally(() => {
if (task.status === 'completed') {
this.completed.push(task)
}
this.running -= 1
this.process()
})
}
})
this.queued = this.queued.filter(task => task !== undefined)
},
abort() {
this.queued.forEach((task) => {
if (task.status !== 'aborted' || task.status !== 'completed') {
task.abort()
}
})
},
copyLinks() {
const links = []
this.completed.forEach(task => {
links.push(task.link)
})
copyTextToClipboard(links.join('\n'))
this.copyLinksButtonText = 'Links copied'
setTimeout(() => {
this.copyLinksButtonText = 'Copy links'
}, 500)
},
init() {
window.addEventListener('beforeunload', (e) => {
const foundOne = this.queued.findIndex(task => task.status !== 'completed')
if (foundOne !== -1) {
e.preventDefault()
e.returnValue = 'You have an ongoing upload. Are you sure you want to leave?'
return 'You have an ongoing upload. Are you sure you want to leave?'
}
})
},
}
}
</script>
<h4>Our main features include</h4>
<ul>
<li>It's Fast</li>
<li>Simple UI, No Bullshit, Just Works.</li>
<li>No file size limits, No download speed caps.</li>
<li>Strict Zero log policy - We don't care what you upload or download.</li>
<li>Files will be kept forever as long as it was downloaded within the last 45 days.</li>
</ul>
<p>
Manage Your Account - <a href="/login">Login</a> / <a href="/login">Signup</a>
<br>
We emphasize Privacy, Net Neutrality and Free Software.
</p>
<p class="text-right">
<i>Malo periculosam libertatem quam quietum servitium.</i>
</p>
</div>
<div class="text-center text-danger mt-9">
<div id="flash"></div>
</div>
<script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"rayId":"8f2684f059633847","version":"2024.10.5","serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"c1361d0ed928439489c7829da1f19fac","b":1}" crossorigin="anonymous"></script>
</body></html>