Source Code
The entire project, readable in your browser. No hidden JavaScript, no sneaky beacons. If we claimed we don't track you, this is where you check.
|
Pages/
Feeds/
Backend/
Includes/
Stylesheet/
JavaScript/
data/counter.txt and data/guestbook.txt hold visitor-supplied content
(a number and signed messages), so they are not shown here.
|
1 <?php 2 /** 3 * privacy.php -- Privacy score + the site's own privacy policy. 4 * Top half: live 0-100 score computed in the browser. 5 * Bottom half: our actual, plain-English promise (we store nothing). 6 */ 7 require_once __DIR__ . '/includes/config.php'; 8 require_once __DIR__ . '/includes/functions.php'; 9 10 $PAGE_TITLE = 'Privacy'; 11 $PAGE_ID = 'privacy.php'; 12 13 include __DIR__ . '/includes/header.php'; 14 ?> 15 16 <h1><?php echo section_icon('lock', '#00FF00', 22); ?> Privacy Score</h1> 17 18 <p> 19 A blunt, honest 0–100 estimate of how exposed you are right now, split 20 across six categories. Higher is better. Computed in your browser; not stored. 21 </p> 22 23 <div id="scoreOut"> 24 <div class="panel"><div class="panel-body center dim"> 25 Scoring your exposure <span class="cursor"></span> 26 </div></div> 27 </div> 28 29 <hr class="double"> 30 31 <!-- The site's own privacy policy, old-web plain text --> 32 <h2><?php echo section_icon('key', '#FFFF00'); ?> Our Privacy Policy (the short, honest one)</h2> 33 34 <div class="good"> 35 <b>This website stores absolutely nothing about you.</b> 36 </div> 37 38 <table class="data"> 39 <tr><th>Question</th><th>Answer</th></tr> 40 <tr><td>Do you set cookies?</td><td class="green">No. Not one.</td></tr> 41 <tr><td>Do you use analytics?</td><td class="green">No Google Analytics, no trackers, no pixels.</td></tr> 42 <tr><td>Do you log my IP?</td><td class="green">No. It is shown to you, then discarded.</td></tr> 43 <tr><td>Do you have a database?</td><td class="green">No database anywhere in this project.</td></tr> 44 <tr><td>Is my fingerprint uploaded?</td><td class="green">Never. It is computed and hashed entirely in your browser.</td></tr> 45 <tr><td>What about the IP lookup?</td><td class="yellow">Your IP is sent to a public geo-IP API to fetch country/ISP, then thrown away. That third party has its own policy.</td></tr> 46 <tr><td>Do you store the guestbook?</td><td class="yellow">Only what you voluntarily type there (a name + message) in a flat text file. Never your IP.</td></tr> 47 <tr><td>Is there a visitor counter?</td><td class="yellow">Yes — a single integer in a text file. It counts page views, not people. No identities.</td></tr> 48 <tr><td>Can I verify all this?</td><td class="cyan">Yes. Read the <a href="<?php echo eattr(url('source.php')); ?>">source</a>.</td></tr> 49 </table> 50 51 <div class="note"> 52 <b>The point of this site</b> is to show you what <i>other</i> websites quietly 53 collect. So it would be deeply hypocritical of us to collect it. We don't. 54 </div> 55 56 <h3>How to reduce your exposure</h3> 57 <ul class="retro"> 58 <li>Use <b>Firefox</b> with <span class="mono">privacy.resistFingerprinting</span>, or the <b>Tor Browser</b>.</li> 59 <li>Install <b>uBlock Origin</b> to block trackers and third-party junk.</li> 60 <li>Block <b>third-party cookies</b> and clear cookies on exit.</li> 61 <li>Use a trustworthy <b>VPN</b> to replace your IP with a shared one.</li> 62 <li>Disable <b>WebRTC</b> or use an extension that stops the local-IP leak.</li> 63 <li>Keep your browser <b>updated</b> — old versions stand out.</li> 64 </ul> 65 66 <div id="privExport" class="asciibox center" style="display:none"> 67 <b>Export your privacy report (local only):</b><br> 68 <button class="export-btn" data-fmt="json">[ JSON ]</button> 69 <button class="export-btn" data-fmt="html">[ HTML ]</button> 70 <button class="export-btn" data-fmt="md">[ Markdown ]</button> 71 <button class="export-btn" data-fmt="txt">[ TXT ]</button> 72 </div> 73 74 <script> 75 window.EYES = window.EYES || {}; 76 window.EYES.BASE = <?php echo json_encode(BASE_URL); ?>; 77 </script> 78 <script src="<?php echo eattr(url('assets/js/detect.js')); ?>"></script> 79 <script src="<?php echo eattr(url('assets/js/fingerprint.js')); ?>"></script> 80 <script src="<?php echo eattr(url('assets/js/scan.js')); ?>"></script> 81 <script src="<?php echo eattr(url('assets/js/export.js')); ?>"></script> 82 <script> 83 (function () { 84 function esc(s){return String(s==null?'':s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');} 85 function go() { 86 window.EYES.wireExportButtons(); 87 window.EYES.buildReport().then(function (report) { 88 var priv = window.EYES.computePrivacy(report); 89 var el = document.getElementById('scoreOut'); 90 var sClass = priv.score >= 66 ? '' : priv.score >= 33 ? 'warn' : 'bad'; 91 var color = priv.score >= 66 ? 'green' : priv.score >= 33 ? 'yellow' : 'red'; 92 var cats = priv.categories.map(function (c) { 93 var cc = c.score >= 66 ? '' : c.score >= 33 ? 'warn' : 'bad'; 94 return '<tr><td class="k">' + esc(c.name) + '</td><td class="v">' + 95 '<div class="bar ' + cc + '"><div class="bar-fill" style="width:' + c.score + '%"></div>' + 96 '<div class="bar-label">' + c.score + '/100</div></div>' + 97 '<div class="dim" style="font-size:13px">' + esc(c.notes.join('; ')) + '</div></td></tr>'; 98 }).join(''); 99 el.innerHTML = 100 '<div class="panel"><div class="panel-title">Overall</div><div class="panel-body center">' + 101 '<pre class="' + color + '" style="font-size:26px;margin:6px 0">' + priv.score + ' / 100</pre>' + 102 '<div class="bar ' + sClass + '" style="height:28px"><div class="bar-fill" style="width:' + priv.score + '%"></div>' + 103 '<div class="bar-label" style="font-size:16px">' + priv.score + ' / 100</div></div>' + 104 '</div></div>' + 105 '<div class="panel"><div class="panel-title">By Category</div><div class="panel-body">' + 106 '<table class="data kv">' + cats + '</table>' + 107 '<p class="dim">100 = well protected, 0 = fully exposed. A rough heuristic, computed locally.</p>' + 108 '</div></div>'; 109 document.getElementById('privExport').style.display = 'block'; 110 }).catch(function (e) { 111 document.getElementById('scoreOut').innerHTML = '<div class="badbx">Scoring failed: ' + esc(e && e.message ? e.message : e) + '</div>'; 112 }); 113 } 114 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', go); 115 else go(); 116 })(); 117 </script> 118 119 <?php include __DIR__ . '/includes/footer.php'; ?> 120 You are reading the real file being executed on the server. What you see is what runs. |