Help
RSS
API
Feed
Maltego
Contact
Domain > blog.eu7.cn
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-11-21
43.159.99.20
(
ClassC
)
Port 80
HTTP/1.1 200 OKServer: TengineContent-Type: text/html; charsetUTF-8Vary: Accept-EncodingX-Pingback: https://blog.eu7.cn/index.php/action/xmlrpcStrict-Transport-Security: max-age31536000Transfer-Encoding: chunkedConnection: keep-aliveDate: Fri, 21 Nov 2025 07:23:31 GMTEO-LOG-UUID: 9607415410209506441EO-Cache-Status: MISS !DOCTYPE html>html>head>meta nameviewport contentinitial-scale1.0, maximum-scale1.0, minimum-scale1.0, user-scalable0, widthdevice-width/>meta http-equivcontent-type contenttext/html; charsetutf-8 />link reldns-prefetch hrefhttps://at.alicdn.com>link reldns-prefetch hrefhttps://weavatar.com>link relshortcut icon hrefhttps://img.vin/i/2025/07/28/6886f6024af0e.webp typeimage/x-icon />title>Hello World - 我又睡过了黎明。/title>link hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/animate.compat.css relstylesheet>!--动画效果-->link href//at.alicdn.com/t/c/font_3940454_drimor4umam.css relstylesheet/>!---图标库 iconfont.cn -->link relstylesheet hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/swiper/swiper-bundle.min.css />!--轮播图-->link relstylesheet hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/fancybox3/jquery.fancybox.min.css />!--灯箱效果-->link hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/css/main.css?v3.6.4.2 relstylesheet/>!--主题核心样式-->link hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/css/m.css?v3.6.4 relstylesheet/>!--主题核心样式-->style>:root { --theme-color: #623cfb;}* { box-sizing: border-box; margin: 0; padding: 0; } body.is-mobile { overflow-y: auto; }/* #board { position: relative; width: 100vw; height: 100dvh; overflow: hidden; }*/ body.is-mobile #board { height: auto; min-height: 100dvh; } .card { position: absolute; width: 220px; border-radius: 12px; box-shadow: 0 16px 35px rgba(0, 0, 0, 0.2); background: #fff; border: 1px solid rgba(0, 0, 0, 0.08); overflow: hidden; opacity: 0; transform-origin: center; transition: transform 0.35s ease, opacity 0.35s ease, left 0.35s ease, top 0.35s ease, width 0.35s ease, height 0.35s ease, border-radius 0.35s ease; } .card.dragging { transition: none; box-shadow: 0 22px 45px rgba(0, 0, 0, 0.35); } .card.maximized { box-shadow: 0 28px 60px rgba(0, 0, 0, 0.4); } .card-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: rgba(255, 255, 255, 0.7); cursor: grab; user-select: none; touch-action: pan-y; } .card-header.dragging { cursor: grabbing; } .window-controls { display: flex; align-items: center; gap: 6px; } .window-controls .control { position: relative; width: 12px; height: 12px; border-radius: 50%; border: 1px solid rgba(0, 0, 0, 0.08); background: #ccc; cursor: pointer; outline: none; padding: 0; display: inline-flex; align-items: center; justify-content: center; } .window-controls .control.close { background: #ff5f57; border-color: #e0443e; } .window-controls .control.minimize { background: #febb2e; border-color: #dea123; } .window-controls .control.maximize { background: #28c840; border-color: #1aab2c; } .window-controls .control::after { content: ; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); opacity: 0; transition: opacity 0.2s ease; } .window-controls .control.close::after { content: ×; width: auto; height: auto; background: none; font-size: 10px; line-height: 1; font-weight: 700; color: rgba(0, 0, 0, 0.7); } .window-controls .control.minimize::after { width: 6px; height: 2px; background: rgba(0, 0, 0, 0.6); } .window-controls .control.maximize::after { width: 6px; height: 6px; background: linear-gradient( 45deg, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0.6) 45%, transparent 45%, transparent 55%, rgba(0, 0, 0, 0.6) 55%, rgba(0, 0, 0, 0.6) 100% ); } .card-title { font-size: 13px; font-weight: 600; color: rgba(0, 0, 0, 0.55); padding-left: 10px; flex: 1; } .card-body { padding: 16px; font-size: 16px; line-height: 1.4; font-weight: 600; color: rgba(0, 0, 0, 0.72); } @media (max-width: 768px) { .card { width: 180px; border-radius: 10px; } .card-body { padding: 14px; font-size: 14px; } .card-title { font-size: 12px; } }/style>!--各页面OG信息及SEO优化-->!--首页-->meta propertyog:description content我又睡过了黎明。 />meta propertyog:image contenthttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/logo.png />meta nameimage contenthttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/logo.png>link relapple-touch-icon-precomposed hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/logo.png>meta namemsapplication-TileImage contenthttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/logo.png>!--文章详情页-->script>var logoUrl https://img.vin/i/2025/07/28/6886f57bb9901.webp;var logoWhiteUrl https://img.vin/i/2025/07/28/6886f57bb9901.webp;var bannerSwitch off;(function() { var currentTheme document.cookie.replace(/(?:(?:^|.*;\s*)eyeProtectMode\s*\\s*(^;*).*$)|^.*$/, $1); if (currentTheme dark) { document.documentElement.classList.add(night); }})();/script>meta namedescription content我又睡过了黎明。 />meta namekeywords content又睡过了黎明,我又睡过了黎明。 />meta namegenerator contentTypecho 1.2.1 />meta nametemplate contentOneBlog-lite />link relpingback hrefhttps://blog.eu7.cn/index.php/action/xmlrpc />link relEditURI typeapplication/rsd+xml titleRSD hrefhttps://blog.eu7.cn/index.php/action/xmlrpc?rsd />link relwlwmanifest typeapplication/wlwmanifest+xml hrefhttps://blog.eu7.cn/index.php/action/xmlrpc?wlw />link relalternate typeapplication/rss+xml titleHello World » RSS 2.0 hrefhttps://blog.eu7.cn/index.php/feed/ />link relalternate typeapplication/rdf+xml titleHello World » RSS 1.0 hrefhttps://blog.eu7.cn/index.php/feed/rss/ />link relalternate typeapplication/atom+xml titleHello World » ATOM 1.0 hrefhttps://blog.eu7.cn/index.php/feed/atom/ />/head>body>div idglobal-loading styledisplay:flex;> div classprogress-loader> div classprogress>/div> /div>/div>div idmain styleposition: relative; display:none;>div idboard styleuser-select: none; position: absolute;}>/div>div classmain>!-- 移动端侧栏菜单-->div classmenu> div classclose m> span idclose>i classiconfont icon-cancel>/i>/span> /div> li classpc>a hrefjavascript:void(0); onclickopenSearch();>i classiconfont icon-search>/i>搜索/a>/li> div classcopyright m> div classswitch> 夜间模式input typecheckbox idnight1 classswitchBtn>label fornight1 classswitchBtn>/label> /div> span>©2025 a hrefhttps://blog.eu7.cn/>Hello World/a>/span> span>Theme by a idcopyright-m hrefhttps://oneblog.net/oneblog title自豪地使用OneBlog主题 target_blank>OneBlog/a>/span> /div>/div>!--顶部菜单-->div classheader bg-white> i classiconfont icon-nav>/i> a classlogo idlogo hrefhttps://blog.eu7.cn/ stylebackground-image:url(https://img.vin/i/2025/07/28/6886f57bb9901.webp)>/a> i idsearch-btn classiconfont icon-search m>/i>/div>!--搜索弹框-->div classsearch-layer> button classclose-search pc>i classiconfont icon-cancel>/i>/button> div classsearch> h5 classpc>搜索/h5> form autocompleteoff idsearch methodpost actionhttps://blog.eu7.cn/ rolesearch classsearch-form> input typetext names classinput placeholder输入关键字搜索 required /> button typesubmit classsearch-icon> span classm>搜索/span> i classiconfont icon-search pc>/i> /button> /form> /div> div classtagscloud pc> h5>标签/h5> /div>/div>div classone pc> 上帝遣送绝望给我们,不是为了杀死我们,而是为了唤醒我们内心的新生命。 /div> !--文章列表--> div idposts classblur> a hrefhttps://blog.eu7.cn/index.php/archives/8/ classpost > h1 classanimated fadeInUp> 关于一个月之前那个备案... /h1> div classpost_preview animated fadeInUp> p>最后因为手机号和域名备案时的手机号重复了不能在主体信息中出现,又找了其他手机号最后也是成功备案上了(小程序)历时将近一个月.../p> /div> div classpost_meta animated fadeInUp> span>1个月前/span> span>47 阅读/span> span>2 评论/span> /div> /a> a hrefhttps://blog.eu7.cn/index.php/archives/6/ classpost > h1 classanimated fadeInUp> emmmm备案还没通过第四天了.... /h1> div classpost_preview animated fadeInUp> p>....不会要等一个月吧/p> /div> div classpost_meta animated fadeInUp> span>2个月前/span> span>97 阅读/span> span>1 评论/span> /div> /a> a hrefhttps://blog.eu7.cn/index.php/archives/4/ classpost > h1 classanimated fadeInUp> 开始尝试上线小程序... /h1> div classpost_preview animated fadeInUp> p>...目前在应该是最后一步备案中..平台审核。。一天了不知道什么时候能过,代码已经用CodeBuddy写好了哈哈哈/p> /div> div classpost_meta animated fadeInUp> span>3个月前/span> span>87 阅读/span> span>1 评论/span> /div> /a> a hrefhttps://blog.eu7.cn/index.php/archives/3/ classpost > h1 classanimated fadeInUp> 人生的意义是? /h1> div classpost_preview animated fadeInUp> p>/p> /div> div classpost_meta animated fadeInUp> span>3个月前/span> span>304 阅读/span> span>1 评论/span> /div> /a> a hrefhttps://blog.eu7.cn/index.php/archives/1/ classpost > h1 classanimated fadeInUp> 欢迎使用 Typecho /h1> div classpost_preview animated fadeInUp> p>如果您看到这篇文章,表示您的 blog 已经安装成功./p> /div> div classpost_meta animated fadeInUp> span>3个月前/span> span>77 阅读/span> span>3 评论/span> /div> /a> /div> !--点击无限加载--> div classload blur idloadmore> /div>/div>!--返回顶部-->a idgototop classhidden pc>i classiconfont icon-up>/i>/a> div classfooter pc> div classnavigation>!--底部菜单导航--> !--如果需要仅在网站底部额外增加页面路径,则按照以下格式增加即可: a href/archives>归档/a> --> /div> div classcopyright> Copyright©2025 All Rights Reserved. Load:0.038 sbr> img srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/beian.png/>a hrefhttps://beian.mps.gov.cn relnofollow noreferrer target_blank>豫公网安备41032802000114号/a> a hrefhttps://beian.miit.gov.cn/ target_blank relnofollow noreferrer>豫ICP备2025131730号/a>br> Theme by a idcopyright-pc hrefhttps://oneblog.net/oneblog title自豪地使用OneBlog主题 target_blank>OneBlog/a> V3.6.4 div classswitch> span>夜间模式/span> input typecheckbox idnight2 classnight-toggle> label fornight2 classswitchBtn>/label> /div> /div> div classcontact> a idqq titleQQ>i classiconfont icon-qq>/i>/a> a idtomail title博主邮箱>i classiconfont icon-mail>/i>/a> /div>/div>script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/jquery.min.js>/script>!--基础依赖放在最前面-->script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/fancybox3/jquery.fancybox.min.js>/script>!--图片灯箱效果-->script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/layer/layer.js>/script>script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/swiper/swiper-bundle.min.js>/script>script>var bannerSwitch off;/script>script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/js/main.js?v3.6.4>/script>!--主题js-->!-- 版权信息 -->div idcopyright-info styledisplay: none;>p>开源不易,请尊重作者版权,保留基本的版权信息。/p>/div>script typetext/javascript>$(document).on(click, #qq, function() {layer.msg(2740996370,{time:4000});}); $(document).on(click, #wxmp, function() {layer.open({type: 1,title: false,closeBtn: 0,shadeClose: true,skin: layui-layer-nobg,area: auto, content: img id mywxmp stylewidth:20rem;height:20rem;display:block; src>});});$(document).on(click, #tomail, function() {layer.msg(联系邮箱:2740996370@qq.com,{time:4000});}); /script>!--自定义JS代码-->script>const board document.getElementById(board) const messages 保持好心情, 多喝水哦, 今天辛苦啦, 早点休息, 记得吃水果, 加油,你可以的, 祝你顺利, 保持微笑呀, 愿所有烦恼都消失, 期待下一次见面, 梦想总会实现, 天气冷了,多穿衣服, 记得给自己放松, 每天都要元气满满, 今天也要好好爱自己, 适当休息一下 const colors #ffe0e3, #c7f0ff, #ffd8a8, #d9f2d9, #e5d7ff, #f9f7d9, #d2f0f8, #ffd4f5 const cardStates new WeakMap() // Reserve a very high层级给全屏卡片,避免被后续元素覆盖 const MAXIMIZED_LAYER 1000000 let activeMaximizedCard null let isGodDamnMobile window.matchMedia((pointer: coarse)).matches || window.innerWidth 768 const maxCards isGodDamnMobile ? 120 : 180 // 限制 DOM 节点数量,减轻移动端压力 const initialCardCount isGodDamnMobile ? 18 : 30 const spawnInterval isGodDamnMobile ? 700 : 400 let zIndexCursor 200 document.body.classList.toggle(is-mobile, isGodDamnMobile) function randomFrom(array) { return arrayMath.floor(Math.random() * array.length) } function clamp(value, min, max) { return Math.min(Math.max(value, min), max) } function applyTransform(card, state) { const scale state.scale ?? 1 const translateX state.translateX ?? 0 const translateY state.translateY ?? 0 const angle state.angle ?? 0 card.style.transform `translate(${translateX}px, ${translateY}px) scale(${scale}) rotate(${angle}deg)` } function bringToFront(card) { if (card activeMaximizedCard) { card.style.zIndex MAXIMIZED_LAYER return } zIndexCursor + 1 if (activeMaximizedCard && zIndexCursor > MAXIMIZED_LAYER) { zIndexCursor MAXIMIZED_LAYER - 1 } card.style.zIndex zIndexCursor } function setupCardInteractions(card) { const header card.querySelector(.card-header) const closeBtn card.querySelector(.control.close) const minimizeBtn card.querySelector(.control.minimize) const maximizeBtn card.querySelector(.control.maximize) closeBtn.addEventListener(click, event > { event.stopPropagation() closeCard(card) }) minimizeBtn.addEventListener(click, event > { event.stopPropagation() minimizeCard(card) }) maximizeBtn.addEventListener(click, event > { event.stopPropagation() toggleMaximize(card) }) header.addEventListener(pointerdown, event > { if (event.pointerType touch) return startDrag(event, card) }) card.addEventListener(pointerdown, () > { bringToFront(card) }) header.addEventListener(dblclick, event > { if (!event.target.closest(.control)) { toggleMaximize(card) } }) } function closeCard(card) { const state cardStates.get(card) if (!state || state.closing) return if (card activeMaximizedCard) { activeMaximizedCard null } state.closing true state.scale 0.1 card.style.opacity 0 applyTransform(card, state) const handleTransitionEnd event > { if (event.propertyName opacity) { card.removeEventListener(transitionend, handleTransitionEnd) card.remove() } } card.addEventListener(transitionend, handleTransitionEnd) } function minimizeCard(card) { const state cardStates.get(card) if (!state || state.closing) return // 最小化动画:缩小并淡出到底部,结束时移除节点释放内存 const runMinimize () > { state.closing true bringToFront(card) const bottom Math.max(window.innerHeight - 24, 0) const targetLeft clamp( state.left, 16, Math.max(window.innerWidth - card.offsetWidth - 16, 16) ) state.left targetLeft state.top bottom state.scale 0.1 state.angle 0 card.style.left `${targetLeft}px` card.style.top `${bottom}px` card.style.opacity 0.35 applyTransform(card, state) const handleTransitionEnd event > { if (event.propertyName transform) { card.removeEventListener(transitionend, handleTransitionEnd) card.remove() } } card.addEventListener(transitionend, handleTransitionEnd) } if (state.maximized) { activeMaximizedCard null state.maximized false card.classList.remove(maximized) card.style.borderRadius 12px state.left 0 state.top 0 state.scale 1 state.angle 0 applyTransform(card, state) requestAnimationFrame(() > { requestAnimationFrame(runMinimize) }) return } runMinimize() } function toggleMaximize(card) { const state cardStates.get(card) if (!state || state.closing) return if (state.maximized) { restoreFromMaximize(card, state) } else { maximizeCard(card, state) } } function maximizeCard(card, state) { state.beforeMaximize { left: state.left, top: state.top, scale: state.scale ?? 1, width: card.offsetWidth, height: card.offsetHeight, angle: state.angle ?? 0 } card.classList.add(maximized) card.style.left 0px card.style.top 0px card.style.width `${window.innerWidth}px` card.style.height `${window.innerHeight}px` card.style.borderRadius 0 state.left 0 state.top 0 state.scale 1 state.angle 0 applyTransform(card, state) activeMaximizedCard card bringToFront(card) state.maximized true } function restoreFromMaximize(card, state) { const previous state.beforeMaximize if (!previous) return card.classList.remove(maximized) card.style.left `${previous.left}px` card.style.top `${previous.top}px` card.style.width `${previous.width}px` card.style.height `${previous.height}px` card.style.borderRadius 12px state.left previous.left state.top previous.top state.scale previous.scale ?? 1 state.angle previous.angle ?? state.angle ?? 0 applyTransform(card, state) state.maximized false if (activeMaximizedCard card) { activeMaximizedCard null } bringToFront(card) state.lastPosition { left: state.left, top: state.top } setTimeout(() > { if (!state.maximized) { card.style.width card.style.height state.width card.offsetWidth state.height card.offsetHeight } }, 360) } function startDrag(event, card) { const control event.target.closest(.control) if (control) return const state cardStates.get(card) if (!state || state.closing || state.maximized) return // 鼠标拖拽使用 rAF 节流,避免频繁触发布局计算 event.preventDefault() bringToFront(card) const header card.querySelector(.card-header) card.classList.add(dragging) header.classList.add(dragging) state.dragging true state.dragOffsetX event.clientX - state.left state.dragOffsetY event.clientY - state.top let dragFrame null let pendingLeft state.left let pendingTop state.top const commitDrag () > { dragFrame null const maxLeft Math.max(window.innerWidth - card.offsetWidth, 0) const maxTop Math.max(window.innerHeight - card.offsetHeight, 0) state.left clamp(pendingLeft, -card.offsetWidth * 0.4, maxLeft) state.top clamp(pendingTop, -card.offsetHeight * 0.4, maxTop) card.style.left `${state.left}px` card.style.top `${state.top}px` } const handlePointerMove moveEvent > { if (!state.dragging) return pendingLeft moveEvent.clientX - state.dragOffsetX pendingTop moveEvent.clientY - state.dragOffsetY if (dragFrame null) { dragFrame requestAnimationFrame(commitDrag) } } const handlePointerUp () > { state.dragging false state.lastPosition { left: state.left, top: state.top } card.classList.remove(dragging) header.classList.remove(dragging) if (dragFrame ! null) { cancelAnimationFrame(dragFrame) commitDrag() } document.removeEventListener(pointermove, handlePointerMove) document.removeEventListener(pointerup, handlePointerUp) } document.addEventListener(pointermove, handlePointerMove) document.addEventListener(pointerup, handlePointerUp) } function createCard() { const card document.createElement(div) card.className card const color randomFrom(colors) const angleRange isGodDamnMobile ? 6 : 10 const angle (Math.random() - 0.5) * angleRange const cardWidth isGodDamnMobile ? 180 : 220 const cardHeight isGodDamnMobile ? 130 : 140 const horizontalMargin isGodDamnMobile ? 12 : 16 const verticalMargin isGodDamnMobile ? 12 : 20 const left horizontalMargin + Math.random() * Math.max(window.innerWidth - cardWidth - horizontalMargin * 2, 0) const top verticalMargin + Math.random() * Math.max(window.innerHeight - cardHeight - verticalMargin * 2, 0) card.style.background color card.style.left `${left}px` card.style.top `${top}px` if (activeMaximizedCard && zIndexCursor > MAXIMIZED_LAYER - 2) { zIndexCursor MAXIMIZED_LAYER - 2 } card.style.zIndex ++zIndexCursor card.innerHTML ` div classcard-header> div classwindow-controls> button classcontrol close typebutton aria-label关闭>/button> button classcontrol minimize typebutton aria-label最小化>/button> button classcontrol maximize typebutton aria-label最大化>/button> /div> div classcard-title>温馨提示/div> /div> div classcard-body>${randomFrom(messages)}/div> ` const state { angle, scale: isGodDamnMobile ? 0.85 : 0.7, translateX: 0, translateY: 0, left, top, maximized: false, closing: false, lastPosition: { left, top } } cardStates.set(card, state) applyTransform(card, state) board.appendChild(card) state.width card.offsetWidth state.height card.offsetHeight requestAnimationFrame(() > { state.scale 1 applyTransform(card, state) card.style.opacity 1 }) setupCardInteractions(card) if (board.children.length > maxCards) { const oldest board.firstElementChild if (oldest && oldest ! card) { oldest.remove() } } } for (let i 0; i initialCardCount; i++) { setTimeout(createCard, i * (isGodDamnMobile ? 60 : 40)) } setInterval(() > { createCard() }, spawnInterval) window.addEventListener(resize, () > { isGodDamnMobile window.matchMedia((pointer: coarse)).matches || window.innerWidth 768 // 视口变化时重新切换移动端模式,并同步全屏卡片的宽高 document.body.classList.toggle(is-mobile, isGodDamnMobile) document.querySelectorAll(.card.maximized).forEach(card > { card.style.width `${window.innerWidth}px` card.style.height `${window.innerHeight}px` }) })/script>/div>/body>/html>
Port 443
HTTP/1.1 200 OKServer: TengineContent-Type: text/html; charsetUTF-8Vary: Accept-EncodingX-Pingback: https://blog.eu7.cn/index.php/action/xmlrpcStrict-Transport-Security: max-age31536000Transfer-Encoding: chunkedConnection: keep-aliveDate: Fri, 21 Nov 2025 07:23:32 GMTEO-LOG-UUID: 10261575959192626265EO-Cache-Status: MISS !DOCTYPE html>html>head>meta nameviewport contentinitial-scale1.0, maximum-scale1.0, minimum-scale1.0, user-scalable0, widthdevice-width/>meta http-equivcontent-type contenttext/html; charsetutf-8 />link reldns-prefetch hrefhttps://at.alicdn.com>link reldns-prefetch hrefhttps://weavatar.com>link relshortcut icon hrefhttps://img.vin/i/2025/07/28/6886f6024af0e.webp typeimage/x-icon />title>Hello World - 我又睡过了黎明。/title>link hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/animate.compat.css relstylesheet>!--动画效果-->link href//at.alicdn.com/t/c/font_3940454_drimor4umam.css relstylesheet/>!---图标库 iconfont.cn -->link relstylesheet hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/swiper/swiper-bundle.min.css />!--轮播图-->link relstylesheet hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/fancybox3/jquery.fancybox.min.css />!--灯箱效果-->link hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/css/main.css?v3.6.4.2 relstylesheet/>!--主题核心样式-->link hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/css/m.css?v3.6.4 relstylesheet/>!--主题核心样式-->style>:root { --theme-color: #623cfb;}* { box-sizing: border-box; margin: 0; padding: 0; } body.is-mobile { overflow-y: auto; }/* #board { position: relative; width: 100vw; height: 100dvh; overflow: hidden; }*/ body.is-mobile #board { height: auto; min-height: 100dvh; } .card { position: absolute; width: 220px; border-radius: 12px; box-shadow: 0 16px 35px rgba(0, 0, 0, 0.2); background: #fff; border: 1px solid rgba(0, 0, 0, 0.08); overflow: hidden; opacity: 0; transform-origin: center; transition: transform 0.35s ease, opacity 0.35s ease, left 0.35s ease, top 0.35s ease, width 0.35s ease, height 0.35s ease, border-radius 0.35s ease; } .card.dragging { transition: none; box-shadow: 0 22px 45px rgba(0, 0, 0, 0.35); } .card.maximized { box-shadow: 0 28px 60px rgba(0, 0, 0, 0.4); } .card-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: rgba(255, 255, 255, 0.7); cursor: grab; user-select: none; touch-action: pan-y; } .card-header.dragging { cursor: grabbing; } .window-controls { display: flex; align-items: center; gap: 6px; } .window-controls .control { position: relative; width: 12px; height: 12px; border-radius: 50%; border: 1px solid rgba(0, 0, 0, 0.08); background: #ccc; cursor: pointer; outline: none; padding: 0; display: inline-flex; align-items: center; justify-content: center; } .window-controls .control.close { background: #ff5f57; border-color: #e0443e; } .window-controls .control.minimize { background: #febb2e; border-color: #dea123; } .window-controls .control.maximize { background: #28c840; border-color: #1aab2c; } .window-controls .control::after { content: ; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); opacity: 0; transition: opacity 0.2s ease; } .window-controls .control.close::after { content: ×; width: auto; height: auto; background: none; font-size: 10px; line-height: 1; font-weight: 700; color: rgba(0, 0, 0, 0.7); } .window-controls .control.minimize::after { width: 6px; height: 2px; background: rgba(0, 0, 0, 0.6); } .window-controls .control.maximize::after { width: 6px; height: 6px; background: linear-gradient( 45deg, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0.6) 45%, transparent 45%, transparent 55%, rgba(0, 0, 0, 0.6) 55%, rgba(0, 0, 0, 0.6) 100% ); } .card-title { font-size: 13px; font-weight: 600; color: rgba(0, 0, 0, 0.55); padding-left: 10px; flex: 1; } .card-body { padding: 16px; font-size: 16px; line-height: 1.4; font-weight: 600; color: rgba(0, 0, 0, 0.72); } @media (max-width: 768px) { .card { width: 180px; border-radius: 10px; } .card-body { padding: 14px; font-size: 14px; } .card-title { font-size: 12px; } }/style>!--各页面OG信息及SEO优化-->!--首页-->meta propertyog:description content我又睡过了黎明。 />meta propertyog:image contenthttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/logo.png />meta nameimage contenthttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/logo.png>link relapple-touch-icon-precomposed hrefhttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/logo.png>meta namemsapplication-TileImage contenthttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/logo.png>!--文章详情页-->script>var logoUrl https://img.vin/i/2025/07/28/6886f57bb9901.webp;var logoWhiteUrl https://img.vin/i/2025/07/28/6886f57bb9901.webp;var bannerSwitch off;(function() { var currentTheme document.cookie.replace(/(?:(?:^|.*;\s*)eyeProtectMode\s*\\s*(^;*).*$)|^.*$/, $1); if (currentTheme dark) { document.documentElement.classList.add(night); }})();/script>meta namedescription content我又睡过了黎明。 />meta namekeywords content又睡过了黎明,我又睡过了黎明。 />meta namegenerator contentTypecho 1.2.1 />meta nametemplate contentOneBlog-lite />link relpingback hrefhttps://blog.eu7.cn/index.php/action/xmlrpc />link relEditURI typeapplication/rsd+xml titleRSD hrefhttps://blog.eu7.cn/index.php/action/xmlrpc?rsd />link relwlwmanifest typeapplication/wlwmanifest+xml hrefhttps://blog.eu7.cn/index.php/action/xmlrpc?wlw />link relalternate typeapplication/rss+xml titleHello World » RSS 2.0 hrefhttps://blog.eu7.cn/index.php/feed/ />link relalternate typeapplication/rdf+xml titleHello World » RSS 1.0 hrefhttps://blog.eu7.cn/index.php/feed/rss/ />link relalternate typeapplication/atom+xml titleHello World » ATOM 1.0 hrefhttps://blog.eu7.cn/index.php/feed/atom/ />/head>body>div idglobal-loading styledisplay:flex;> div classprogress-loader> div classprogress>/div> /div>/div>div idmain styleposition: relative; display:none;>div idboard styleuser-select: none; position: absolute;}>/div>div classmain>!-- 移动端侧栏菜单-->div classmenu> div classclose m> span idclose>i classiconfont icon-cancel>/i>/span> /div> li classpc>a hrefjavascript:void(0); onclickopenSearch();>i classiconfont icon-search>/i>搜索/a>/li> div classcopyright m> div classswitch> 夜间模式input typecheckbox idnight1 classswitchBtn>label fornight1 classswitchBtn>/label> /div> span>©2025 a hrefhttps://blog.eu7.cn/>Hello World/a>/span> span>Theme by a idcopyright-m hrefhttps://oneblog.net/oneblog title自豪地使用OneBlog主题 target_blank>OneBlog/a>/span> /div>/div>!--顶部菜单-->div classheader bg-white> i classiconfont icon-nav>/i> a classlogo idlogo hrefhttps://blog.eu7.cn/ stylebackground-image:url(https://img.vin/i/2025/07/28/6886f57bb9901.webp)>/a> i idsearch-btn classiconfont icon-search m>/i>/div>!--搜索弹框-->div classsearch-layer> button classclose-search pc>i classiconfont icon-cancel>/i>/button> div classsearch> h5 classpc>搜索/h5> form autocompleteoff idsearch methodpost actionhttps://blog.eu7.cn/ rolesearch classsearch-form> input typetext names classinput placeholder输入关键字搜索 required /> button typesubmit classsearch-icon> span classm>搜索/span> i classiconfont icon-search pc>/i> /button> /form> /div> div classtagscloud pc> h5>标签/h5> /div>/div>div classone pc> 你记得也好,最好是忘掉。 /div> !--文章列表--> div idposts classblur> a hrefhttps://blog.eu7.cn/index.php/archives/8/ classpost > h1 classanimated fadeInUp> 关于一个月之前那个备案... /h1> div classpost_preview animated fadeInUp> p>最后因为手机号和域名备案时的手机号重复了不能在主体信息中出现,又找了其他手机号最后也是成功备案上了(小程序)历时将近一个月.../p> /div> div classpost_meta animated fadeInUp> span>1个月前/span> span>47 阅读/span> span>2 评论/span> /div> /a> a hrefhttps://blog.eu7.cn/index.php/archives/6/ classpost > h1 classanimated fadeInUp> emmmm备案还没通过第四天了.... /h1> div classpost_preview animated fadeInUp> p>....不会要等一个月吧/p> /div> div classpost_meta animated fadeInUp> span>2个月前/span> span>97 阅读/span> span>1 评论/span> /div> /a> a hrefhttps://blog.eu7.cn/index.php/archives/4/ classpost > h1 classanimated fadeInUp> 开始尝试上线小程序... /h1> div classpost_preview animated fadeInUp> p>...目前在应该是最后一步备案中..平台审核。。一天了不知道什么时候能过,代码已经用CodeBuddy写好了哈哈哈/p> /div> div classpost_meta animated fadeInUp> span>3个月前/span> span>87 阅读/span> span>1 评论/span> /div> /a> a hrefhttps://blog.eu7.cn/index.php/archives/3/ classpost > h1 classanimated fadeInUp> 人生的意义是? /h1> div classpost_preview animated fadeInUp> p>/p> /div> div classpost_meta animated fadeInUp> span>3个月前/span> span>304 阅读/span> span>1 评论/span> /div> /a> a hrefhttps://blog.eu7.cn/index.php/archives/1/ classpost > h1 classanimated fadeInUp> 欢迎使用 Typecho /h1> div classpost_preview animated fadeInUp> p>如果您看到这篇文章,表示您的 blog 已经安装成功./p> /div> div classpost_meta animated fadeInUp> span>3个月前/span> span>77 阅读/span> span>3 评论/span> /div> /a> /div> !--点击无限加载--> div classload blur idloadmore> /div>/div>!--返回顶部-->a idgototop classhidden pc>i classiconfont icon-up>/i>/a> div classfooter pc> div classnavigation>!--底部菜单导航--> !--如果需要仅在网站底部额外增加页面路径,则按照以下格式增加即可: a href/archives>归档/a> --> /div> div classcopyright> Copyright©2025 All Rights Reserved. Load:0.037 sbr> img srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/img/beian.png/>a hrefhttps://beian.mps.gov.cn relnofollow noreferrer target_blank>豫公网安备41032802000114号/a> a hrefhttps://beian.miit.gov.cn/ target_blank relnofollow noreferrer>豫ICP备2025131730号/a>br> Theme by a idcopyright-pc hrefhttps://oneblog.net/oneblog title自豪地使用OneBlog主题 target_blank>OneBlog/a> V3.6.4 div classswitch> span>夜间模式/span> input typecheckbox idnight2 classnight-toggle> label fornight2 classswitchBtn>/label> /div> /div> div classcontact> a idqq titleQQ>i classiconfont icon-qq>/i>/a> a idtomail title博主邮箱>i classiconfont icon-mail>/i>/a> /div>/div>script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/jquery.min.js>/script>!--基础依赖放在最前面-->script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/fancybox3/jquery.fancybox.min.js>/script>!--图片灯箱效果-->script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/layer/layer.js>/script>script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/sdk/swiper/swiper-bundle.min.js>/script>script>var bannerSwitch off;/script>script srchttps://blog.eu7.cn/usr/themes/OneBlog-lite/static/js/main.js?v3.6.4>/script>!--主题js-->!-- 版权信息 -->div idcopyright-info styledisplay: none;>p>开源不易,请尊重作者版权,保留基本的版权信息。/p>/div>script typetext/javascript>$(document).on(click, #qq, function() {layer.msg(2740996370,{time:4000});}); $(document).on(click, #wxmp, function() {layer.open({type: 1,title: false,closeBtn: 0,shadeClose: true,skin: layui-layer-nobg,area: auto, content: img id mywxmp stylewidth:20rem;height:20rem;display:block; src>});});$(document).on(click, #tomail, function() {layer.msg(联系邮箱:2740996370@qq.com,{time:4000});}); /script>!--自定义JS代码-->script>const board document.getElementById(board) const messages 保持好心情, 多喝水哦, 今天辛苦啦, 早点休息, 记得吃水果, 加油,你可以的, 祝你顺利, 保持微笑呀, 愿所有烦恼都消失, 期待下一次见面, 梦想总会实现, 天气冷了,多穿衣服, 记得给自己放松, 每天都要元气满满, 今天也要好好爱自己, 适当休息一下 const colors #ffe0e3, #c7f0ff, #ffd8a8, #d9f2d9, #e5d7ff, #f9f7d9, #d2f0f8, #ffd4f5 const cardStates new WeakMap() // Reserve a very high层级给全屏卡片,避免被后续元素覆盖 const MAXIMIZED_LAYER 1000000 let activeMaximizedCard null let isGodDamnMobile window.matchMedia((pointer: coarse)).matches || window.innerWidth 768 const maxCards isGodDamnMobile ? 120 : 180 // 限制 DOM 节点数量,减轻移动端压力 const initialCardCount isGodDamnMobile ? 18 : 30 const spawnInterval isGodDamnMobile ? 700 : 400 let zIndexCursor 200 document.body.classList.toggle(is-mobile, isGodDamnMobile) function randomFrom(array) { return arrayMath.floor(Math.random() * array.length) } function clamp(value, min, max) { return Math.min(Math.max(value, min), max) } function applyTransform(card, state) { const scale state.scale ?? 1 const translateX state.translateX ?? 0 const translateY state.translateY ?? 0 const angle state.angle ?? 0 card.style.transform `translate(${translateX}px, ${translateY}px) scale(${scale}) rotate(${angle}deg)` } function bringToFront(card) { if (card activeMaximizedCard) { card.style.zIndex MAXIMIZED_LAYER return } zIndexCursor + 1 if (activeMaximizedCard && zIndexCursor > MAXIMIZED_LAYER) { zIndexCursor MAXIMIZED_LAYER - 1 } card.style.zIndex zIndexCursor } function setupCardInteractions(card) { const header card.querySelector(.card-header) const closeBtn card.querySelector(.control.close) const minimizeBtn card.querySelector(.control.minimize) const maximizeBtn card.querySelector(.control.maximize) closeBtn.addEventListener(click, event > { event.stopPropagation() closeCard(card) }) minimizeBtn.addEventListener(click, event > { event.stopPropagation() minimizeCard(card) }) maximizeBtn.addEventListener(click, event > { event.stopPropagation() toggleMaximize(card) }) header.addEventListener(pointerdown, event > { if (event.pointerType touch) return startDrag(event, card) }) card.addEventListener(pointerdown, () > { bringToFront(card) }) header.addEventListener(dblclick, event > { if (!event.target.closest(.control)) { toggleMaximize(card) } }) } function closeCard(card) { const state cardStates.get(card) if (!state || state.closing) return if (card activeMaximizedCard) { activeMaximizedCard null } state.closing true state.scale 0.1 card.style.opacity 0 applyTransform(card, state) const handleTransitionEnd event > { if (event.propertyName opacity) { card.removeEventListener(transitionend, handleTransitionEnd) card.remove() } } card.addEventListener(transitionend, handleTransitionEnd) } function minimizeCard(card) { const state cardStates.get(card) if (!state || state.closing) return // 最小化动画:缩小并淡出到底部,结束时移除节点释放内存 const runMinimize () > { state.closing true bringToFront(card) const bottom Math.max(window.innerHeight - 24, 0) const targetLeft clamp( state.left, 16, Math.max(window.innerWidth - card.offsetWidth - 16, 16) ) state.left targetLeft state.top bottom state.scale 0.1 state.angle 0 card.style.left `${targetLeft}px` card.style.top `${bottom}px` card.style.opacity 0.35 applyTransform(card, state) const handleTransitionEnd event > { if (event.propertyName transform) { card.removeEventListener(transitionend, handleTransitionEnd) card.remove() } } card.addEventListener(transitionend, handleTransitionEnd) } if (state.maximized) { activeMaximizedCard null state.maximized false card.classList.remove(maximized) card.style.borderRadius 12px state.left 0 state.top 0 state.scale 1 state.angle 0 applyTransform(card, state) requestAnimationFrame(() > { requestAnimationFrame(runMinimize) }) return } runMinimize() } function toggleMaximize(card) { const state cardStates.get(card) if (!state || state.closing) return if (state.maximized) { restoreFromMaximize(card, state) } else { maximizeCard(card, state) } } function maximizeCard(card, state) { state.beforeMaximize { left: state.left, top: state.top, scale: state.scale ?? 1, width: card.offsetWidth, height: card.offsetHeight, angle: state.angle ?? 0 } card.classList.add(maximized) card.style.left 0px card.style.top 0px card.style.width `${window.innerWidth}px` card.style.height `${window.innerHeight}px` card.style.borderRadius 0 state.left 0 state.top 0 state.scale 1 state.angle 0 applyTransform(card, state) activeMaximizedCard card bringToFront(card) state.maximized true } function restoreFromMaximize(card, state) { const previous state.beforeMaximize if (!previous) return card.classList.remove(maximized) card.style.left `${previous.left}px` card.style.top `${previous.top}px` card.style.width `${previous.width}px` card.style.height `${previous.height}px` card.style.borderRadius 12px state.left previous.left state.top previous.top state.scale previous.scale ?? 1 state.angle previous.angle ?? state.angle ?? 0 applyTransform(card, state) state.maximized false if (activeMaximizedCard card) { activeMaximizedCard null } bringToFront(card) state.lastPosition { left: state.left, top: state.top } setTimeout(() > { if (!state.maximized) { card.style.width card.style.height state.width card.offsetWidth state.height card.offsetHeight } }, 360) } function startDrag(event, card) { const control event.target.closest(.control) if (control) return const state cardStates.get(card) if (!state || state.closing || state.maximized) return // 鼠标拖拽使用 rAF 节流,避免频繁触发布局计算 event.preventDefault() bringToFront(card) const header card.querySelector(.card-header) card.classList.add(dragging) header.classList.add(dragging) state.dragging true state.dragOffsetX event.clientX - state.left state.dragOffsetY event.clientY - state.top let dragFrame null let pendingLeft state.left let pendingTop state.top const commitDrag () > { dragFrame null const maxLeft Math.max(window.innerWidth - card.offsetWidth, 0) const maxTop Math.max(window.innerHeight - card.offsetHeight, 0) state.left clamp(pendingLeft, -card.offsetWidth * 0.4, maxLeft) state.top clamp(pendingTop, -card.offsetHeight * 0.4, maxTop) card.style.left `${state.left}px` card.style.top `${state.top}px` } const handlePointerMove moveEvent > { if (!state.dragging) return pendingLeft moveEvent.clientX - state.dragOffsetX pendingTop moveEvent.clientY - state.dragOffsetY if (dragFrame null) { dragFrame requestAnimationFrame(commitDrag) } } const handlePointerUp () > { state.dragging false state.lastPosition { left: state.left, top: state.top } card.classList.remove(dragging) header.classList.remove(dragging) if (dragFrame ! null) { cancelAnimationFrame(dragFrame) commitDrag() } document.removeEventListener(pointermove, handlePointerMove) document.removeEventListener(pointerup, handlePointerUp) } document.addEventListener(pointermove, handlePointerMove) document.addEventListener(pointerup, handlePointerUp) } function createCard() { const card document.createElement(div) card.className card const color randomFrom(colors) const angleRange isGodDamnMobile ? 6 : 10 const angle (Math.random() - 0.5) * angleRange const cardWidth isGodDamnMobile ? 180 : 220 const cardHeight isGodDamnMobile ? 130 : 140 const horizontalMargin isGodDamnMobile ? 12 : 16 const verticalMargin isGodDamnMobile ? 12 : 20 const left horizontalMargin + Math.random() * Math.max(window.innerWidth - cardWidth - horizontalMargin * 2, 0) const top verticalMargin + Math.random() * Math.max(window.innerHeight - cardHeight - verticalMargin * 2, 0) card.style.background color card.style.left `${left}px` card.style.top `${top}px` if (activeMaximizedCard && zIndexCursor > MAXIMIZED_LAYER - 2) { zIndexCursor MAXIMIZED_LAYER - 2 } card.style.zIndex ++zIndexCursor card.innerHTML ` div classcard-header> div classwindow-controls> button classcontrol close typebutton aria-label关闭>/button> button classcontrol minimize typebutton aria-label最小化>/button> button classcontrol maximize typebutton aria-label最大化>/button> /div> div classcard-title>温馨提示/div> /div> div classcard-body>${randomFrom(messages)}/div> ` const state { angle, scale: isGodDamnMobile ? 0.85 : 0.7, translateX: 0, translateY: 0, left, top, maximized: false, closing: false, lastPosition: { left, top } } cardStates.set(card, state) applyTransform(card, state) board.appendChild(card) state.width card.offsetWidth state.height card.offsetHeight requestAnimationFrame(() > { state.scale 1 applyTransform(card, state) card.style.opacity 1 }) setupCardInteractions(card) if (board.children.length > maxCards) { const oldest board.firstElementChild if (oldest && oldest ! card) { oldest.remove() } } } for (let i 0; i initialCardCount; i++) { setTimeout(createCard, i * (isGodDamnMobile ? 60 : 40)) } setInterval(() > { createCard() }, spawnInterval) window.addEventListener(resize, () > { isGodDamnMobile window.matchMedia((pointer: coarse)).matches || window.innerWidth 768 // 视口变化时重新切换移动端模式,并同步全屏卡片的宽高 document.body.classList.toggle(is-mobile, isGodDamnMobile) document.querySelectorAll(.card.maximized).forEach(card > { card.style.width `${window.innerWidth}px` card.style.height `${window.innerHeight}px` }) })/script>/div>/body>/html>
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
]