- 掃描 ID:
- 9d6edfa0-1f0c-4a43-9cf4-adb9a76764fb已完成
- 已提交的 URL:
- https://buzzheavier.com/
- 報告完成時間:
連結 · 找到 0 個
從頁面中識別的傳出連結
JavaScript 變數 · 找到 19 個
在頁面的視窗物件上載入的全域 JavaScript 變數是在函數外部宣告的變數,可從目前範圍內程式碼中的任何位置存取
名稱 | 類型 |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
UploadManager | function |
htmx | object |
parseXHRError | function |
humanReadableSize | function |
copyTextToClipboard | function |
copyTextToClipboardFallback | function |
addFileToHistory | function |
主控台記錄訊息 · 找到 0 條
記錄到 Web 主控台的訊息
HTML
頁面的原始 HTML 主體
<!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>