- ID de l'analyse :
- 7098ca83-b581-44ef-aae1-8e1e41c8ef06Terminée
- URL soumise :
- https://trashbytes.co/
- Fin du rapport :
Liens : 0 trouvé(s)
Liens sortants identifiés à partir de la page
Variables JavaScript : 15 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>trashbytes.co</title>
<meta name="title" content="trashbytes.co">
<meta name="description" content="Simple fast anonymous file sharing for everyone.">
<meta name="application-name" content="trashbytes.co">
<script src="/xz.js?v=90b03060fddb0a8e141e84c34118d290d684badd-dirty" defer=""></script>
<link rel="stylesheet" href="/whysostylish.css?v=90b03060fddb0a8e141e84c34118d290d684badd-dirty">
<link rel="stylesheet" href="/icons.css?v=90b03060fddb0a8e141e84c34118d290d684badd-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">TRASHBYTES</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>Index</li>
<li><a href="/speedtest" preload="mouseover">Speedtest</a></li>
<li><a href="/help" preload="mouseover">Help</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="/account" preload="mouseover">Account</a></li>
</ul>
<div class="mx-auto max-w-[60rem]">
<p>trashbytes.co is a simple, fast and privacy-oriented file hosting provider.</p>
<div x-data="UploadManager()">
<div class="flex flex-col gap-2">
<div>
<label for="file-input"><input type="file" id="file-input" multiple=""></label>
<label>
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>
<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>
<label x-show="showNote" style="display: none;">
<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>
<script>
function UploadManager() {
return {
queued: [],
completed: [],
running: 0,
concurrency: 5,
copyLinksButtonText: 'Copy links',
selectedLocation: "3eb9t1559lkv",
note: '',
showNote: false,
get settings() {
return {
note: this.note,
baseUrl: "https:\/\/w.trashbytes.co",
directoryId: "",
locationId: this.selectedLocation,
}
},
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>
<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>
<p>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>
</body></html>