Help
RSS
API
Feed
Maltego
Contact
Domain > image09.wow-trend.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2020-11-16
47.246.50.119
(
ClassC
)
2025-11-16
143.14.2.11
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Sun, 16 Nov 2025 14:58:02 GMTContent-Type: text/html; charsetutf-8Content-Length: 31256Connection: keep-aliveServer: openrestyAccept-Ranges: bytesAccess-Control-Allow-Origin: *Access-Control-Expose-Headers: X-Log, X-ReqidAccess-Control-Max-Age: 2592000Cache-Control: public, max-age31536000Content-Disposition: inline; filename; filename*utf-8Content-MD5: TwP8fF9Tp2gSmFgARaA47AContent-Transfer-Encoding: binaryETag: FsGL69MoQOQdxpy-ETuSvS3PTAVELast-Modified: Wed, 22 Oct 2025 08:43:46 GMTVary: Accept-EncodingX-Log: X-LogX-M-Log: QNM:cz23;QNM3X-M-Reqid: 3SUAAHULVt25o3YYX-Qiniu-Zone: 0X-Qnm-Cache: HitX-Reqid: HZsAAABRQY-0xHEYX-Svr: IOX-Ser: i92436_c21609, i2020957_c24821, i90114_c26909X-Cache: HIT from i90114_c26909(cloudsvr) !DOCTYPE html>html langzh-CN>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>随机图片/视频浏览器/title> style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: Segoe UI, Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; padding: 20px; } .container { max-width: 1400px; margin: 0 auto; background: rgba(255, 255, 255, 0.95); border-radius: 15px; padding: 30px; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); } h1 { text-align: center; color: #333; margin-bottom: 30px; font-size: 2.5em; } .controls { display: flex; gap: 15px; margin-bottom: 30px; flex-wrap: wrap; align-items: center; justify-content: center; } .control-group { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; } select, button, input { padding: 12px 20px; border: 2px solid #ddd; border-radius: 8px; font-size: 16px; transition: all 0.3s ease; } select { background: white; min-width: 120px; } select:focus, input:focus { outline: none; border-color: #667eea; } button { background: linear-gradient(135deg, #667eea, #764ba2); color: white; border: none; cursor: pointer; font-weight: bold; white-space: nowrap; } button:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); } button.random-dir { background: linear-gradient(135deg, #ff6b6b, #ee5a24); } button.refresh { background: linear-gradient(135deg, #00d2d3, #54a0ff); } .stats { text-align: center; margin: 15px 0; color: #666; font-size: 14px; } .gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 20px; margin-top: 20px; } .image-card { background: white; border-radius: 12px; overflow: hidden; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); transition: transform 0.3s ease; cursor: pointer; } .image-card:hover { transform: translateY(-5px); } .image-container { width: 100%; height: 250px; overflow: hidden; position: relative; background: #f5f5f5; } .image-container img, .image-container video { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } .image-card:hover .image-container img, .image-card:hover .image-container video { transform: scale(1.05); } .image-info { padding: 15px; background: #f8f9fa; } .image-name { font-weight: bold; color: #333; margin-bottom: 5px; word-break: break-all; font-size: 14px; } .image-path { color: #666; font-size: 12px; word-break: break-all; } .loading { text-align: center; padding: 40px; font-size: 18px; color: #666; } .media-type { position: absolute; top: 10px; right: 10px; background: rgba(0, 0, 0, 0.7); color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px; font-weight: bold; } .error { color: #e74c3c; text-align: center; padding: 20px; } .directory-info { background: #e8f4fd; padding: 15px; border-radius: 8px; margin-bottom: 20px; text-align: center; } .random-controls { background: #fff3cd; padding: 15px; border-radius: 8px; margin-bottom: 20px; text-align: center; } .random-history { margin-top: 10px; font-size: 14px; color: #666; } /* 模态框样式 */ .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.9); animation: fadeIn 0.3s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .modal-content { position: relative; margin: auto; padding: 20px; width: 90%; height: 90%; display: flex; flex-direction: column; align-items: center; justify-content: center; } .modal-media { max-width: 100%; max-height: 80vh; object-fit: contain; border-radius: 8px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); } .modal-info { color: white; text-align: center; margin-top: 20px; padding: 0 20px; max-width: 800px; } .modal-filename { font-size: 18px; font-weight: bold; margin-bottom: 5px; word-break: break-all; } .modal-filepath { font-size: 14px; opacity: 0.8; word-break: break-all; } .close { position: absolute; top: 20px; right: 35px; color: #f1f1f1; font-size: 40px; font-weight: bold; cursor: pointer; transition: 0.3s; z-index: 1001; } .close:hover { color: #bbb; transform: scale(1.1); } .nav-btn { position: absolute; top: 50%; transform: translateY(-50%); color: white; font-size: 30px; font-weight: bold; cursor: pointer; padding: 15px; background: rgba(0, 0, 0, 0.5); border-radius: 50%; width: 60px; height: 60px; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; user-select: none; } .nav-btn:hover { background: rgba(0, 0, 0, 0.8); transform: translateY(-50%) scale(1.1); } .prev { left: 30px; } .next { right: 30px; } .modal-controls { position: absolute; bottom: 30px; display: flex; gap: 15px; align-items: center; } .modal-controls button { padding: 10px 20px; font-size: 14px; } .counter { color: white; font-size: 16px; background: rgba(0, 0, 0, 0.5); padding: 8px 16px; border-radius: 20px; } @media (max-width: 768px) { .gallery { grid-template-columns: 1fr; } .controls { flex-direction: column; } .control-group { width: 100%; justify-content: center; } select, button, input { width: 100%; } .modal-content { width: 95%; height: 95%; padding: 10px; } .nav-btn { width: 50px; height: 50px; font-size: 24px; } .prev { left: 10px; } .next { right: 10px; } .close { top: 10px; right: 20px; font-size: 30px; } .modal-controls { bottom: 15px; flex-wrap: wrap; justify-content: center; } } /style>/head>body> div classcontainer> h1>🎨 随机图片/视频浏览器/h1> !-- 随机目录控制 --> div classrandom-controls> div classcontrol-group> button onclickrandomMainDirectory() classrandom-dir>🎯 随机主目录/button> button onclickrandomSubDirectory() classrandom-dir>🎲 随机子目录/button> button onclickrandomFullDirectory() classrandom-dir>🚀 完全随机目录/button> button onclickrefreshCurrent() classrefresh>🔄 刷新当前/button> /div> div classrandom-history idrandomHistory> 最近随机: 无 /div> /div> !-- 常规控制 --> div classcontrols> div classcontrol-group> select idmainDirSelect> option value>选择主目录.../option> /select> select idsubDirSelect> option value>选择子目录.../option> option valuerandom>🎲 随机目录/option> /select> input typenumber idimageCount value9 min1 max30 placeholder显示数量> /div> div classcontrol-group> button onclickloadRandomImages()>🎲 随机加载/button> button onclickloadAllImages()>📂 显示全部/button> button onclickclearGallery()>🗑️ 清空/button> /div> /div> div classdirectory-info iddirectoryInfo styledisplay: none;> 当前目录: span idcurrentDir>/span> | 文件数量: span idfileCount>0/span> /div> div classstats idstats>/div> div idgallery classgallery> div classloading>请选择目录开始浏览,或使用随机目录功能/div> /div> /div> !-- 图片查看模态框 --> div idimageModal classmodal> span classclose onclickcloseModal()>×/span> div classnav-btn prev onclicknavigateMedia(-1)>❮/div> div classnav-btn next onclicknavigateMedia(1)>❯/div> div classmodal-content> img idmodalImage classmodal-media src alt styledisplay: none;> video idmodalVideo classmodal-media controls styledisplay: none;>/video> div classmodal-info> div idmodalFilename classmodal-filename>/div> div idmodalFilepath classmodal-filepath>/div> /div> /div> div classmodal-controls> div classcounter idmodalCounter>/div> button onclickdownloadMedia()>💾 下载/button> button onclickcopyImageUrl()>📋 复制链接/button> /div> /div> script> // 配置 const MAIN_DIRS Array.from({length: 12}, (_, i) > (14 + i).toString().padStart(2, 0)); const SUB_DIRS Array.from({length: 366}, (_, i) > i.toString().padStart(3, 0)); let currentMainDir ; let currentSubDir ; let allMediaFiles ; let isLoading false; let randomHistory ; let currentModalIndex -1; let currentDisplayedFiles ; // 初始化目录选择器 function initializeDirSelector() { const mainSelect document.getElementById(mainDirSelect); const subSelect document.getElementById(subDirSelect); // 填充主目录 MAIN_DIRS.forEach(dir > { const option document.createElement(option); option.value dir; option.textContent `目录 ${dir}`; mainSelect.appendChild(option); }); // 填充子目录(排除随机选项) SUB_DIRS.forEach(dir > { const option document.createElement(option); option.value dir; option.textContent `子目录 ${dir}`; subSelect.appendChild(option); }); mainSelect.addEventListener(change, function() { currentMainDir this.value; allMediaFiles ; updateDirectoryInfo(); document.getElementById(gallery).innerHTML div classloading>请选择子目录/div>; }); subSelect.addEventListener(change, function() { const selectedValue this.value; if (selectedValue random) { // 随机选择子目录 if (!currentMainDir) { alert(请先选择主目录); this.value ; return; } const randomIndex Math.floor(Math.random() * SUB_DIRS.length); const randomSubDir SUB_DIRSrandomIndex; // 设置实际的值,但显示随机目录 currentSubDir randomSubDir; loadDirectoryFiles(); addToHistory(`随机目录: ${currentMainDir}/${randomSubDir}`); // 更新显示但不改变下拉框的值 document.querySelector(.directory-info span:first-child).textContent `${currentMainDir}/${randomSubDir} (随机选择)`; } else { currentSubDir selectedValue; if (currentMainDir && currentSubDir) { loadDirectoryFiles(); } } }); } // 随机选择主目录 function randomMainDirectory() { if (MAIN_DIRS.length 0) return; const randomIndex Math.floor(Math.random() * MAIN_DIRS.length); const randomMainDir MAIN_DIRSrandomIndex; document.getElementById(mainDirSelect).value randomMainDir; currentMainDir randomMainDir; currentSubDir ; document.getElementById(subDirSelect).value ; allMediaFiles ; updateDirectoryInfo(); document.getElementById(gallery).innerHTML div classloading>已随机选择主目录,请选择子目录/div>; addToHistory(`主目录: ${randomMainDir}`); } // 随机选择子目录 function randomSubDirectory() { if (!currentMainDir) { alert(请先选择主目录); return; } const randomIndex Math.floor(Math.random() * SUB_DIRS.length); const randomSubDir SUB_DIRSrandomIndex; document.getElementById(subDirSelect).value randomSubDir; currentSubDir randomSubDir; loadDirectoryFiles(); addToHistory(`子目录: ${currentMainDir}/${randomSubDir}`); } // 完全随机选择目录 function randomFullDirectory() { const randomMainIndex Math.floor(Math.random() * MAIN_DIRS.length); const randomSubIndex Math.floor(Math.random() * SUB_DIRS.length); const randomMainDir MAIN_DIRSrandomMainIndex; const randomSubDir SUB_DIRSrandomSubIndex; document.getElementById(mainDirSelect).value randomMainDir; document.getElementById(subDirSelect).value randomSubDir; currentMainDir randomMainDir; currentSubDir randomSubDir; loadDirectoryFiles(); addToHistory(`完全随机: ${randomMainDir}/${randomSubDir}`); } // 刷新当前目录 function refreshCurrent() { if (currentMainDir && currentSubDir) { loadDirectoryFiles(); addToHistory(`刷新: ${currentMainDir}/${currentSubDir}`); } else { alert(请先选择目录); } } // 添加到历史记录 function addToHistory(action) { const timestamp new Date().toLocaleTimeString(); randomHistory.unshift(`${timestamp} - ${action}`); // 只保留最近5条记录 if (randomHistory.length > 5) { randomHistory randomHistory.slice(0, 5); } updateHistoryDisplay(); } // 更新历史记录显示 function updateHistoryDisplay() { const historyElement document.getElementById(randomHistory); if (randomHistory.length > 0) { historyElement.innerHTML `最近随机: ${randomHistory0}`; } else { historyElement.innerHTML 最近随机: 无; } } // 加载目录文件 async function loadDirectoryFiles() { if (isLoading) return; isLoading true; const gallery document.getElementById(gallery); gallery.innerHTML div classloading>扫描目录中.../div>; try { // 使用Nginx的目录列表功能 const directoryUrl `${currentMainDir}/${currentSubDir}/`; const response await fetch(directoryUrl); const html await response.text(); // 解析HTML目录列表 allMediaFiles parseDirectoryListing(html); updateDirectoryInfo(); if (allMediaFiles.length 0) { gallery.innerHTML div classerror>该目录下未找到媒体文件/div>; } else { gallery.innerHTML div classloading>扫描完成!点击随机加载查看文件/div>; updateStats(); // 如果文件数量合理,自动加载一些随机图片 if (allMediaFiles.length 1000) { setTimeout(() > loadRandomImages(), 500); } } } catch (error) { console.error(加载目录失败:, error); gallery.innerHTML div classerror>加载目录失败: + error.message + /div>; } finally { isLoading false; } } // 解析Nginx目录列表 function parseDirectoryListing(html) { const files ; const parser new DOMParser(); const doc parser.parseFromString(html, text/html); // 查找目录列表中的链接 const links doc.querySelectorAll(a); links.forEach(link > { const href link.getAttribute(href); const text link.textContent; // 跳过上级目录链接和目录链接 if (href ../ || href.endsWith(/)) { return; } // 检查文件扩展名 const extension href.toLowerCase().split(.).pop(); const supportedExtensions jpg, jpeg, png, gif, webp, mp4; if (supportedExtensions.includes(extension)) { files.push({ name: href, url: `${currentMainDir}/${currentSubDir}/${href}`, type: extension mp4 ? video : image }); } }); return files; } // 更新目录信息 function updateDirectoryInfo() { const dirInfo document.getElementById(directoryInfo); const currentDirSpan document.getElementById(currentDir); const fileCountSpan document.getElementById(fileCount); if (currentMainDir && currentSubDir) { currentDirSpan.textContent `${currentMainDir}/${currentSubDir}`; fileCountSpan.textContent allMediaFiles.length; dirInfo.style.display block; } else { dirInfo.style.display none; } } // 更新统计信息 function updateStats() { const stats document.getElementById(stats); const imageCount allMediaFiles.filter(f > f.type image).length; const videoCount allMediaFiles.filter(f > f.type video).length; stats.innerHTML `找到 ${allMediaFiles.length} 个文件 (${imageCount} 张图片, ${videoCount} 个视频)`; } // 加载随机图片 function loadRandomImages() { if (allMediaFiles.length 0) { alert(请先选择目录); return; } const count parseInt(document.getElementById(imageCount).value) || 9; displayRandomImages(count); } // 显示所有图片 function loadAllImages() { if (allMediaFiles.length 0) { alert(请先选择目录); return; } // 如果文件太多,提示用户 if (allMediaFiles.length > 100) { if (!confirm(`该目录下有 ${allMediaFiles.length} 个文件,加载可能会影响性能。确定要显示全部吗?`)) { return; } } displayImages(allMediaFiles); } // 清空画廊 function clearGallery() { document.getElementById(gallery).innerHTML div classloading>画廊已清空/div>; } // 显示随机图片 function displayRandomImages(count) { const shuffled ...allMediaFiles.sort(() > Math.random() - 0.5); const selectedFiles shuffled.slice(0, Math.min(count, allMediaFiles.length)); displayImages(selectedFiles); } // 显示图片 function displayImages(files) { const gallery document.getElementById(gallery); if (files.length 0) { gallery.innerHTML div classerror>没有可显示的文件/div>; return; } gallery.innerHTML ; currentDisplayedFiles files; files.forEach((file, index) > { addMediaToGallery(file, index); }); } // 添加媒体到画廊 function addMediaToGallery(file, index) { const gallery document.getElementById(gallery); const card document.createElement(div); card.className image-card; card.setAttribute(data-index, index); card.innerHTML ` div classimage-container ondblclickopenModal(${index})> ${file.type video ? `video> source src${file.url} typevideo/mp4> 您的浏览器不支持视频标签 /video>` : `img src${file.url} alt${file.name} loadinglazy onerrorthis.onerrornull; this.srcdata:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZGRkIi8+PHRleHQgeD0iNTAlIiB5PSI1MCUiIGZvbnQtc2l6ZT0iMTgiIGZpbGw9IiM5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGR5PSIuM2VtIj7lm77niYc8L3RleHQ+PC9zdmc+; >` } div classmedia-type>${file.type video ? 📹 视频 : 🖼️ 图片}/div> /div> div classimage-info> div classimage-name title${file.name}>${file.name}/div> div classimage-path title${file.url}>${currentMainDir}/${currentSubDir}//div> /div> `; gallery.appendChild(card); } // 打开模态框 function openModal(index) { if (index 0 || index > currentDisplayedFiles.length) return; const file currentDisplayedFilesindex; const modal document.getElementById(imageModal); const modalImage document.getElementById(modalImage); const modalVideo document.getElementById(modalVideo); const modalFilename document.getElementById(modalFilename); const modalFilepath document.getElementById(modalFilepath); const modalCounter document.getElementById(modalCounter); currentModalIndex index; // 重置显示 modalImage.style.display none; modalVideo.style.display none; if (file.type video) { modalVideo.style.display block; modalVideo.src file.url; modalVideo.load(); } else { modalImage.style.display block; modalImage.src file.url; } modalFilename.textContent file.name; modalFilepath.textContent file.url; modalCounter.textContent `${index + 1} / ${currentDisplayedFiles.length}`; modal.style.display block; document.body.style.overflow hidden; } // 关闭模态框 function closeModal() { const modal document.getElementById(imageModal); const modalVideo document.getElementById(modalVideo); modal.style.display none; document.body.style.overflow auto; // 暂停视频 if (modalVideo) { modalVideo.pause(); } } // 导航媒体 function navigateMedia(direction) { const newIndex currentModalIndex + direction; if (newIndex > 0 && newIndex currentDisplayedFiles.length) { openModal(newIndex); } } // 下载媒体文件 function downloadMedia() { if (currentModalIndex -1) return; const file currentDisplayedFilescurrentModalIndex; const link document.createElement(a); link.href file.url; link.download file.name; document.body.appendChild(link); link.click(); document.body.removeChild(link); } // 复制图片链接 function copyImageUrl() { if (currentModalIndex -1) return; const file currentDisplayedFilescurrentModalIndex; navigator.clipboard.writeText(file.url).then(() > { alert(链接已复制到剪贴板); }).catch(() > { // 降级方案 const textArea document.createElement(textarea); textArea.value file.url; document.body.appendChild(textArea); textArea.select(); document.execCommand(copy); document.body.removeChild(textArea); alert(链接已复制到剪贴板); }); } // 键盘事件监听 document.addEventListener(keydown, function(event) { const modal document.getElementById(imageModal); if (modal.style.display block) { switch(event.key) { case Escape: closeModal(); break; case ArrowLeft: navigateMedia(-1); break; case ArrowRight: navigateMedia(1); break; } } }); // 点击模态框背景关闭 document.getElementById(imageModal).addEventListener(click, function(event) { if (event.target this) { closeModal(); } }); // 页面加载时初始化 document.addEventListener(DOMContentLoaded, function() { initializeDirSelector(); }); /script>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Sun, 16 Nov 2025 14:58:02 GMTContent-Type: text/html; charsetutf-8Content-Length: 31256Connection: keep-aliveServer: openrestyAccept-Ranges: bytesAccess-Control-Allow-Origin: *Access-Control-Expose-Headers: X-Log, X-ReqidAccess-Control-Max-Age: 2592000Cache-Control: public, max-age31536000Content-Disposition: inline; filename; filename*utf-8Content-MD5: TwP8fF9Tp2gSmFgARaA47AContent-Transfer-Encoding: binaryETag: FsGL69MoQOQdxpy-ETuSvS3PTAVELast-Modified: Wed, 22 Oct 2025 08:43:46 GMTVary: Accept-EncodingX-Log: X-LogX-M-Log: QNM:cz23;QNM3X-M-Reqid: 3SUAAHULVt25o3YYX-Qiniu-Zone: 0X-Qnm-Cache: HitX-Reqid: HZsAAABRQY-0xHEYX-Svr: IOX-Ser: i92436_c21609, i2020957_c24821, i90114_c26909X-Cache: HIT from i90114_c26909(cloudsvr) !DOCTYPE html>html langzh-CN>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>随机图片/视频浏览器/title> style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: Segoe UI, Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; padding: 20px; } .container { max-width: 1400px; margin: 0 auto; background: rgba(255, 255, 255, 0.95); border-radius: 15px; padding: 30px; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); } h1 { text-align: center; color: #333; margin-bottom: 30px; font-size: 2.5em; } .controls { display: flex; gap: 15px; margin-bottom: 30px; flex-wrap: wrap; align-items: center; justify-content: center; } .control-group { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; } select, button, input { padding: 12px 20px; border: 2px solid #ddd; border-radius: 8px; font-size: 16px; transition: all 0.3s ease; } select { background: white; min-width: 120px; } select:focus, input:focus { outline: none; border-color: #667eea; } button { background: linear-gradient(135deg, #667eea, #764ba2); color: white; border: none; cursor: pointer; font-weight: bold; white-space: nowrap; } button:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); } button.random-dir { background: linear-gradient(135deg, #ff6b6b, #ee5a24); } button.refresh { background: linear-gradient(135deg, #00d2d3, #54a0ff); } .stats { text-align: center; margin: 15px 0; color: #666; font-size: 14px; } .gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 20px; margin-top: 20px; } .image-card { background: white; border-radius: 12px; overflow: hidden; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); transition: transform 0.3s ease; cursor: pointer; } .image-card:hover { transform: translateY(-5px); } .image-container { width: 100%; height: 250px; overflow: hidden; position: relative; background: #f5f5f5; } .image-container img, .image-container video { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } .image-card:hover .image-container img, .image-card:hover .image-container video { transform: scale(1.05); } .image-info { padding: 15px; background: #f8f9fa; } .image-name { font-weight: bold; color: #333; margin-bottom: 5px; word-break: break-all; font-size: 14px; } .image-path { color: #666; font-size: 12px; word-break: break-all; } .loading { text-align: center; padding: 40px; font-size: 18px; color: #666; } .media-type { position: absolute; top: 10px; right: 10px; background: rgba(0, 0, 0, 0.7); color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px; font-weight: bold; } .error { color: #e74c3c; text-align: center; padding: 20px; } .directory-info { background: #e8f4fd; padding: 15px; border-radius: 8px; margin-bottom: 20px; text-align: center; } .random-controls { background: #fff3cd; padding: 15px; border-radius: 8px; margin-bottom: 20px; text-align: center; } .random-history { margin-top: 10px; font-size: 14px; color: #666; } /* 模态框样式 */ .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.9); animation: fadeIn 0.3s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .modal-content { position: relative; margin: auto; padding: 20px; width: 90%; height: 90%; display: flex; flex-direction: column; align-items: center; justify-content: center; } .modal-media { max-width: 100%; max-height: 80vh; object-fit: contain; border-radius: 8px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); } .modal-info { color: white; text-align: center; margin-top: 20px; padding: 0 20px; max-width: 800px; } .modal-filename { font-size: 18px; font-weight: bold; margin-bottom: 5px; word-break: break-all; } .modal-filepath { font-size: 14px; opacity: 0.8; word-break: break-all; } .close { position: absolute; top: 20px; right: 35px; color: #f1f1f1; font-size: 40px; font-weight: bold; cursor: pointer; transition: 0.3s; z-index: 1001; } .close:hover { color: #bbb; transform: scale(1.1); } .nav-btn { position: absolute; top: 50%; transform: translateY(-50%); color: white; font-size: 30px; font-weight: bold; cursor: pointer; padding: 15px; background: rgba(0, 0, 0, 0.5); border-radius: 50%; width: 60px; height: 60px; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; user-select: none; } .nav-btn:hover { background: rgba(0, 0, 0, 0.8); transform: translateY(-50%) scale(1.1); } .prev { left: 30px; } .next { right: 30px; } .modal-controls { position: absolute; bottom: 30px; display: flex; gap: 15px; align-items: center; } .modal-controls button { padding: 10px 20px; font-size: 14px; } .counter { color: white; font-size: 16px; background: rgba(0, 0, 0, 0.5); padding: 8px 16px; border-radius: 20px; } @media (max-width: 768px) { .gallery { grid-template-columns: 1fr; } .controls { flex-direction: column; } .control-group { width: 100%; justify-content: center; } select, button, input { width: 100%; } .modal-content { width: 95%; height: 95%; padding: 10px; } .nav-btn { width: 50px; height: 50px; font-size: 24px; } .prev { left: 10px; } .next { right: 10px; } .close { top: 10px; right: 20px; font-size: 30px; } .modal-controls { bottom: 15px; flex-wrap: wrap; justify-content: center; } } /style>/head>body> div classcontainer> h1>🎨 随机图片/视频浏览器/h1> !-- 随机目录控制 --> div classrandom-controls> div classcontrol-group> button onclickrandomMainDirectory() classrandom-dir>🎯 随机主目录/button> button onclickrandomSubDirectory() classrandom-dir>🎲 随机子目录/button> button onclickrandomFullDirectory() classrandom-dir>🚀 完全随机目录/button> button onclickrefreshCurrent() classrefresh>🔄 刷新当前/button> /div> div classrandom-history idrandomHistory> 最近随机: 无 /div> /div> !-- 常规控制 --> div classcontrols> div classcontrol-group> select idmainDirSelect> option value>选择主目录.../option> /select> select idsubDirSelect> option value>选择子目录.../option> option valuerandom>🎲 随机目录/option> /select> input typenumber idimageCount value9 min1 max30 placeholder显示数量> /div> div classcontrol-group> button onclickloadRandomImages()>🎲 随机加载/button> button onclickloadAllImages()>📂 显示全部/button> button onclickclearGallery()>🗑️ 清空/button> /div> /div> div classdirectory-info iddirectoryInfo styledisplay: none;> 当前目录: span idcurrentDir>/span> | 文件数量: span idfileCount>0/span> /div> div classstats idstats>/div> div idgallery classgallery> div classloading>请选择目录开始浏览,或使用随机目录功能/div> /div> /div> !-- 图片查看模态框 --> div idimageModal classmodal> span classclose onclickcloseModal()>×/span> div classnav-btn prev onclicknavigateMedia(-1)>❮/div> div classnav-btn next onclicknavigateMedia(1)>❯/div> div classmodal-content> img idmodalImage classmodal-media src alt styledisplay: none;> video idmodalVideo classmodal-media controls styledisplay: none;>/video> div classmodal-info> div idmodalFilename classmodal-filename>/div> div idmodalFilepath classmodal-filepath>/div> /div> /div> div classmodal-controls> div classcounter idmodalCounter>/div> button onclickdownloadMedia()>💾 下载/button> button onclickcopyImageUrl()>📋 复制链接/button> /div> /div> script> // 配置 const MAIN_DIRS Array.from({length: 12}, (_, i) > (14 + i).toString().padStart(2, 0)); const SUB_DIRS Array.from({length: 366}, (_, i) > i.toString().padStart(3, 0)); let currentMainDir ; let currentSubDir ; let allMediaFiles ; let isLoading false; let randomHistory ; let currentModalIndex -1; let currentDisplayedFiles ; // 初始化目录选择器 function initializeDirSelector() { const mainSelect document.getElementById(mainDirSelect); const subSelect document.getElementById(subDirSelect); // 填充主目录 MAIN_DIRS.forEach(dir > { const option document.createElement(option); option.value dir; option.textContent `目录 ${dir}`; mainSelect.appendChild(option); }); // 填充子目录(排除随机选项) SUB_DIRS.forEach(dir > { const option document.createElement(option); option.value dir; option.textContent `子目录 ${dir}`; subSelect.appendChild(option); }); mainSelect.addEventListener(change, function() { currentMainDir this.value; allMediaFiles ; updateDirectoryInfo(); document.getElementById(gallery).innerHTML div classloading>请选择子目录/div>; }); subSelect.addEventListener(change, function() { const selectedValue this.value; if (selectedValue random) { // 随机选择子目录 if (!currentMainDir) { alert(请先选择主目录); this.value ; return; } const randomIndex Math.floor(Math.random() * SUB_DIRS.length); const randomSubDir SUB_DIRSrandomIndex; // 设置实际的值,但显示随机目录 currentSubDir randomSubDir; loadDirectoryFiles(); addToHistory(`随机目录: ${currentMainDir}/${randomSubDir}`); // 更新显示但不改变下拉框的值 document.querySelector(.directory-info span:first-child).textContent `${currentMainDir}/${randomSubDir} (随机选择)`; } else { currentSubDir selectedValue; if (currentMainDir && currentSubDir) { loadDirectoryFiles(); } } }); } // 随机选择主目录 function randomMainDirectory() { if (MAIN_DIRS.length 0) return; const randomIndex Math.floor(Math.random() * MAIN_DIRS.length); const randomMainDir MAIN_DIRSrandomIndex; document.getElementById(mainDirSelect).value randomMainDir; currentMainDir randomMainDir; currentSubDir ; document.getElementById(subDirSelect).value ; allMediaFiles ; updateDirectoryInfo(); document.getElementById(gallery).innerHTML div classloading>已随机选择主目录,请选择子目录/div>; addToHistory(`主目录: ${randomMainDir}`); } // 随机选择子目录 function randomSubDirectory() { if (!currentMainDir) { alert(请先选择主目录); return; } const randomIndex Math.floor(Math.random() * SUB_DIRS.length); const randomSubDir SUB_DIRSrandomIndex; document.getElementById(subDirSelect).value randomSubDir; currentSubDir randomSubDir; loadDirectoryFiles(); addToHistory(`子目录: ${currentMainDir}/${randomSubDir}`); } // 完全随机选择目录 function randomFullDirectory() { const randomMainIndex Math.floor(Math.random() * MAIN_DIRS.length); const randomSubIndex Math.floor(Math.random() * SUB_DIRS.length); const randomMainDir MAIN_DIRSrandomMainIndex; const randomSubDir SUB_DIRSrandomSubIndex; document.getElementById(mainDirSelect).value randomMainDir; document.getElementById(subDirSelect).value randomSubDir; currentMainDir randomMainDir; currentSubDir randomSubDir; loadDirectoryFiles(); addToHistory(`完全随机: ${randomMainDir}/${randomSubDir}`); } // 刷新当前目录 function refreshCurrent() { if (currentMainDir && currentSubDir) { loadDirectoryFiles(); addToHistory(`刷新: ${currentMainDir}/${currentSubDir}`); } else { alert(请先选择目录); } } // 添加到历史记录 function addToHistory(action) { const timestamp new Date().toLocaleTimeString(); randomHistory.unshift(`${timestamp} - ${action}`); // 只保留最近5条记录 if (randomHistory.length > 5) { randomHistory randomHistory.slice(0, 5); } updateHistoryDisplay(); } // 更新历史记录显示 function updateHistoryDisplay() { const historyElement document.getElementById(randomHistory); if (randomHistory.length > 0) { historyElement.innerHTML `最近随机: ${randomHistory0}`; } else { historyElement.innerHTML 最近随机: 无; } } // 加载目录文件 async function loadDirectoryFiles() { if (isLoading) return; isLoading true; const gallery document.getElementById(gallery); gallery.innerHTML div classloading>扫描目录中.../div>; try { // 使用Nginx的目录列表功能 const directoryUrl `${currentMainDir}/${currentSubDir}/`; const response await fetch(directoryUrl); const html await response.text(); // 解析HTML目录列表 allMediaFiles parseDirectoryListing(html); updateDirectoryInfo(); if (allMediaFiles.length 0) { gallery.innerHTML div classerror>该目录下未找到媒体文件/div>; } else { gallery.innerHTML div classloading>扫描完成!点击随机加载查看文件/div>; updateStats(); // 如果文件数量合理,自动加载一些随机图片 if (allMediaFiles.length 1000) { setTimeout(() > loadRandomImages(), 500); } } } catch (error) { console.error(加载目录失败:, error); gallery.innerHTML div classerror>加载目录失败: + error.message + /div>; } finally { isLoading false; } } // 解析Nginx目录列表 function parseDirectoryListing(html) { const files ; const parser new DOMParser(); const doc parser.parseFromString(html, text/html); // 查找目录列表中的链接 const links doc.querySelectorAll(a); links.forEach(link > { const href link.getAttribute(href); const text link.textContent; // 跳过上级目录链接和目录链接 if (href ../ || href.endsWith(/)) { return; } // 检查文件扩展名 const extension href.toLowerCase().split(.).pop(); const supportedExtensions jpg, jpeg, png, gif, webp, mp4; if (supportedExtensions.includes(extension)) { files.push({ name: href, url: `${currentMainDir}/${currentSubDir}/${href}`, type: extension mp4 ? video : image }); } }); return files; } // 更新目录信息 function updateDirectoryInfo() { const dirInfo document.getElementById(directoryInfo); const currentDirSpan document.getElementById(currentDir); const fileCountSpan document.getElementById(fileCount); if (currentMainDir && currentSubDir) { currentDirSpan.textContent `${currentMainDir}/${currentSubDir}`; fileCountSpan.textContent allMediaFiles.length; dirInfo.style.display block; } else { dirInfo.style.display none; } } // 更新统计信息 function updateStats() { const stats document.getElementById(stats); const imageCount allMediaFiles.filter(f > f.type image).length; const videoCount allMediaFiles.filter(f > f.type video).length; stats.innerHTML `找到 ${allMediaFiles.length} 个文件 (${imageCount} 张图片, ${videoCount} 个视频)`; } // 加载随机图片 function loadRandomImages() { if (allMediaFiles.length 0) { alert(请先选择目录); return; } const count parseInt(document.getElementById(imageCount).value) || 9; displayRandomImages(count); } // 显示所有图片 function loadAllImages() { if (allMediaFiles.length 0) { alert(请先选择目录); return; } // 如果文件太多,提示用户 if (allMediaFiles.length > 100) { if (!confirm(`该目录下有 ${allMediaFiles.length} 个文件,加载可能会影响性能。确定要显示全部吗?`)) { return; } } displayImages(allMediaFiles); } // 清空画廊 function clearGallery() { document.getElementById(gallery).innerHTML div classloading>画廊已清空/div>; } // 显示随机图片 function displayRandomImages(count) { const shuffled ...allMediaFiles.sort(() > Math.random() - 0.5); const selectedFiles shuffled.slice(0, Math.min(count, allMediaFiles.length)); displayImages(selectedFiles); } // 显示图片 function displayImages(files) { const gallery document.getElementById(gallery); if (files.length 0) { gallery.innerHTML div classerror>没有可显示的文件/div>; return; } gallery.innerHTML ; currentDisplayedFiles files; files.forEach((file, index) > { addMediaToGallery(file, index); }); } // 添加媒体到画廊 function addMediaToGallery(file, index) { const gallery document.getElementById(gallery); const card document.createElement(div); card.className image-card; card.setAttribute(data-index, index); card.innerHTML ` div classimage-container ondblclickopenModal(${index})> ${file.type video ? `video> source src${file.url} typevideo/mp4> 您的浏览器不支持视频标签 /video>` : `img src${file.url} alt${file.name} loadinglazy onerrorthis.onerrornull; this.srcdata:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZGRkIi8+PHRleHQgeD0iNTAlIiB5PSI1MCUiIGZvbnQtc2l6ZT0iMTgiIGZpbGw9IiM5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGR5PSIuM2VtIj7lm77niYc8L3RleHQ+PC9zdmc+; >` } div classmedia-type>${file.type video ? 📹 视频 : 🖼️ 图片}/div> /div> div classimage-info> div classimage-name title${file.name}>${file.name}/div> div classimage-path title${file.url}>${currentMainDir}/${currentSubDir}//div> /div> `; gallery.appendChild(card); } // 打开模态框 function openModal(index) { if (index 0 || index > currentDisplayedFiles.length) return; const file currentDisplayedFilesindex; const modal document.getElementById(imageModal); const modalImage document.getElementById(modalImage); const modalVideo document.getElementById(modalVideo); const modalFilename document.getElementById(modalFilename); const modalFilepath document.getElementById(modalFilepath); const modalCounter document.getElementById(modalCounter); currentModalIndex index; // 重置显示 modalImage.style.display none; modalVideo.style.display none; if (file.type video) { modalVideo.style.display block; modalVideo.src file.url; modalVideo.load(); } else { modalImage.style.display block; modalImage.src file.url; } modalFilename.textContent file.name; modalFilepath.textContent file.url; modalCounter.textContent `${index + 1} / ${currentDisplayedFiles.length}`; modal.style.display block; document.body.style.overflow hidden; } // 关闭模态框 function closeModal() { const modal document.getElementById(imageModal); const modalVideo document.getElementById(modalVideo); modal.style.display none; document.body.style.overflow auto; // 暂停视频 if (modalVideo) { modalVideo.pause(); } } // 导航媒体 function navigateMedia(direction) { const newIndex currentModalIndex + direction; if (newIndex > 0 && newIndex currentDisplayedFiles.length) { openModal(newIndex); } } // 下载媒体文件 function downloadMedia() { if (currentModalIndex -1) return; const file currentDisplayedFilescurrentModalIndex; const link document.createElement(a); link.href file.url; link.download file.name; document.body.appendChild(link); link.click(); document.body.removeChild(link); } // 复制图片链接 function copyImageUrl() { if (currentModalIndex -1) return; const file currentDisplayedFilescurrentModalIndex; navigator.clipboard.writeText(file.url).then(() > { alert(链接已复制到剪贴板); }).catch(() > { // 降级方案 const textArea document.createElement(textarea); textArea.value file.url; document.body.appendChild(textArea); textArea.select(); document.execCommand(copy); document.body.removeChild(textArea); alert(链接已复制到剪贴板); }); } // 键盘事件监听 document.addEventListener(keydown, function(event) { const modal document.getElementById(imageModal); if (modal.style.display block) { switch(event.key) { case Escape: closeModal(); break; case ArrowLeft: navigateMedia(-1); break; case ArrowRight: navigateMedia(1); break; } } }); // 点击模态框背景关闭 document.getElementById(imageModal).addEventListener(click, function(event) { if (event.target this) { closeModal(); } }); // 页面加载时初始化 document.addEventListener(DOMContentLoaded, function() { initializeDirSelector(); }); /script>/body>/html>
Subdomains
Date
Domain
IP
image05.wow-trend.com
2024-09-21
163.181.66.230
image09.wow-trend.com
2025-11-16
143.14.2.11
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]