This commit is contained in:
TheEmeraldStarr 2020-09-18 14:37:56 -07:00
commit 5d7143c172
7 changed files with 522 additions and 35 deletions

View file

@ -1,7 +1,15 @@
# Holy Unblocker
A website that can be used to bypass web filters; both extension and firewall. This is the public source code for Holy Unblocker.
A website that can be used to bypass web filters; both extension and firewall. This is the public source code for Holy Unblocker. Works on a large number of sites including YouTube (Full Quality Support), Discord, CoolMathGames and more!
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/QuiteAFancyEmerald/HolyUnblockerPublic/)
Official Site: https://www.holyubofficial.ml/
<a href="https://heroku.com/deploy?template=https://github.com/QuiteAFancyEmerald/HolyUnblockerPublic" title="Deploy to Heroku"><img alt="Deploy to Heroku" src="https://sys32.dev/assets/src/media/heroku.svg" width="140" height="30"><img></a>
&nbsp;
<a href="https://azuredeploy.net/" title="Deploy to Azure"><img alt="Deploy to Azure" src="https://sys32.dev/assets/src/media/azure.svg" width="140" height="30"><img></a>
&nbsp;
<a href="https://repl.it/github/QuiteAFancyEmerald/HolyUnblockerPublic/" title="Run on Repl.it"><img alt="Run on Repl.it" src="https://sys32.dev/assets/src/media/replit.svg" width="140" height="30"><img></a>
&nbsp;
<a href="https://glitch.com/edit/#!/import/github/QuiteAFancyEmerald/HolyUnblockerPublic/" title="Remix on glitch"><img alt="Remix on glitch" src="https://sys32.dev/assets/src/media/glitch.svg" width="140" height="30"><img></a>
## How to Install

17
app.js
View file

@ -105,7 +105,7 @@ function error(statusCode, info) {
}
return (fs.readFileSync('public/assets/error.html', 'utf8').toString().replace('%ERROR%', `An error has occurred!`))
}
// Post data to set URl's for reverse proxy URL's, or safer redirecting to proxied websites.
app.post('/createSession', async (req, res) => {
if (req.body.url.startsWith('//')) {
req.body.url = 'http:' + req.body.url;
@ -122,6 +122,7 @@ app.post('/createSession', async (req, res) => {
}
})
// Custom prefix support will be in full effect soon!
var prefix = '/fetch';
app.use(prefix, async (req, res, next) => {
@ -147,10 +148,13 @@ app.use(prefix, async (req, res, next) => {
keepAlive: true
});
// We are using the clients request headers as the headers to send the request so that headers such as Authorization will be passed through in a XML or fetch() request.
// The host header has to be set to the websites host and not the apps hostname so that there won't be issues.
var fetchHeaders = req.headers
fetchHeaders['referer'] = location.href
fetchHeaders['origin'] = location.origin
fetchHeaders['host'] = location.hostname
// Cookie header causing issues sometimes :cursed:
if (fetchHeaders['cookie']) {
delete fetchHeaders['cookie']
}
@ -168,7 +172,6 @@ app.use(prefix, async (req, res, next) => {
};
if (req.method == 'POST') {
// Have to do try catch for this POST data parser until we create our own one that won't have a syntax error sometimes.
try {
// str_body is a string containing the requests body
options['body'] = req.str_body;
@ -176,6 +179,7 @@ app.use(prefix, async (req, res, next) => {
return;
}
}
// Makes sure to use the session URL that is contained so RV mode works.
if (req.url.startsWith('/rv')) {
location.origin_encoded = 'rv'
}
@ -186,6 +190,7 @@ app.use(prefix, async (req, res, next) => {
return;
}
}
// Custom fixes for websites such as Discord and Reddit.
if (location.href == 'https://discord.com' || location.href == 'https://discord.com/new') {
return res.redirect(307, `/fetch/${location.origin_encoded}/login`)
}
@ -196,6 +201,7 @@ app.use(prefix, async (req, res, next) => {
}
return res.redirect(307, '/fetch/' + base64Encode('https://old.reddit.com') + location.path)
}
// This is where I am making the request, and getting the buffer and headers.
const response = await fetch(location.href, options).catch(err => res.send(error('404', `"${xss(location.href)}" was not found!`)));
if(typeof response.buffer != 'function')return;
var resbody = await response.buffer();
@ -209,17 +215,21 @@ app.use(prefix, async (req, res, next) => {
Object.entries(JSON.parse(JSON.stringify(response.headers.raw())))
.map(([key, val]) => [key, val[0]])
);
// Making sure redirects are proxied.
if (serverHeaders['location']) {
if (req.url.startsWith('/rv') && req.session.rvURL) {
req.session.rvURL = String(serverHeaders['location']).split('/').splice(0, 3).join('/')
return res.redirect(307, '/fetch/rv/' + String(serverHeaders['location']).split('/').splice(3).join('/'))
} else return res.redirect(307, '/fetch/' + rewriteURL(String(serverHeaders['location'])))
}
// These headers can be conflicting.
delete serverHeaders['content-encoding']
delete serverHeaders['x-frame-options']
delete serverHeaders['strict-transport-security']
delete serverHeaders['content-security-policy']
delete serverHeaders['location']
// Setting status, headers, and content-type.
res.status(response.status)
res.set(serverHeaders)
res.contentType(contentType)
@ -300,7 +310,7 @@ app.use('/alloy/url/',function (req, res, next) {
res.redirect(307, '/fetch/' + fullURL)
})
// Utils section. Where stuff such as inject scripts are found!
app.use('/alloy/',function (req, res, next) {
if (req.query.url) {
@ -325,7 +335,6 @@ res.sendFile(__dirname + '/alloy' + req.url, function (err) {
})
app.use(function (req, res, next) {
res.sendFile(__dirname + '/public' + req.url, function (err) {
if (err) {

View file

@ -1,7 +1,7 @@
{
"name": "Alloy Proxy",
"description": "A node.js web proxy featuring URL encoding, and amazing compatablity!",
"repository": "https://github.com/titaniumnetwork-dev/alloyproxy/",
"logo": "https://avatars1.githubusercontent.com/u/47227492?s=200&v=4",
"keywords": ["node", "proxy", "unblocker"]
"name": "Holy Unblocker",
"description": "A website that can be used to bypass web filters; both extension and firewall. Alloy Proxy hosted locally. (Can be used as a template.)",
"repository": "https://github.com/QuiteAFancyEmerald/HolyUnblockerPublic/",
"logo": "https://www.holyubofficial.ml/assets/img/i.png",
"keywords": ["node", "proxy", "unblocker" , "webproxy" , "games" , "holyunblocker" , "alloy"]
}

BIN
public/assets/img/2048.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View file

@ -1,24 +1,4 @@
body{
margin: 0;
padding: 0;
font-family: sans-serif;
}
header{
overflow: hidden;
background: #e74c3c;
padding: 60px 0;
text-align: center;
color: white;
text-transform: uppercase;
}
footer{
overflow: hidden;
background: #e74c3c;
padding: 20px 0;
text-align: center;
color: white;
text-transform: uppercase;
}
.gallerys{
padding: 10px;
overflow: hidden;

164
public/gametest.html Normal file
View file

@ -0,0 +1,164 @@
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<!-- Important: Use &#8203; to mess with keywords. -->
<title>H&#8203;oly Unb&#8203;loc&#8203;ke&#8203;r</title>
<meta name="description" content="G&#8203;et p&#8203;ast in&#8203;te&#8203;r&#8203;net ce&#8203;n&#8203;s&#8203;or&#8203;sh&#8203;ip tod&#8203;a&#8203;y!
:D">
<link rel="icon" type="image/png" sizes="32x32" href="assets/img/i.png">
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat+Alternates">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Titillium+Web:400,600,700">
<link rel="stylesheet" href="/assets/fonts/ionicons.min.css">
<link rel="stylesheet" href="/assets/css/Button-Change-Text-on-Hover.css">
<link rel="stylesheet" href="/assets/css/Customizable-Background--Overlay.css">
<link rel="stylesheet" href="/assets/css/Footer-Dark.css">
<link rel="stylesheet" href="/assets/css/Header-Dark.css">
<link rel="stylesheet" href="/assets/css/iframe.css">
<link rel="stylesheet" href="/assets/css/styles.css">
<link rel="stylesheet" href="/assets/js/games.js">
<link rel="stylesheet" href="/public/css/games.css">
</head>
<body>
</head>
<body>
<header>
</ul>
<center></h1>Play some fun games here</h1><center>
<div class="gallerys">
<div class="img">
<a href="https://putlockers.bz/"><img src="/public/assets/img/2048.PNG" alt="">
</div>
<div class="img">
<a href="https://gomoviesfree.sc/"><img src="images/movie2.png" alt="">
</div>
<div class="img">
<a href="https://xmovies08.org/"><img src="images/movie3.png" alt="">
</div>
<div class="img">
<a href="https://solarmovie.network/"><img src="images/movie4.png" alt="">
</div>
<div class="img">
<a href="https://www1.yesmovies.movie/"><img src="images/movie5.png" alt="">
</div>
<div class="img">
<a href="https://putlockers.bz/"><img src="images/movie6.png" alt="">
</div>
<div class="img">
<a href="https://putlockers.bz/"><img src="images/movie7.png" alt="">
</div>
<div class="img">
<a href="https://putlockers.bz/"><img src="images/movie8.png" alt="">
</div>
<div class="img">
<a href="https://putlockers.bz/"><img src="images/movie9.png" alt="">
</div>
<div class="img">
<a href="https://putlockers.bz/"><img src="images/movie10.png" alt="">
</div>
<div class="img">
<a href="https://putlockers.bz/"><img src="images/movie11.png" alt="">
</div>
<div class="img">
<a href="https://putlockers.bz/"><img src="images/movie12.png" alt="">
</div>
</div>
<footer>
<span>More games coming soon!</span>
<div>
<div class="header-dark" style="background-color: rgb(0,0,0);background-image: url(&quot;assets/img/black.jpg&quot;);">
<nav class="navbar navbar-dark navbar-expand-lg navigation-clean-search">
<div class="container"><a class="navbar-brand" style="font-family: 'Montserrat Alternates', sans-serif;font-size: 21px;margin: 10px;font-style: normal;font-weight: bold;" href="/index.html">Ho<wbr>ly Unbl<wbr>oc<wbr>ker</a>
<div class="collapse navbar-collapse" id="navcol-1">
<ul class="nav navbar-nav ml-auto">
<li class="nav-item" role="presentation"><a class="nav-link active" href="/z.html">Surf Fre<wbr>ely</a></li>
<li class="nav-item" role="presentation"><a class="nav-link" href="/g.html">Ga<wbr>mes</a></li>
<li class="nav-item" role="presentation"><a class="nav-link" href="/yt.html">YouT<wbr>ube</a></li>
<!-- More Menu -->
<li class="nav-item dropdown"><a class="dropdown-toggle nav-link" data-toggle="dropdown" aria-expanded="false" href="#">More</a>
<div class="dropdown-menu" role="menu" style="background-color: rgb(33,30,30);font-family: 'Titillium Web', sans-serif;"><a class="dropdown-item" role="presentation" href="/k.html" style="color: rgb(255,255,255);">Krunker</a><a class="dropdown-item" role="presentation" href="/c.html" style="color: rgb(255,255,255);">Cre<wbr>dits</a></div>
</li>
<!-- Settings Menu -->
<li id="csel" class="nav-item dropdown"><a class="dropdown-toggle nav-link" data-toggle="dropdown" aria-expanded="false" href="#">Settings</a>
<div class="dropdown-menu" role="menu" style="background-color: rgb(33,30,30);font-family: 'Titillium Web', sans-serif;">
<style>
.csel input[type="submit"] {
cursor: pointer;
}
</style>
<p style="font-size: 20px; font-family: 'Montserrat Alternates', sans-serif;">Tab Cloak</p>
<p style="font-size: 14px; font-family: 'Montserrat Alternates', sans-serif;">Change the Tab Title.</p>
<form id="titleform"><input class="bg-dark border rounded-0 border shadow-lg" type="text" placeholder="Tab Title" style="width: 100%; height: 40px; font-family: 'Montserrat Alternates', sans-serif;" />
<input class="btn btn-dark btn-lg bg-dark border-dark rounded-0 border shadow-lg" type="submit" value="Apply" style="width: 100%;padding: 8px;margin: 0px;height: 90%;font-family: 'Montserrat Alternates', sans-serif;font-size: 16px;">
</form>
<p style="font-size: 14px; font-family: 'Montserrat Alternates', sans-serif;">Change the Tab Icon.</p>
<form id="iconform"><input class="bg-dark border rounded-0 border shadow-lg" type="url" placeholder="Icon URL" style="width: 100%; height: 40px; font-family: 'Montserrat Alternates', sans-serif;" />
<input class="btn btn-dark btn-lg bg-dark border-dark rounded-0 border shadow-lg" type="submit" value="Apply" style="width: 100%;padding: 8px;margin: 0px;height: 90%;font-family: 'Montserrat Alternates', sans-serif;font-size: 16px;">
<a href="/i.html">How To Find Icon URL</a>
</form>
<script src="assets/js/header.js"></script>
</div>
</li>
</ul>
</div>
</div>
</nav>
<!-- Particles.js background -->
<div id="particles-js" style="height: 500px;">
<div class="d-flex justify-content-center align-items-center" style="height: inherit;min-height: initial;width: 100%;position: absolute;left: 0;">
<script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js "></script>
<script>
/* particlesJS.load(@dom-id, @path-json, @callback (optional)); */
particlesJS.load('particles-js', 'particles.json', function() {
console.log('particlesjs loaded.......');
});
</script>
</footer>
<div class="footer-dark" style="background-color: rgb(0,0,0);">
<footer>
<div class="container">
<div class="row">
<div class="col-md-6 item text">
<h3><a href="/">Ho<wbr>ly Unb<wbr>loc<wbr>ker</a></h3>
<p>Made by Stu<wbr>dents, For Stud<wbr>ents.&nbsp;</p>
</div>
<div class="col-sm-6 col-md-3 item">
<h3>Services</h3>
<ul>
<li><a href="//github.com/titaniumnetwork-dev/alloyproxy">Al<wbr>loy</a></li>
<li><a href="//github.com/vibedivide/powermouse">PM P<wbr>ro<wbr>xy</a></li>
<li><a href="https://nodeclusters.com/">No<wbr>deClu<wbr>sters</a></li>
</ul>
</div>
<div class="col-sm-6 col-md-3 item">
<h3>About</h3>
<ul>
<li><a href="https://github.com/QuiteAFancyEmerald/HolyUnblockerPublic">G<wbr>itHub</a></li>
<li><a href="t.html">Privacy and Terms of Service</a></li>
<li><a href="c.html">Credits</a></li>
</ul>
</div>
<!-- GitHub -->
<div class="col item social">
<a href="https://github.com/QuiteAFancyEmerald/HolyUnblockerPublic">
<ion-icon name="logo-github"></ion-icon>
</a>
</div>
</div>
<p class="copyright">Holy U<wbr>nblo<wbr>cke<wbr>r © 2020</p>
</div>
</footer>
</div>
<script src="assets/js/jquery.min.js"></script>
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
<script src="https://unpkg.com/ionicons@5.1.2/dist/ionicons.js"></script>
</body>
</html>

326
public/gametest2.html Normal file
View file

@ -0,0 +1,326 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<!-- Important: Use &#8203; to mess with keywords. -->
<title>H&#8203;oly Unb&#8203;loc&#8203;ke&#8203;r</title>
<meta name="description" content="G&#8203;et p&#8203;ast in&#8203;te&#8203;r&#8203;net ce&#8203;n&#8203;s&#8203;or&#8203;sh&#8203;ip tod&#8203;a&#8203;y!
:D">
<link rel="icon" type="image/png" sizes="32x32" href="assets/img/i.png">
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat+Alternates">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Titillium+Web:400,600,700">
<link rel="stylesheet" href="/assets/fonts/ionicons.min.css">
<link rel="stylesheet" href="/assets/css/Button-Change-Text-on-Hover.css">
<link rel="stylesheet" href="/assets/css/Customizable-Background--Overlay.css">
<link rel="stylesheet" href="/assets/css/Footer-Dark.css">
<link rel="stylesheet" href="/assets/css/Header-Dark.css">
<link rel="stylesheet" href="/assets/css/iframe.css">
<link rel="stylesheet" href="/assets/css/styles.css">
<link rel="stylesheet" href="/assets/js/games.js">
</head>
<body>
<!-- Games CSS -->
<style>
.gembed {
width: 80%;
height: 800%;
top: 0;
bottom: 0;
left: 0;
right: 0;
position: fixed;
}
.fbody {
background-color: black;
color: rgb(0, 0, 0);
font-family: sans-serif;
}
.glink {
display: block;
text-decoration: none;
color: white;
font: 18px;
border: 1px solid #007053;
margin-top: -1px;
background-color: #000000;
padding: 12px;
transition: 0.2s ease;
}
.glink:hover {
background-color: rgb(0, 0, 0);
text-shadow: 0 0 5px rgba(255, 255, 255, 0.4);
}
#gsearchbar {
outline: none;
width: 98%;
top: 12px;
font-size: 16px;
border: 1px solid #007053;
padding: 12px;
margin-bottom: 12px;
transition: 0.2s ease;
background: #1c2228;
}
#gsearchbar:focus {
background-color: rgb(29, 27, 27);
box-shadow: inset 0 0 5px 1px rgba(0, 0, 0, 0.4);
}
.container {
padding: 20px;
}
.box {
margin: auto;
background-color: wblack;
padding: 10px 10px 15px 10px;
width: 100%;
height: 540px;
}
#glist {
overflow-x: hidden;
overflow-y: scroll;
width: 100%;
height: 100%;
padding: 0;
text-align: center;
}
#glist h2 {
display: block;
text-decoration: none;
color: white;
font: 18px;
border: 1px solid #060606;
margin: -1px 0 0 0;
background-color: #060606;
padding: 12px;
font-weight: bold;
user-select: none;
}
</style>
<!-- Important: Use <wbr> to mess with keywords. -->
<div>
<div class="header-dark" style="background-color: rgb(0,0,0);background-image: url(&quot;assets/img/black.jpg&quot;);">
<nav class="navbar navbar-dark navbar-expand-lg navigation-clean-search">
<div class="container"><a class="navbar-brand" style="font-family: 'Montserrat Alternates', sans-serif;font-size: 21px;margin: 10px;font-style: normal;font-weight: bold;" href="/index.html">Ho<wbr>ly Unbl<wbr>oc<wbr>ker</a>
<div class="collapse navbar-collapse" id="navcol-1">
<ul class="nav navbar-nav ml-auto">
<li class="nav-item" role="presentation"><a class="nav-link active" href="/z.html">Surf Fre<wbr>ely</a></li>
<li class="nav-item" role="presentation"><a class="nav-link" href="/g.html">Ga<wbr>mes</a></li>
<li class="nav-item" role="presentation"><a class="nav-link" href="/yt.html">YouT<wbr>ube</a></li>
<!-- More Menu -->
<li class="nav-item dropdown"><a class="dropdown-toggle nav-link" data-toggle="dropdown" aria-expanded="false" href="#">More</a>
<div class="dropdown-menu" role="menu" style="background-color: rgb(33,30,30);font-family: 'Titillium Web', sans-serif;"><a class="dropdown-item" role="presentation" href="/k.html" style="color: rgb(255,255,255);">Krunker</a><a class="dropdown-item" role="presentation" href="/c.html" style="color: rgb(255,255,255);">Cre<wbr>dits</a></div>
</li>
<!-- Settings Menu -->
<li id="csel" class="nav-item dropdown"><a class="dropdown-toggle nav-link" data-toggle="dropdown" aria-expanded="false" href="#">Settings</a>
<div class="dropdown-menu" role="menu" style="background-color: rgb(33,30,30);font-family: 'Titillium Web', sans-serif;">
<style>
.csel input[type="submit"] {
cursor: pointer;
}
</style>
<p style="font-size: 20px; font-family: 'Montserrat Alternates', sans-serif;">Tab Cloak</p>
<p style="font-size: 14px; font-family: 'Montserrat Alternates', sans-serif;">Change the Tab Title.</p>
<form id="titleform"><input class="bg-dark border rounded-0 border shadow-lg" type="text" placeholder="Tab Title" style="width: 100%; height: 40px; font-family: 'Montserrat Alternates', sans-serif;" />
<input class="btn btn-dark btn-lg bg-dark border-dark rounded-0 border shadow-lg" type="submit" value="Apply" style="width: 100%;padding: 8px;margin: 0px;height: 90%;font-family: 'Montserrat Alternates', sans-serif;font-size: 16px;">
</form>
<p style="font-size: 14px; font-family: 'Montserrat Alternates', sans-serif;">Change the Tab Icon.</p>
<form id="iconform"><input class="bg-dark border rounded-0 border shadow-lg" type="url" placeholder="Icon URL" style="width: 100%; height: 40px; font-family: 'Montserrat Alternates', sans-serif;" />
<input class="btn btn-dark btn-lg bg-dark border-dark rounded-0 border shadow-lg" type="submit" value="Apply" style="width: 100%;padding: 8px;margin: 0px;height: 90%;font-family: 'Montserrat Alternates', sans-serif;font-size: 16px;">
<a href="/i.html">How To Find Icon URL</a>
</form>
<script src="assets/js/header.js"></script>
</div>
</li>
</ul>
</div>
</div>
</nav>
<!-- Particles.js background -->
<div id="particles-js" style="height: 500px;">
<div class="d-flex justify-content-center align-items-center" style="height: inherit;min-height: initial;width: 100%;position: absolute;left: 0;">
<script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js "></script>
<script>
/* particlesJS.load(@dom-id, @path-json, @callback (optional)); */
particlesJS.load('particles-js', 'particles.json', function() {
console.log('particlesjs loaded.......');
});
</script>
<!-- Games Embed -->
<div class="container">
<div class="box">
<div id="glist">
<script>
function gsearch() {
var e, t, n, a;
for (e = document.getElementById("gsearchbar").value.toUpperCase(), t = document.getElementById("glist"), a = 0; a < t.querySelectorAll("a[href]").length; a++)(n = t.getElementsByTagName("a")[a]).innerHTML.toUpperCase().indexOf(e) > -1 ? n.style.display = "block" : n.style.display = "none"
}
</script>
<!-- Important: Use <wbr> to mess with keywords. -->
<input type="text" id="gsearchbar" onkeyup="gsearch()" autocomplete="off" placeholder="Search" />
<h2>HTML5 Ga<wbr>mes</h2>
<head>
<style>
<!-- GAME CSS -->
div.gallery {
border: 1px solid #ccc;
}
div.gallery:hover {
border: 1px solid #777;
}
div.gallery img {
width: 100%;
height: auto;
}
div.desc {
padding: 15px;
text-align: center;
}
* {
box-sizing: border-box;
}
.responsive {
padding: 0 6px;
float: left;
width: 24.99999%;
}
@media only screen and (max-width: 700px) {
.responsive {
width: 49.99999%;
margin: 6px 0;
}
}
@media only screen and (max-width: 500px) {
.responsive {
width: 100%;
}
}
.clearfix:after {
content: "";
display: table;
clear: both;
}
</style>
</head>
<body>
<h2>Holy Unblocker Games</h2>
<h4>The list of games you can play on here!</h4>
<div class="responsive">
<div class="gallery">
<a target="_blank" href="index.html">
<img src="/public/assets/img/2048.PNG" alt="Cinque Terre" width="600" height="400">
</a>
<div class="desc">Add a description of the image here</div>
</div>
</div>
<div class="responsive">
<div class="gallery">
<a target="_blank" href="img_forest.jpg">
<img src="img_forest.jpg" alt="Forest" width="600" height="400">
</a>
<div class="desc">Add a description of the image here</div>
</div>
</div>
<div class="responsive">
<div class="gallery">
<a target="_blank" href="img_lights.jpg">
<img src="img_lights.jpg" alt="Northern Lights" width="600" height="400">
</a>
<div class="desc">Add a description of the image here</div>
</div>
</div>
<div class="responsive">
<div class="gallery">
<a target="_blank" href="img_mountains.jpg">
<img src="img_mountains.jpg" alt="Mountains" width="600" height="400">
</a>
<div class="desc">Add a description of the image here</div>
</div>
</div>
<div class="clearfix"></div>
<div style="padding:6px;">
<p>More games coming soon!</p>
</div>
</body>
</html>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="footer-dark" style="background-color: rgb(0,0,0);">
<footer>
<div class="container">
<div class="row">
<div class="col-md-6 item text">
<h3><a href="/">Ho<wbr>ly Unb<wbr>loc<wbr>ker</a></h3>
<p>Made by Stu<wbr>dents, For Stud<wbr>ents.&nbsp;</p>
</div>
<div class="col-sm-6 col-md-3 item">
<h3>Services</h3>
<ul>
<li><a href="//github.com/titaniumnetwork-dev/alloyproxy">Al<wbr>loy</a></li>
<li><a href="//github.com/vibedivide/powermouse">PM P<wbr>ro<wbr>xy</a></li>
<li><a href="https://nodeclusters.com/">No<wbr>deClu<wbr>sters</a></li>
</ul>
</div>
<div class="col-sm-6 col-md-3 item">
<h3>About</h3>
<ul>
<li><a href="https://github.com/QuiteAFancyEmerald/HolyUnblockerPublic">G<wbr>itHub</a></li>
<li><a href="t.html">Privacy and Terms of Service</a></li>
<li><a href="c.html">Credits</a></li>
</ul>
</div>
<!-- GitHub -->
<div class="col item social">
<a href="https://github.com/QuiteAFancyEmerald/HolyUnblockerPublic">
<ion-icon name="logo-github"></ion-icon>
</a>
</div>
</div>
<p class="copyright">Holy U<wbr>nblo<wbr>cke<wbr>r © 2020</p>
</div>
</footer>
</div>
<script src="assets/js/jquery.min.js"></script>
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
<script src="https://unpkg.com/ionicons@5.1.2/dist/ionicons.js"></script>
</body>
</html>