- スキャンID:
- c6e3b79a-f9d1-4a75-9521-2dcb61d747a0終了
- 送信済みURL:
- https://buzzheavier.com/
- レポート終了日:
リンク · 0件検出
ページから特定された発信リンク
JavaScript変数 · 12件検出
ページのウィンドウオブジェクトにロードされたグローバルのJavaScript変数は関数以外の場所で宣言された変数で、現在のスコープ内であればコードのどこからでもアクセス可能です
名前 | 規模 |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
App | function |
parseXHRError | function |
copyTextToClipboard | function |
copyTextToClipboardFallback | function |
humanReadableSize | function |
htmx | object |
Alpine | object |
コンソールログメッセージ · 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</title>
<meta name="title" content="buzzheavier">
<meta name="description" content="Motherfucking file hosting website">
<meta name="application-name" content="buzzheavier.com">
<link rel="shortcut icon" href="/static/favicon.ico">
<script src="/static/bundle.js?v=7d6c1340b60e01023feecbb5cc3c40432da6099b-dirty" defer=""></script>
<link rel="stylesheet" href="/static/whysostylish.css?v=7d6c1340b60e01023feecbb5cc3c40432da6099b-dirty">
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" defer=""></script>
<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" x-data="App()">
<div>
<p class="text-center text-4xl font-bold mt-1 mb-0">BUZZHEAVIER</p>
<p class="text-center mt-0">Simple fast anonymous file sharing for everyone.</p>
</div>
<ul id="menu" class="text-center p-0 mb-7">
<li>Index</li>
<li><a href="/announcement" class="text-danger">Announcement</a></li>
<li><a href="/speedtest">Speedtest</a></li>
<li><a href="/help">Help</a></li>
<li><a href="/privacy">Privacy</a></li>
<li><a href="/terms">Terms</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="/login">Login</a></li>
</ul>
<div class="mx-auto max-w-[60rem]" hx-ext="response-targets">
<div>
<p>buzzheavier is a simple, fast and privacy-oriented file hosting provider.</p>
<label for="file-input"><input type="file" id="file-input" multiple=""></label>
<button id="upload-button" @click="upload($event)">Upload</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>
<ul>
<template x-for="task in queued">
<li x-show="task.status !== 'completed'">
<div class="flex-col flex">
<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>
<p>Files uploaded from here won't be saved to your account.</p>
<p>Our main features include</p>
<ul>
<li>It's fast.</li>
<li>No bloatware.</li>
<li>Size doesn't matter (file's).</li>
<li>No download speed caps.</li>
<li>Files will be kept forever as long as it was downloaded within the last 30 days.</li>
<li>Online previews for media files.</li>
<li>Doesn't track you - no logs who download who upload.</li>
</ul>
<div>
<p>
<span>Account - </span> <a href="/login">Login</a> / <a href="/login">Signup</a>
</p>
</div>
<p>We emphasize Privacy, Net Neutrality and Free Software.</p>
<p class="text-right">
<i>Malo periculosam libertatem quam quietum servitium.</i>
</p>
</div>
<script>
function App() {
return {
queued: [],
completed: [],
running: 0,
concurrency: 5,
copyLinksButtonText: "Copy links",
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 > 200)
if (findOne.length) this.error = "file name must not exceed more than 200 characters"
else {
for (const file of files) {
const mp = new MultipartUpload(file, null, false)
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.start().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>
</div>
<div class="text-center text-danger mt-9">
<div id="flash-message"></div>
</div>
<script>
if (!this.App) this.App = () => ({});
const flashMessage = document.getElementById("flash-message")
document.body.addEventListener("htmx:responseError", function (e) {
flashMessage.innerHTML = e.detail.xhr.response;
flashMessage.style.display = "block";
});
document.body.addEventListener("htmx:sendError", function (event) {
flashMessage.innerText = event.detail.error.statusText;
flashMessage.style.display = "block";
});
document.body.addEventListener("htmx:beforeRequest", function (event) {
flashMessage.style.display = "none";
});
document.addEventListener('click', function (event) {
if (event.target.tagName === 'BUTTON' && event.target.textContent === 'Copy Link') {
event.target.textContent = 'Link Copied';
setTimeout(function () {
event.target.textContent = 'Copy Link';
}, 500);
}
});
</script>
<script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"rayId":"8e540c7fee1a2fa6","version":"2024.10.5","serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"c1361d0ed928439489c7829da1f19fac","b":1}" crossorigin="anonymous"></script>
</body></html>