cloudflare
tcp/443 tcp/80
Open service 104.26.15.101:443 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 200 OK
Date: Sat, 10 Jan 2026 01:13:49 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Speculation-Rules: "/cdn-cgi/speculation"
Cross-Origin-Opener-Policy: same-origin
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Referrer-Policy: same-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=tPgYDQ0j0WIhOlLT2FE6ncdFGbTp49q%2BYo32I1JotQQ%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1768007629"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=tPgYDQ0j0WIhOlLT2FE6ncdFGbTp49q%2BYo32I1JotQQ%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1768007629"
Server: cloudflare
Vary: Cookie, Accept-Encoding, origin
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
cf-cache-status: DYNAMIC
CF-RAY: 9bb85062680d55e4-SIN
alt-svc: h3=":443"; ma=86400
Page title: Buddy - Your Outside Window to the game
<!doctype html><html data-theme=light lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1.0" name=viewport><link rel="shortcut icon" href=/static/favicon/buddy/favicon.5f3b8a3fda2d.ico type=image/png><meta content="ie=edge" http-equiv=X-UA-Compatible><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><meta content="index, follow" name=robots><link href=https://buddy.equihub.dev/ rel=canonical><link href=/static/dist/css/style.min.a5be8aacd704.css rel=stylesheet><title>Buddy - Your Outside Window to the game</title><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><script>document.addEventListener(`DOMContentLoaded`,function(){let searchInput=document.getElementById(`character-search`),searchResults=document.getElementById(`search-results`),resultsContainer=document.getElementById(`results-container`),loadingSpinner=document.getElementById(`loading-spinner`),searchTimeout;function performSearch(query){if(!query||query.length<2){searchResults.classList.add(`hidden`);return}loadingSpinner.classList.remove(`hidden`),searchResults.classList.add(`hidden`),clearTimeout(searchTimeout),searchTimeout=setTimeout(()=>{fetch(`/api/search-characters/?q=${encodeURIComponent(query)}`).then(response=>response.json()).then(data=>{loadingSpinner.classList.add(`hidden`),displayResults(data)}).catch(error=>{console.error(`Search error:`,error),loadingSpinner.classList.add(`hidden`),searchResults.classList.add(`hidden`)})},100)}function displayResults(data){if(!data.results||data.results.length===0){resultsContainer.innerHTML=`<li class="p-3 text-base-content/60 text-center">No characters found</li>`,searchResults.classList.remove(`hidden`);return}resultsContainer.innerHTML=data.results.map(character=>`
<li>
<a href="/c/${character.server}/${character.character_name}/" class="flex items-center justify-between p-3 hover:bg-base-200 rounded-lg">
<div class="font-semibold">${character.character_name}</div>
<div class="badge badge-neutral">${character.server.toUpperCase()}</div>
</a>
</li>
`).join(``),searchResults.classList.remove(`hidden`)}
// Search on input
searchInput.addEventListener(`input`,e=>{performSearch(e.target.value)});
// Search on button click
let searchButton=document.getElementById(`search-button`);
// Close results when clicking outside
searchButton.addEventListener(`click`,()=>{performSearch(searchInput.value)}),searchInput.addEventListener(`keypress`,e=>{e.key===`Enter`&&performSearch(searchInput.value)}),document.addEventListener(`click`,e=>{!searchInput.contains(e.target)&&!searchResults.contains(e.target)&&!searchButton.contains(e.target)&&searchResults.classList.add(`hidden`)})});</script><body class=min-h-screen><nav class="navbar bg-transparent fixed right-0 left-0 z-10" data-theme=dark><div class=flex-1><a class="btn btn-ghost text-xl" href=/> <img alt="Buddy Logo" class="w-10 h-10 rounded-full" src=/static/images/buddy_logo.1746dda0413f.webp> </a><a class="btn btn-ghost" href=/insights/> <svg class="h-5 w-5" viewbox="0 0 24 24" fill=none stroke=currentColor xmlns=http://www.w3.org/2000/svg><path d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" stroke-linecap=round stroke-linejoin=round stroke-width=2 /></svg> Insights </a></div><div class="flex-none gap-2"><label class="swap swap-rotate btn btn-ghost btn-circle"><input class=theme-controller type=checkbox value=dark> <svg class="swap-off h-6 w-6 fill-current" viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d=M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1
Open service 172.67.73.198:443 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 200 OK
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Speculation-Rules: "/cdn-cgi/speculation"
Cross-Origin-Opener-Policy: same-origin
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Referrer-Policy: same-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1768007628"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1768007628"
Server: cloudflare
Vary: Cookie, Accept-Encoding, origin
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
cf-cache-status: DYNAMIC
CF-RAY: 9bb850602cc4f47f-FRA
alt-svc: h3=":443"; ma=86400
Page title: Buddy - Your Outside Window to the game
<!doctype html><html data-theme=light lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1.0" name=viewport><link rel="shortcut icon" href=/static/favicon/buddy/favicon.5f3b8a3fda2d.ico type=image/png><meta content="ie=edge" http-equiv=X-UA-Compatible><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><meta content="index, follow" name=robots><link href=https://buddy.equihub.dev/ rel=canonical><link href=/static/dist/css/style.min.a5be8aacd704.css rel=stylesheet><title>Buddy - Your Outside Window to the game</title><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><script>document.addEventListener(`DOMContentLoaded`,function(){let searchInput=document.getElementById(`character-search`),searchResults=document.getElementById(`search-results`),resultsContainer=document.getElementById(`results-container`),loadingSpinner=document.getElementById(`loading-spinner`),searchTimeout;function performSearch(query){if(!query||query.length<2){searchResults.classList.add(`hidden`);return}loadingSpinner.classList.remove(`hidden`),searchResults.classList.add(`hidden`),clearTimeout(searchTimeout),searchTimeout=setTimeout(()=>{fetch(`/api/search-characters/?q=${encodeURIComponent(query)}`).then(response=>response.json()).then(data=>{loadingSpinner.classList.add(`hidden`),displayResults(data)}).catch(error=>{console.error(`Search error:`,error),loadingSpinner.classList.add(`hidden`),searchResults.classList.add(`hidden`)})},100)}function displayResults(data){if(!data.results||data.results.length===0){resultsContainer.innerHTML=`<li class="p-3 text-base-content/60 text-center">No characters found</li>`,searchResults.classList.remove(`hidden`);return}resultsContainer.innerHTML=data.results.map(character=>`
<li>
<a href="/c/${character.server}/${character.character_name}/" class="flex items-center justify-between p-3 hover:bg-base-200 rounded-lg">
<div class="font-semibold">${character.character_name}</div>
<div class="badge badge-neutral">${character.server.toUpperCase()}</div>
</a>
</li>
`).join(``),searchResults.classList.remove(`hidden`)}
// Search on input
searchInput.addEventListener(`input`,e=>{performSearch(e.target.value)});
// Search on button click
let searchButton=document.getElementById(`search-button`);
// Close results when clicking outside
searchButton.addEventListener(`click`,()=>{performSearch(searchInput.value)}),searchInput.addEventListener(`keypress`,e=>{e.key===`Enter`&&performSearch(searchInput.value)}),document.addEventListener(`click`,e=>{!searchInput.contains(e.target)&&!searchResults.contains(e.target)&&!searchButton.contains(e.target)&&searchResults.classList.add(`hidden`)})});</script><body class=min-h-screen><nav class="navbar bg-transparent fixed right-0 left-0 z-10" data-theme=dark><div class=flex-1><a class="btn btn-ghost text-xl" href=/> <img alt="Buddy Logo" class="w-10 h-10 rounded-full" src=/static/images/buddy_logo.1746dda0413f.webp> </a><a class="btn btn-ghost" href=/insights/> <svg class="h-5 w-5" viewbox="0 0 24 24" fill=none stroke=currentColor xmlns=http://www.w3.org/2000/svg><path d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" stroke-linecap=round stroke-linejoin=round stroke-width=2 /></svg> Insights </a></div><div class="flex-none gap-2"><label class="swap swap-rotate btn btn-ghost btn-circle"><input class=theme-controller type=checkbox value=dark> <svg class="swap-off h-6 w-6 fill-current" viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d=M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1
Open service 172.67.73.198:8443 · buddy.equihub.dev
2026-01-10 01:13
Open service 104.26.14.101:80 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 301 Moved Permanently
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Length: 0
Connection: close
Location: https://buddy.equihub.dev/
Speculation-Rules: "/cdn-cgi/speculation"
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=8cl%2BlUinP%2BkQNLNi1CG2VtRFc%2BGffEkQFZmgxOcrtrpeRbDtG506ADm%2BE5NPGsOh2kcwdNLzwQF6unO4zMjMUgSn5a5rCS9aRuS6aqbWffef"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9bb8505f3ad2fd3f-SIN
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:20::ac43:49c6:80 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 301 Moved Permanently
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Length: 0
Connection: close
Location: https://buddy.equihub.dev/
Speculation-Rules: "/cdn-cgi/speculation"
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=IjOhtvd%2FLYgemhGlDtgxJjnogbkqDrTPIDhgLbT4eOooW4oBLRcuJddpkPVKl1tfBMS4AmWlrL6PJyVA8KIVx6DULHW9iWhLyZ1QV7XNVl9lccq0UiQwM9pOcGYc"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9bb8505fea0b1a47-FRA
alt-svc: h3=":443"; ma=86400
Open service 104.26.14.101:443 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 200 OK
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Speculation-Rules: "/cdn-cgi/speculation"
Cross-Origin-Opener-Policy: same-origin
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Referrer-Policy: same-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1768007628"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1768007628"
Server: cloudflare
Vary: Cookie, Accept-Encoding, origin
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
cf-cache-status: DYNAMIC
CF-RAY: 9bb8505fee29da9a-EWR
alt-svc: h3=":443"; ma=86400
Page title: Buddy - Your Outside Window to the game
<!doctype html><html data-theme=light lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1.0" name=viewport><link rel="shortcut icon" href=/static/favicon/buddy/favicon.5f3b8a3fda2d.ico type=image/png><meta content="ie=edge" http-equiv=X-UA-Compatible><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><meta content="index, follow" name=robots><link href=https://buddy.equihub.dev/ rel=canonical><link href=/static/dist/css/style.min.a5be8aacd704.css rel=stylesheet><title>Buddy - Your Outside Window to the game</title><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><script>document.addEventListener(`DOMContentLoaded`,function(){let searchInput=document.getElementById(`character-search`),searchResults=document.getElementById(`search-results`),resultsContainer=document.getElementById(`results-container`),loadingSpinner=document.getElementById(`loading-spinner`),searchTimeout;function performSearch(query){if(!query||query.length<2){searchResults.classList.add(`hidden`);return}loadingSpinner.classList.remove(`hidden`),searchResults.classList.add(`hidden`),clearTimeout(searchTimeout),searchTimeout=setTimeout(()=>{fetch(`/api/search-characters/?q=${encodeURIComponent(query)}`).then(response=>response.json()).then(data=>{loadingSpinner.classList.add(`hidden`),displayResults(data)}).catch(error=>{console.error(`Search error:`,error),loadingSpinner.classList.add(`hidden`),searchResults.classList.add(`hidden`)})},100)}function displayResults(data){if(!data.results||data.results.length===0){resultsContainer.innerHTML=`<li class="p-3 text-base-content/60 text-center">No characters found</li>`,searchResults.classList.remove(`hidden`);return}resultsContainer.innerHTML=data.results.map(character=>`
<li>
<a href="/c/${character.server}/${character.character_name}/" class="flex items-center justify-between p-3 hover:bg-base-200 rounded-lg">
<div class="font-semibold">${character.character_name}</div>
<div class="badge badge-neutral">${character.server.toUpperCase()}</div>
</a>
</li>
`).join(``),searchResults.classList.remove(`hidden`)}
// Search on input
searchInput.addEventListener(`input`,e=>{performSearch(e.target.value)});
// Search on button click
let searchButton=document.getElementById(`search-button`);
// Close results when clicking outside
searchButton.addEventListener(`click`,()=>{performSearch(searchInput.value)}),searchInput.addEventListener(`keypress`,e=>{e.key===`Enter`&&performSearch(searchInput.value)}),document.addEventListener(`click`,e=>{!searchInput.contains(e.target)&&!searchResults.contains(e.target)&&!searchButton.contains(e.target)&&searchResults.classList.add(`hidden`)})});</script><body class=min-h-screen><nav class="navbar bg-transparent fixed right-0 left-0 z-10" data-theme=dark><div class=flex-1><a class="btn btn-ghost text-xl" href=/> <img alt="Buddy Logo" class="w-10 h-10 rounded-full" src=/static/images/buddy_logo.1746dda0413f.webp> </a><a class="btn btn-ghost" href=/insights/> <svg class="h-5 w-5" viewbox="0 0 24 24" fill=none stroke=currentColor xmlns=http://www.w3.org/2000/svg><path d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" stroke-linecap=round stroke-linejoin=round stroke-width=2 /></svg> Insights </a></div><div class="flex-none gap-2"><label class="swap swap-rotate btn btn-ghost btn-circle"><input class=theme-controller type=checkbox value=dark> <svg class="swap-off h-6 w-6 fill-current" viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d=M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1
Open service 172.67.73.198:80 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 301 Moved Permanently
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Length: 0
Connection: close
Location: https://buddy.equihub.dev/
Speculation-Rules: "/cdn-cgi/speculation"
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=fZXDr%2FPhFEWk0PNmFLMTtbOO3IOTCOggJX7uc7YJFELKw67CJNXkdkxI9pcSDYnGkeqLJgBTYCEYWdbzYU1bkjWbcIs2PHuD5I5HumLId%2F8P"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9bb8505eb80cfa7a-SJC
alt-svc: h3=":443"; ma=86400
Open service 104.26.15.101:80 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 301 Moved Permanently
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Length: 0
Connection: close
Location: https://buddy.equihub.dev/
Speculation-Rules: "/cdn-cgi/speculation"
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=14P1DETZ3bSOtzb35pmRozpK5UiIq2j0b4zKxdeTYNG4KFexliWl5QKiKgimt8GHFUcjHrrqv4PH6QhPAfx0ZwnMggT5hh9ijvYA7ypCmHBm"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9bb8505f5bfc4319-EWR
alt-svc: h3=":443"; ma=86400
Open service 104.26.15.101:8443 · buddy.equihub.dev
2026-01-10 01:13
Open service 104.26.14.101:8443 · buddy.equihub.dev
2026-01-10 01:13
Open service 2606:4700:20::681a:f65:80 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 301 Moved Permanently
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Length: 0
Connection: close
Location: https://buddy.equihub.dev/
Speculation-Rules: "/cdn-cgi/speculation"
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=OPtxcY%2FI5tkWlIJKQwz1jlKTo0R0XVOclBoL57DelNZuwoIQxMC7Wu2Y0h8fG%2BzHUJ7oyYLHJcFZbDxDFurEaToRyagaxiMv8yJbbdVJzRF6%2BNKQGeXpBvZA7A%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9bb8505e6ac25c44-FRA
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:20::681a:e65:8443 · buddy.equihub.dev
2026-01-10 01:13
Open service 2606:4700:20::681a:f65:8443 · buddy.equihub.dev
2026-01-10 01:13
Open service 2606:4700:20::681a:e65:80 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 301 Moved Permanently
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Length: 0
Connection: close
Location: https://buddy.equihub.dev/
Speculation-Rules: "/cdn-cgi/speculation"
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=DdRvj8b7sQuoc7BNuBfQDLGPXWOd7WFcb7X5QxBkysPVtPFqZgZNR2xigkRpWmt2c%2FmxGev9QOp72HwzXFG%2BPvG7ug4CIIDdQ0%2Fu5ItMX13rcsuDlrUWHWRzdJdz"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9bb8505e6c5439d9-FRA
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:20::ac43:49c6:443 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 200 OK
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Speculation-Rules: "/cdn-cgi/speculation"
Cross-Origin-Opener-Policy: same-origin
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Referrer-Policy: same-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1768007628"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1768007628"
Server: cloudflare
Vary: Cookie, Accept-Encoding, origin
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
cf-cache-status: DYNAMIC
CF-RAY: 9bb8505edc1ed27e-FRA
alt-svc: h3=":443"; ma=86400
Page title: Buddy - Your Outside Window to the game
<!doctype html><html data-theme=light lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1.0" name=viewport><link rel="shortcut icon" href=/static/favicon/buddy/favicon.5f3b8a3fda2d.ico type=image/png><meta content="ie=edge" http-equiv=X-UA-Compatible><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><meta content="index, follow" name=robots><link href=https://buddy.equihub.dev/ rel=canonical><link href=/static/dist/css/style.min.a5be8aacd704.css rel=stylesheet><title>Buddy - Your Outside Window to the game</title><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><script>document.addEventListener(`DOMContentLoaded`,function(){let searchInput=document.getElementById(`character-search`),searchResults=document.getElementById(`search-results`),resultsContainer=document.getElementById(`results-container`),loadingSpinner=document.getElementById(`loading-spinner`),searchTimeout;function performSearch(query){if(!query||query.length<2){searchResults.classList.add(`hidden`);return}loadingSpinner.classList.remove(`hidden`),searchResults.classList.add(`hidden`),clearTimeout(searchTimeout),searchTimeout=setTimeout(()=>{fetch(`/api/search-characters/?q=${encodeURIComponent(query)}`).then(response=>response.json()).then(data=>{loadingSpinner.classList.add(`hidden`),displayResults(data)}).catch(error=>{console.error(`Search error:`,error),loadingSpinner.classList.add(`hidden`),searchResults.classList.add(`hidden`)})},100)}function displayResults(data){if(!data.results||data.results.length===0){resultsContainer.innerHTML=`<li class="p-3 text-base-content/60 text-center">No characters found</li>`,searchResults.classList.remove(`hidden`);return}resultsContainer.innerHTML=data.results.map(character=>`
<li>
<a href="/c/${character.server}/${character.character_name}/" class="flex items-center justify-between p-3 hover:bg-base-200 rounded-lg">
<div class="font-semibold">${character.character_name}</div>
<div class="badge badge-neutral">${character.server.toUpperCase()}</div>
</a>
</li>
`).join(``),searchResults.classList.remove(`hidden`)}
// Search on input
searchInput.addEventListener(`input`,e=>{performSearch(e.target.value)});
// Search on button click
let searchButton=document.getElementById(`search-button`);
// Close results when clicking outside
searchButton.addEventListener(`click`,()=>{performSearch(searchInput.value)}),searchInput.addEventListener(`keypress`,e=>{e.key===`Enter`&&performSearch(searchInput.value)}),document.addEventListener(`click`,e=>{!searchInput.contains(e.target)&&!searchResults.contains(e.target)&&!searchButton.contains(e.target)&&searchResults.classList.add(`hidden`)})});</script><body class=min-h-screen><nav class="navbar bg-transparent fixed right-0 left-0 z-10" data-theme=dark><div class=flex-1><a class="btn btn-ghost text-xl" href=/> <img alt="Buddy Logo" class="w-10 h-10 rounded-full" src=/static/images/buddy_logo.1746dda0413f.webp> </a><a class="btn btn-ghost" href=/insights/> <svg class="h-5 w-5" viewbox="0 0 24 24" fill=none stroke=currentColor xmlns=http://www.w3.org/2000/svg><path d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" stroke-linecap=round stroke-linejoin=round stroke-width=2 /></svg> Insights </a></div><div class="flex-none gap-2"><label class="swap swap-rotate btn btn-ghost btn-circle"><input class=theme-controller type=checkbox value=dark> <svg class="swap-off h-6 w-6 fill-current" viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d=M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1
Open service 2606:4700:20::ac43:49c6:8443 · buddy.equihub.dev
2026-01-10 01:13
Open service 2606:4700:20::681a:f65:443 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 200 OK
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Speculation-Rules: "/cdn-cgi/speculation"
Cross-Origin-Opener-Policy: same-origin
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Referrer-Policy: same-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1768007628"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1768007628"
Server: cloudflare
Vary: Cookie, Accept-Encoding, origin
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
cf-cache-status: DYNAMIC
CF-RAY: 9bb8505f180d7b02-FRA
alt-svc: h3=":443"; ma=86400
Page title: Buddy - Your Outside Window to the game
<!doctype html><html data-theme=light lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1.0" name=viewport><link rel="shortcut icon" href=/static/favicon/buddy/favicon.5f3b8a3fda2d.ico type=image/png><meta content="ie=edge" http-equiv=X-UA-Compatible><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><meta content="index, follow" name=robots><link href=https://buddy.equihub.dev/ rel=canonical><link href=/static/dist/css/style.min.a5be8aacd704.css rel=stylesheet><title>Buddy - Your Outside Window to the game</title><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><script>document.addEventListener(`DOMContentLoaded`,function(){let searchInput=document.getElementById(`character-search`),searchResults=document.getElementById(`search-results`),resultsContainer=document.getElementById(`results-container`),loadingSpinner=document.getElementById(`loading-spinner`),searchTimeout;function performSearch(query){if(!query||query.length<2){searchResults.classList.add(`hidden`);return}loadingSpinner.classList.remove(`hidden`),searchResults.classList.add(`hidden`),clearTimeout(searchTimeout),searchTimeout=setTimeout(()=>{fetch(`/api/search-characters/?q=${encodeURIComponent(query)}`).then(response=>response.json()).then(data=>{loadingSpinner.classList.add(`hidden`),displayResults(data)}).catch(error=>{console.error(`Search error:`,error),loadingSpinner.classList.add(`hidden`),searchResults.classList.add(`hidden`)})},100)}function displayResults(data){if(!data.results||data.results.length===0){resultsContainer.innerHTML=`<li class="p-3 text-base-content/60 text-center">No characters found</li>`,searchResults.classList.remove(`hidden`);return}resultsContainer.innerHTML=data.results.map(character=>`
<li>
<a href="/c/${character.server}/${character.character_name}/" class="flex items-center justify-between p-3 hover:bg-base-200 rounded-lg">
<div class="font-semibold">${character.character_name}</div>
<div class="badge badge-neutral">${character.server.toUpperCase()}</div>
</a>
</li>
`).join(``),searchResults.classList.remove(`hidden`)}
// Search on input
searchInput.addEventListener(`input`,e=>{performSearch(e.target.value)});
// Search on button click
let searchButton=document.getElementById(`search-button`);
// Close results when clicking outside
searchButton.addEventListener(`click`,()=>{performSearch(searchInput.value)}),searchInput.addEventListener(`keypress`,e=>{e.key===`Enter`&&performSearch(searchInput.value)}),document.addEventListener(`click`,e=>{!searchInput.contains(e.target)&&!searchResults.contains(e.target)&&!searchButton.contains(e.target)&&searchResults.classList.add(`hidden`)})});</script><body class=min-h-screen><nav class="navbar bg-transparent fixed right-0 left-0 z-10" data-theme=dark><div class=flex-1><a class="btn btn-ghost text-xl" href=/> <img alt="Buddy Logo" class="w-10 h-10 rounded-full" src=/static/images/buddy_logo.1746dda0413f.webp> </a><a class="btn btn-ghost" href=/insights/> <svg class="h-5 w-5" viewbox="0 0 24 24" fill=none stroke=currentColor xmlns=http://www.w3.org/2000/svg><path d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" stroke-linecap=round stroke-linejoin=round stroke-width=2 /></svg> Insights </a></div><div class="flex-none gap-2"><label class="swap swap-rotate btn btn-ghost btn-circle"><input class=theme-controller type=checkbox value=dark> <svg class="swap-off h-6 w-6 fill-current" viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d=M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1
Open service 2606:4700:20::681a:e65:443 · buddy.equihub.dev
2026-01-10 01:13
HTTP/1.1 200 OK
Date: Sat, 10 Jan 2026 01:13:48 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Speculation-Rules: "/cdn-cgi/speculation"
Cross-Origin-Opener-Policy: same-origin
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Referrer-Policy: same-origin
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D\u0026sid=c4c9725f-1ab0-44d8-820f-430df2718e11\u0026ts=1768007628"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=QYSdKNHUBvkmE%2FBzM1jLvQFsMrPQ6jVvVNORycNlNng%3D&sid=c4c9725f-1ab0-44d8-820f-430df2718e11&ts=1768007628"
Server: cloudflare
Vary: Cookie, Accept-Encoding, origin
Via: 1.1 heroku-router
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
cf-cache-status: DYNAMIC
CF-RAY: 9bb8505eca23dbec-FRA
alt-svc: h3=":443"; ma=86400
Page title: Buddy - Your Outside Window to the game
<!doctype html><html data-theme=light lang=en><meta charset=UTF-8><meta content="width=device-width,initial-scale=1.0" name=viewport><link rel="shortcut icon" href=/static/favicon/buddy/favicon.5f3b8a3fda2d.ico type=image/png><meta content="ie=edge" http-equiv=X-UA-Compatible><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><meta content="index, follow" name=robots><link href=https://buddy.equihub.dev/ rel=canonical><link href=/static/dist/css/style.min.a5be8aacd704.css rel=stylesheet><title>Buddy - Your Outside Window to the game</title><meta content="Watch, track, analyze, explore. Do it all without entering the game!" name=description><meta content="Buddy, HZBuddy, EquiHub, Equinox" name=keywords><script>document.addEventListener(`DOMContentLoaded`,function(){let searchInput=document.getElementById(`character-search`),searchResults=document.getElementById(`search-results`),resultsContainer=document.getElementById(`results-container`),loadingSpinner=document.getElementById(`loading-spinner`),searchTimeout;function performSearch(query){if(!query||query.length<2){searchResults.classList.add(`hidden`);return}loadingSpinner.classList.remove(`hidden`),searchResults.classList.add(`hidden`),clearTimeout(searchTimeout),searchTimeout=setTimeout(()=>{fetch(`/api/search-characters/?q=${encodeURIComponent(query)}`).then(response=>response.json()).then(data=>{loadingSpinner.classList.add(`hidden`),displayResults(data)}).catch(error=>{console.error(`Search error:`,error),loadingSpinner.classList.add(`hidden`),searchResults.classList.add(`hidden`)})},100)}function displayResults(data){if(!data.results||data.results.length===0){resultsContainer.innerHTML=`<li class="p-3 text-base-content/60 text-center">No characters found</li>`,searchResults.classList.remove(`hidden`);return}resultsContainer.innerHTML=data.results.map(character=>`
<li>
<a href="/c/${character.server}/${character.character_name}/" class="flex items-center justify-between p-3 hover:bg-base-200 rounded-lg">
<div class="font-semibold">${character.character_name}</div>
<div class="badge badge-neutral">${character.server.toUpperCase()}</div>
</a>
</li>
`).join(``),searchResults.classList.remove(`hidden`)}
// Search on input
searchInput.addEventListener(`input`,e=>{performSearch(e.target.value)});
// Search on button click
let searchButton=document.getElementById(`search-button`);
// Close results when clicking outside
searchButton.addEventListener(`click`,()=>{performSearch(searchInput.value)}),searchInput.addEventListener(`keypress`,e=>{e.key===`Enter`&&performSearch(searchInput.value)}),document.addEventListener(`click`,e=>{!searchInput.contains(e.target)&&!searchResults.contains(e.target)&&!searchButton.contains(e.target)&&searchResults.classList.add(`hidden`)})});</script><body class=min-h-screen><nav class="navbar bg-transparent fixed right-0 left-0 z-10" data-theme=dark><div class=flex-1><a class="btn btn-ghost text-xl" href=/> <img alt="Buddy Logo" class="w-10 h-10 rounded-full" src=/static/images/buddy_logo.1746dda0413f.webp> </a><a class="btn btn-ghost" href=/insights/> <svg class="h-5 w-5" viewbox="0 0 24 24" fill=none stroke=currentColor xmlns=http://www.w3.org/2000/svg><path d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" stroke-linecap=round stroke-linejoin=round stroke-width=2 /></svg> Insights </a></div><div class="flex-none gap-2"><label class="swap swap-rotate btn btn-ghost btn-circle"><input class=theme-controller type=checkbox value=dark> <svg class="swap-off h-6 w-6 fill-current" viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d=M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1