1<!DOCTYPE html> 2<html lang="en" dir="ltr"> 3<head> 4 <!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 4-5
4 5<script async src="https://www.googletagmanager.com/gtag/js?id=
5G-W8RYZ8T5BC
vendor: 12 bytes, line 5
5"></script>
6<script> 7
vendor: 134 bytes, lines 7-11
7window.dataLayer = window.dataLayer || []; 8 function gtag(){dataLayer.push(arguments);} 9 gtag('js', new Date()); 10 11 gtag('config', '
11G-W8RYZ8T5BC
vendor: 4 bytes, line 11
11');
12</script>
vendor: 1 bytes, line 12
12
13<script type="text/javascript"> 14 navigator.sayswho = (function(){ 15 var ua= navigator.userAgent, tem, 16 M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; 17 if(/trident/i.test(M[1])){ 18 tem= /\brv[ :]+(\d+)/g.exec(ua) || []; 19 return 'IE '+(tem[1] || ''); 20 } 21 if(M[1]=== 'Chrome'){ 22 tem= ua.match(/\b(OPR|Edge)\/(\d+)/); 23 if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera'); 24 } 25 M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; 26 if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]); 27 return M.join(' '); 28 })(); 29 30</script>
vendor: 1 bytes, line 30
30
31<script type="text/javascript"> 32 window.__authStatusBootstrap = {"authenticated":false,"csrf_token":null,"user":null}; 33</script>
vendor: 1 bytes, line 33
33
34<script data-cfasync="false" type="text/javascript"> 35(function () { 36 var bootstrapData = window.__authStatusBootstrap || null; 37 var resolvedData = null; 38 var pendingPromise = null; 39 40 function ensureCsrfMeta(data) { 41 if (!data || !data.csrf_token) { 42 return; 43 } 44 45 if (!document.querySelector('meta[name="csrf_token"]')) { 46 const meta = document.createElement('meta'); 47 meta.name = 'csrf_token'; 48 meta.content = data.csrf_token; 49 document.head.appendChild(meta); 50 } 51 } 52 function storeAuthUser(data) { 53 if (data && typeof data === 'object') { 54 window.authUser = data.user; 55 } 56 } 57 58 function resolveAndCache(data) { 59 if (!data) { 60 return null; 61 } 62 63 resolvedData = data; 64 ensureCsrfMeta(resolvedData); 65 storeAuthUser(resolvedData); 66 return resolvedData; 67 } 68 69 if (bootstrapData) { 70 resolveAndCache(bootstrapData); 71 bootstrapData = null; 72 delete window.__authStatusBootstrap; 73 } 74 75 window.__authStatusPromise = null; 76 77 window.__fetchAuthStatus = function () { 78 if (resolvedData) { 79 return Promise.resolve(resolvedData); 80 } 81 82 if (!pendingPromise) { 83 pendingPromise = fetch('/api/auth-status', { credentials: 'same-origin' }) 84 .then(function (res) { return res.json(); }) 85 .then(function (data) { 86 window.__authStatusPromise = null; 87 return resolveAndCache(data); 88 }) 89 .catch(function (error) { 90 window.__authStatusPromise = null; 91 console.error('Failed to load auth status', error); 92 throw error; 93 }); 94 95 window.__authStatusPromise = pendingPromise; 96 } 97 98 return pendingPromise; 99 }; 100 101 document.addEventListener('DOMContentLoaded', function () { 102 window.__fetchAuthStatus().catch(function () { 103 // Errors are logged above; swallow here so page rendering continues. 104 }); 105 106 }); 107})(); 108</script>
108 109 110<title>Single login and account sign in | Z-Library</title> 111<base href="/"> 112<meta charset="utf-8"> 113<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 114<meta http-equiv="X-UA-Compatible" content="IE=edge"> 115<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 116<meta name="title" content="Z-Library Login - Single Login | Z-Library Project"> 117<meta name="description" content="Z-Library single login and Z-Library login page. Sign in to your account to find books, manage your library, and continue reading."> 118<meta name="keywords" content="z-library single login, z library single login, z-lib single login, zlibrary login, z-library login, z lib login, z-library sign in, single login"> 119<meta name="robots" content="index,follow"> 120<meta name="distribution" content="global"> 121<link rel="canonical" href="https://z-lib.ag/login"> 122<link rel="alternate" hreflang="en" href="https://z-lib.ag/login"> 123<link rel="alternate" hreflang="ru" href="https://z-lib.ag/ru/login"> 124<link rel="alternate" hreflang="es" href="https://z-lib.ag/es/login"> 125<link rel="alternate" hreflang="it" href="https://z-lib.ag/it/login"> 126<link rel="alternate" hreflang="el" href="https://z-lib.ag/el/login"> 127<link rel="alternate" hreflang="ar" href="https://z-lib.ag/ar/login"> 128<link rel="alternate" hreflang="id" href="https://z-lib.ag/id/login"> 129<link rel="alternate" hreflang="ms" href="https://z-lib.ag/ms/login"> 130<link rel="alternate" hreflang="hi" href="https://z-lib.ag/hi/login"> 131<link rel="alternate" hreflang="de" href="https://z-lib.ag/de/login"> 132<link rel="alternate" hreflang="fr" href="https://z-lib.ag/fr/login"> 133<link rel="alternate" hreflang="pt" href="https://z-lib.ag/pt/login"> 134<link rel="alternate" hreflang="uk" href="https://z-lib.ag/uk/login"> 135<link rel="alternate" hreflang="pl" href="https://z-lib.ag/pl/login"> 136<link rel="alternate" hreflang="zh" href="https://z-lib.ag/zh-zh/login"> 137<link rel="alternate" hreflang="zh-TW" href="https://z-lib.ag/tw/login"> 138<link rel="alternate" hreflang="ja" href="https://z-lib.ag/ja/login"> 139<link rel="alternate" hreflang="vi" href="https://z-lib.ag/vi/login"> 140<link rel="alternate" hreflang="az" href="https://z-lib.ag/az/login"> 141<link rel="alternate" hreflang="hy" href="https://z-lib.ag/hy/login"> 142<link rel="alternate" hreflang="th" href="https://z-lib.ag/th/login"> 143<link rel="alternate" hreflang="tr" href="https://z-lib.ag/tr/login"> 144<link rel="alternate" hreflang="ka" href="https://z-lib.ag/ka/login"> 145<link rel="alternate" hreflang="bn" href="https://z-lib.ag/bn/login"> 146<link rel="alternate" hreflang="ps" href="https://z-lib.ag/ps/login"> 147<link rel="alternate" hreflang="te" href="https://z-lib.ag/te/login"> 148<link rel="alternate" hreflang="ur" href="https://z-lib.ag/ur/login"> 149<link rel="alternate" hreflang="ko" href="https://z-lib.ag/ko/login"> 150<link rel="alternate" hreflang="sr" href="https://z-lib.ag/sr/login"> 151<link rel="alternate" hreflang="bg" href="https://z-lib.ag/bg/login"> 152<link rel="alternate" hreflang="x-default" href="https://z-lib.ag/login"> 153<meta property="og:url" content="https://z-lib.ag/login"> 154 155<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=1"> 156<link rel="icon" href="/favicon.svg"> 157<link rel="icon" type="image/svg+xml" href="/favicon-32x32.svg?v=2" sizes="32x32"> 158<link rel="icon" type="image/svg+xml" href="/favicon-16x16.svg?v=2" sizes="16x16"> 159<link rel="manifest" href="/manifest.json?v=1"> 160<link rel="mask-icon" href="/safari-pinned-tab.svg?v=1" color="#5bbad5"> 161<meta name="apple-mobile-web-app-title" content="Z-Library"> 162<meta name= "apple-mobile-web-app-capable" content="yes"> 163<meta name="mobile-web-app-capable" content="yes"> 164<meta name="application-name" content="Z-Library"> 165<meta name="theme-color" content="#ffffff"> 166<meta name="format-detection" content="telephone=no"> 167 168 169<!-- CSS SET --> 170<!-- JS SET --> 171<link REL="SHORTCUT ICON" HREF="/favicon.ico?v=1"> 172 173 174<link rel="stylesheet" type="text/css" href="/css/global.css?v=20260719" />
175<script type="text/javascript" src="/js/global.js"></script>
175 176<link rel="stylesheet" type="text/css" href="/design/appdesign/bz/resources/css/bztheme.css?v=20260709id" /> 177<link rel="stylesheet" type="text/css" href="/design/appdesign/bz/resources/build/bzmain.css?v=20260709id" /> 178<link rel="stylesheet" type="text/css" href="/design/appdesign/bz/components/style.css?v=20260709id" /> 179<link rel="stylesheet" type="text/css" href="/design/appdesign/sk/theme.css?v=20260709id" /> 180<link rel="stylesheet" type="text/css" href="/design/appdesign/sk/global.css?v=20260709id" /> 181<link rel="stylesheet" type="text/css" href="/design/appdesign/sk/global-d.css?v=20260709id" /> 182<link rel="stylesheet" type="text/css" href="/design/appdesign/sk/main.css?v=20260719" /> 183<link rel="stylesheet" type="text/css" href="/design/appdesign/sk/style.css?v=20260709id" /> 184<link rel="stylesheet" type="text/css" href="/design/zlib-new/zlib-new.css?v=20260709id" />
185<script type="text/javascript" src="/design/appdesign/bz/components/bzlibrary.js?v=20260709id" defer></script>
vendor: 1 bytes, line 185
185
186<script type="text/javascript" src="/design/appdesign/bz/components/bz-cover.js?v=20260709id" defer></script>
vendor: 1 bytes, line 186
186
187<script type="text/javascript" src="/design/zlib-new/zlib-new.js?v=20260709id" defer></script>
187 188
189<script type="application/ld+json"> 190{ 191 "@context": "http://schema.org", 192 "@type": "WebSite", 193 "name": "Z-Library", 194 "url": "https:\/\/z-lib.ag\/", 195 "inLanguage": "en", 196 "sameAs": [ 197 "https://twitter.com/thezlibrary" 198 ], 199 "potentialAction": { 200 "@type": "SearchAction", 201 "target": "https:\/\/z-lib.ag\/s?q={search_term_string}", 202 "query-input": "required name=search_term_string" 203 } 204} 205</script>
205 206 207<style> 208 div#colorBoxes 209 { 210 text-transform: capitalize; 211 } 212 213 div#colorBoxes ul li.active:nth-child(1) 214 { 215 border: 1px solid #378096; 216 box-shadow: 0 0 6px #7DBCCF; 217 border-top: 0px; 218 } 219 220 div#colorBoxes ul li.active:nth-child(2) 221 { 222 border: 1px solid #6e9b41; 223 box-shadow: 0 0 6px #a4e861; 224 border-top: 0px; 225 } 226</style> 227 228<style type="text/css"> 229 .main-menu-item img { 230 opacity: 0.7; 231 } 232 .main-menu-item img:hover { 233 opacity: 1; 234 } 235</style> 236 237<style> 238 .see-more-btn { 239 text-align: right; 240 font-size: 100%; 241 margin: 20px 0 0 0; 242 } 243</style> 244 245 246 <style> 247 .bMosaicBox { min-height: 100vh } 248 #booksMosaicBoxContainer #bMosaicBox { 249 display: none; 250 } 251 #booksMosaicBoxContainer #bMosaicBox .brick a { 252 display: block; 253 text-decoration: none; 254 } 255 #booksMosaicBoxContainer #bMosaicBox .bMosaicCover { 256 width: 100%; 257 } 258 259 .book-loading { position: relative } 260 261 .book-loading > div:nth-child(2) { 262 opacity: 0; 263 position: absolute; 264 top: 0; 265 left: 0; 266 } 267 268 #bMosaicBox .c-book-title { 269 max-height: 60px; 270 } 271 272 @keyframes toggleOpacity { 273 from { opacity: 1 } 274 to { opacity: 0 } 275 } 276 </style> 277 278 <style> 279 /* comments */ 280 281.media{ 282 display: -webkit-box; 283 display: -ms-flexbox; 284 display: flex; 285 -webkit-box-align: start; 286 -ms-flex-align: start; 287 align-items: flex-start; 288} 289.media-body{ 290 -webkit-box-flex: 1; 291 -ms-flex: 1; 292 flex: 1; 293 box-sizing: border-box; 294 width: unset !important; 295} 296.media img{ 297width: 64px; 298height: 64px; 299margin-right: 1rem !important; 300border-radius: 50%; 301} 302.text-danger{ 303 color: red; 304} 305</style> 306<style> 307#searchModeTabs li:nth-child(3){ 308 display:none; 309} 310</style> 311 312<link rel="stylesheet" href="/css/login.css?v=20260812bg1"> 313 314
314<script> 315 window != top ? window.stop() : null; 316 317 const Config = {"domainHost":window.location.hostname,"BRegion":null,"Country":"undefined","accessByIp":false}; 318 const CurrentUser = new User(null); 319 const CurrentClientIP = "127.0.0.1"; 320 const CurrentSiteMode = 'books'; 321 const proxiesToCheck = []; //for google verification 322 323 324 325 $(document).ready(function() { 326 if (typeof $.fn.tooltip === 'function') { 327 $('.tooltip-init').tooltip({html: true}); 328 } 329 }) 330 </script>
330 331 332</head> 333 334<body style="margin:0px;padding:0px;" class="subprojects/singlelogin/index singlelogin"> 335 <table class="super-puper-main-container" border="0" cellpadding="0" cellspacing="0"> 336 <tbody> 337 <tr> 338 <td class="g-page-content" style="vertical-align:top;padding-top: 10rem;"> 339 <div class="container"> 340 <div class="row"> 341 <div class="col-md-12 itemFullText"> 342 343<div class="row" style="margin: auto auto;"> 344 <div class="well login"> 345 <a href="/"><img style="width:75%;max-width:268px;display:block;margin:0 auto 32px auto;" src="/img/logo.png" alt="Z-Library"></a> 346 <legend>Single Sign In</legend> 347 <form data-action="login" method="POST" action="https://z-lib.ag/login" accept-charset="UTF-8"> 348 <input type="hidden" name="_token" value="IPkuyOGYDJN2wiDKNpLxA73sOkgDEDQ9Hw2exTrf"> <div class="form-group"> 349 <input type="text" class="form-control validation-field" name="email" value="" placeholder="Email"> 350 </div> 351 <div class="form-group" style="position: relative;"> 352 <input type="password" class="form-control form-control-password validation-field" name="password" placeholder="Password"> 353 <span class="glyphicon glyphicon-eye-close btn-show-password"></span> 354 <span class="glyphicon glyphicon-eye-open btn-hide-password hidden"></span> 355 </div> 356 357 <a class="password-recovery-btn" style="padding-top: 4px; padding-bottom: 8px; display: block; color: #8C8C8C; font-size: 12px;" data-auth_modal_toggle="passwordrecovery" href="https://z-lib.ag/forgot-password"> 358 <span>Forgot your password?</span> 359 </a> 360 361<button type="submit" name="submit" class="btn btn-info btn-block" id="submit-btn" >Sign In</button> 362 363 364</form> 365 <p style="margin-top:16px;text-align:center"><a href="/cdn-cgi/l/email-protection#4c3f393c3c233e380c3620252e3c3e2921253921622f2321">Cannot sign in? Contact support</a></p> 366 367 <div class="bottom-block"> 368 <div class="left">Don't have an account?</div> 369 <div class="right"> 370 <a href="https://z-lib.ag/register">Sign Up</a> 371 </div> 372 </div> 373 374 375 </div> 376 377</div> </div> 378 </div> 379 </div> 380 </td> 381 </tr> 382 383 384 <tr style="height:60px"> 385 <td id="footer" valign="top"> 386 <div class="container-fluid"></div> 387 </td> 388 </tr> 389 </tbody> 390 </table> 391 392 <!-- icons preload hack --> 393 <i class="zlibicon-check" style="font-size: 1px; visibility: hidden; position: absolute; top: 0; left: 0;"></i>
vendor: 118 bytes, lines 393-396
393 394 395 396<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
396<script> 397(function () { 398 var selector = 'form[method="POST"], form[method="post"]'; 399 400 document.addEventListener('submit', function (event) { 401 var form = event.target; 402 if (!(form instanceof HTMLFormElement) || !form.matches(selector)) return; 403 404 if (form.dataset.authSubmitting === '1') { 405 event.preventDefault(); 406 return; 407 } 408 409 form.dataset.authSubmitting = '1'; 410 form.querySelectorAll('button[type="submit"], input[type="submit"]').forEach(function (button) { 411 button.disabled = true; 412 button.setAttribute('aria-busy', 'true'); 413 }); 414 }, true); 415 416 window.addEventListener('pageshow', function (event) { 417 if (event.persisted) { 418 window.location.reload(); 419 return; 420 } 421 422 document.querySelectorAll(selector).forEach(function (form) { 423 delete form.dataset.authSubmitting; 424 form.querySelectorAll('[aria-busy="true"]').forEach(function (button) { 425 button.disabled = false; 426 button.removeAttribute('aria-busy'); 427 }); 428 }); 429 }); 430})(); 431</script>
431 432 433
433<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"54e875dc51f14ff1a3044d9440b58632","r":1,"spa":2}' crossorigin="anonymous"></script>
433 434</body> 435</html> 436
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.