https://buzzheavier.com/

ID de exploración:
c6e3b79a-f9d1-4a75-9521-2dcb61d747a0Finalizado
URL enviada:
https://buzzheavier.com/
Informe finalizado:

Enlaces: 0 encontrados

Los enlaces salientes identificados en la página

Variables JavaScript: 12 encontradas

Las variables JavaScript globales cargadas en el objeto de ventana de una página son variables declaradas fuera de las funciones y a las que se puede acceder desde cualquier lugar del código en el ámbito actual

NombreTipo
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
Appfunction
parseXHRErrorfunction
copyTextToClipboardfunction
copyTextToClipboardFallbackfunction
humanReadableSizefunction
htmxobject
Alpineobject

Mensajes de registro de la consola: 0 encontrados

Mensajes registrados en la consola web

HTML

El cuerpo HTML sin procesar de la página

<!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="{&quot;rayId&quot;:&quot;8e540c7fee1a2fa6&quot;,&quot;version&quot;:&quot;2024.10.5&quot;,&quot;serverTiming&quot;:{&quot;name&quot;:{&quot;cfExtPri&quot;:true,&quot;cfL4&quot;:true,&quot;cfSpeedBrain&quot;:true,&quot;cfCacheStatus&quot;:true}},&quot;token&quot;:&quot;c1361d0ed928439489c7829da1f19fac&quot;,&quot;b&quot;:1}" crossorigin="anonymous"></script>


</body></html>