File: //opt/bitninja-waf3/www/403.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>403 Forbidden</title>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-1975075-16"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-1975075-16');
gtag('event', 'screen_view', {
'screen_name': 'Blocked Page'
});
</script>
<style>
/* Inline layout/styles (Tailwind-compatible look, no CDN / no runtime Tailwind JS) */
.bn403-page {
margin: 0;
box-sizing: border-box;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 2rem 0.75rem;
font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial,
sans-serif;
background: #e8ecf4;
color: #111827;
}
html.dark .bn403-page {
background: #181f2c;
color: #e5e7eb;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
.bn403-theme-toggle {
position: fixed;
top: 1rem;
right: 1rem;
z-index: 50;
padding: 0.75rem;
border-radius: 9999px;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.15),
0 4px 6px -4px rgba(0, 0, 0, 0.1);
background: #e5e7eb;
color: #1f2937;
border: 1px solid #d1d5db;
cursor: pointer;
transition: transform 0.15s ease;
}
html.dark .bn403-theme-toggle {
background: #232b3e;
color: #e5e7eb;
border-color: #2e3a54;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
}
.bn403-theme-toggle:hover {
transform: scale(1.1);
}
.bn403-theme-toggle:focus {
outline: none;
box-shadow: 0 0 0 2px #fff, 0 0 0 4px #3b82f6;
}
html.dark .bn403-theme-toggle:focus {
box-shadow: 0 0 0 2px #181f2c, 0 0 0 4px #3b82f6;
}
.bn403-main {
width: 100%;
max-width: min(100rem, calc(100vw - 1.5rem));
margin-left: auto;
margin-right: auto;
padding: 1.25rem;
display: flex;
flex-direction: column;
align-items: stretch;
gap: 0;
}
@media (min-width: 768px) {
.bn403-main {
padding: 2rem 2.25rem;
flex-direction: row;
align-items: stretch;
min-height: min(88vh, 920px);
}
}
@media (min-width: 1200px) {
.bn403-main {
padding: 2.5rem 3rem;
max-width: min(112rem, calc(100vw - 3rem));
}
}
.bn403-panel-left {
flex: 1 1 0%;
background: #fdfefe;
border-radius: 1rem 1rem 0 0;
border: 1px solid #dbe0ea;
border-right: none;
box-shadow: 0 12px 28px rgba(22, 32, 58, 0.08),
0 4px 10px rgba(22, 32, 58, 0.04);
padding: 1.75rem 1.375rem;
display: flex;
flex-direction: column;
align-items: stretch;
justify-content: flex-start;
min-width: 0;
position: relative;
overflow: hidden;
isolation: isolate;
animation: fadeInUp 0.7s cubic-bezier(0.4, 0, 0.2, 1) both;
}
.bn403-panel-left::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
border-radius: inherit;
opacity: 0.85;
background:
radial-gradient(
ellipse 120% 80% at 50% -15%,
rgba(232, 69, 69, 0.11),
transparent 52%
),
radial-gradient(
circle at 100% 100%,
rgba(59, 130, 246, 0.07),
transparent 45%
);
}
html.dark .bn403-panel-left::before {
opacity: 0.55;
background:
radial-gradient(
ellipse 120% 85% at 50% -20%,
rgba(232, 69, 69, 0.18),
transparent 50%
),
radial-gradient(
circle at 100% 100%,
rgba(96, 165, 250, 0.1),
transparent 42%
);
}
.bn403-panel-left > * {
position: relative;
z-index: 1;
}
html.dark .bn403-panel-left {
background: #232b3e;
border: none;
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.35);
}
@media (min-width: 768px) {
.bn403-panel-left {
border-radius: 1rem 0 0 1rem;
flex: 1.12 1 0;
min-width: 0;
padding: 2.5rem 2.75rem;
}
.bn403-panel-right {
flex: 1 1 0;
min-width: 0;
}
}
.bn403-panel-brand {
display: flex;
align-items: center;
justify-content: flex-end;
flex-wrap: wrap;
gap: 1rem 1.25rem;
width: 100%;
margin: 0 0 1.75rem;
}
[dir="rtl"] .bn403-panel-brand {
justify-content: flex-start;
}
.bn403-panel-brand-slot {
display: flex;
align-items: center;
justify-content: flex-end;
flex-shrink: 0;
}
.bn403-logo-wrap {
flex: 0 1 auto;
min-width: 0;
display: flex;
justify-content: flex-end;
}
.bn403-logo {
height: 3rem;
width: auto;
animation: popIn 0.7s cubic-bezier(0.4, 0, 0.2, 1) both;
}
/* Logo SVG is authored for dark UI: white letterforms + plate. Retheme for light. */
.bn403-logo > path[fill="white"] {
fill: #141b2d;
}
html.dark .bn403-logo > path[fill="white"] {
fill: #ffffff;
}
.bn403-logo-mascot-bg {
fill: #d9dee8;
}
html.dark .bn403-logo-mascot-bg {
fill: #ffffff;
}
@media (min-width: 768px) {
.bn403-logo {
height: 4rem;
}
}
.bn403-copy {
max-width: min(48rem, 100%);
width: 100%;
margin-inline: auto;
}
.bn403-title {
font-size: 1.875rem;
line-height: 2.25rem;
font-weight: 700;
text-align: start;
color: #e84545;
margin: 0 0 1rem;
}
@media (min-width: 768px) {
.bn403-title {
font-size: 1.5rem;
line-height: 2rem;
}
}
.bn403-lead {
font-size: 0.875rem;
line-height: 1.55;
text-align: start;
color: #1f2937;
margin: 0 0 1.75rem;
}
html.dark .bn403-lead {
color: #e5e7eb;
}
@media (min-width: 768px) {
.bn403-lead {
font-size: 1rem;
}
}
.bn403-ip-card {
width: 100%;
max-width: min(48rem, 100%);
margin-inline: auto;
border-radius: 0.75rem;
border: 1px dashed #22c55e;
padding: 1rem;
margin-bottom: clamp(3rem, 10vw, 6rem);
display: grid;
grid-template-columns: 1fr;
gap: 1rem;
justify-items: center;
min-width: 0;
animation: fadeInUp 0.7s cubic-bezier(0.4, 0, 0.2, 1) both;
animation-delay: 0.2s;
background: rgba(34, 197, 94, 0.04);
transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.bn403-ip-card:hover {
transform: translateY(-3px);
box-shadow: 0 14px 32px rgba(34, 197, 94, 0.12),
0 4px 12px rgba(22, 32, 58, 0.06);
}
html.dark .bn403-ip-card {
background: #27324a;
border-color: #22c55e;
}
.bn403-ip-stack {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
max-width: 100%;
min-width: 0;
}
.bn403-ip-label {
font-size: 1rem;
line-height: 1.5;
font-weight: 900;
color: #4b5563;
white-space: nowrap;
flex-shrink: 0;
}
html.dark .bn403-ip-label {
color: #d1d5db;
}
.bn403-ip-value {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
"Liberation Mono", "Courier New", monospace;
font-size: clamp(0.75rem, 0.35vw + 0.68rem, 1.125rem);
line-height: 1.45;
color: #1f2937;
max-width: 100%;
width: 100%;
text-align: center;
overflow-wrap: anywhere;
word-break: break-word;
padding: 0 0.25rem;
}
html.dark .bn403-ip-value {
color: #f3f4f6;
}
@media (min-width: 640px) {
.bn403-ip-stack {
flex-direction: row;
align-items: center;
justify-content: space-between;
gap: 1rem 1.5rem;
}
.bn403-ip-value {
text-align: end;
flex: 1 1 auto;
min-width: 0;
}
}
.bn403-steps-sheet {
width: 100%;
max-width: min(48rem, 100%);
margin-inline: auto;
margin-top: clamp(0.5rem, 2vw, 1.25rem);
margin-bottom: 1.25rem;
border-radius: 0.875rem;
border: 1px solid rgba(148, 163, 184, 0.45);
overflow: hidden;
background: rgba(255, 255, 255, 0.76);
box-shadow: 0 4px 22px rgba(22, 32, 58, 0.07);
animation: fadeInUp 0.7s cubic-bezier(0.4, 0, 0.2, 1) both;
animation-delay: 0.28s;
transition: box-shadow 0.2s ease, border-color 0.2s ease;
}
html.dark .bn403-steps-sheet {
border-color: rgba(71, 85, 105, 0.5);
background: rgba(26, 35, 52, 0.65);
box-shadow: 0 8px 28px rgba(0, 0, 0, 0.32);
}
.bn403-steps-sheet:hover {
border-color: rgba(148, 163, 184, 0.58);
box-shadow: 0 12px 36px rgba(22, 32, 58, 0.1);
}
html.dark .bn403-steps-sheet:hover {
border-color: rgba(100, 116, 139, 0.48);
}
.bn403-continue-sheet {
padding: 1.25rem 1.375rem 1.35rem;
text-align: center;
background: transparent;
display: flex;
flex-direction: column;
align-items: stretch;
gap: 1rem;
}
.bn403-continue-note {
margin: 0;
font-size: 0.875rem;
font-weight: 500;
line-height: 1.45;
color: #475569;
}
html.dark .bn403-continue-note {
color: #cbd5e1;
}
.bn403-continue-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.35rem;
width: 100%;
min-height: 3rem;
padding: 0.75rem 1.125rem;
margin: 0;
border: 1px solid rgba(21, 128, 61, 0.35);
border-radius: 0.625rem;
cursor: pointer;
font-family: inherit;
font-size: 1rem;
font-weight: 700;
line-height: 1.35;
text-decoration: none;
color: #ffffff;
background: #28A377;
transition: transform 0.18s ease, box-shadow 0.18s ease,
filter 0.18s ease, border-color 0.18s ease;
overflow-wrap: anywhere;
word-break: break-word;
text-align: center;
}
.bn403-continue-btn-label {
display: inline-flex;
flex-wrap: wrap;
align-items: baseline;
justify-content: center;
gap: 0.15rem 0.35rem;
max-width: 100%;
font-size: 1.0625rem;
font-weight: 800;
line-height: 1.35;
}
.bn403-continue-btn-prefix {
font-weight: inherit;
font-family: inherit;
}
.bn403-continue-host {
overflow-wrap: anywhere;
word-break: break-word;
text-align: center;
font-weight: 800;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
"Liberation Mono", "Courier New", monospace;
font-size: 0.98em;
letter-spacing: 0.02em;
}
.bn403-continue-btn .bn403-continue-host::before {
content: "›";
display: inline-block;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica,
Arial, sans-serif;
font-weight: 700;
font-size: 0.92em;
margin-inline-end: 0.4rem;
opacity: 0.92;
transform: translateY(-0.04em);
}
[dir="rtl"] .bn403-continue-btn .bn403-continue-host::before {
content: "‹";
margin-inline-end: 0;
margin-inline-start: 0.4rem;
}
.bn403-continue-btn--muted .bn403-continue-host::before {
content: none;
margin: 0;
}
.bn403-continue-btn:hover {
filter: brightness(1.05);
box-shadow: 0 3px 0 rgba(0, 0, 0, 0.1),
0 12px 32px rgba(34, 197, 94, 0.35),
inset 0 1px 0 rgba(255, 255, 255, 0.32);
transform: translateY(-1px);
}
.bn403-continue-btn:active {
transform: translateY(2px);
filter: brightness(0.96);
}
.bn403-continue-btn:focus {
outline: none;
}
.bn403-continue-btn:focus-visible {
outline: 2px solid rgba(255, 255, 255, 0.95);
outline-offset: 3px;
}
html.dark .bn403-continue-btn:focus-visible {
outline-color: #86efac;
}
html.dark .bn403-continue-btn {
border-color: rgba(74, 222, 128, 0.35);
background: #28A377;
}
.bn403-continue-btn--muted {
cursor: not-allowed;
opacity: 0.55;
filter: grayscale(0.15);
box-shadow: none;
pointer-events: none;
}
.bn403-continue-btn--muted:hover,
.bn403-continue-btn--muted:active {
transform: none;
filter: grayscale(0.15);
box-shadow: none;
}
.bn403-continue-btn--muted:focus-visible {
outline-color: transparent;
}
.bn403-panel-foot {
margin-top: auto;
padding-top: 1.375rem;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
border-top: 1px solid rgba(148, 163, 184, 0.35);
position: relative;
z-index: 1;
}
html.dark .bn403-panel-foot {
border-top-color: rgba(71, 85, 105, 0.45);
}
.bn403-waf {
user-select: none;
display: flex;
align-items: center;
gap: 0.5rem;
margin-top: 0;
}
.bn403-waf > span:first-child {
font-size: 1.25rem;
line-height: 1.75rem;
font-weight: 700;
color: #1f2937;
}
html.dark .bn403-waf > span:first-child {
color: #e5e7eb;
}
.bn403-waf sup {
vertical-align: super;
margin-left: 0.25rem;
}
.bn403-waf-badge {
margin-top: 0.125rem;
background: #22c55e;
font-weight: 900;
color: #fff;
border-radius: 0.25rem;
padding: 0 0.25rem;
font-size: 0.875rem;
transition: transform 0.2s ease;
display: inline-block;
}
.bn403-waf-badge:hover {
transform: scale(1.1);
}
.bn403-separator {
display: none;
width: 2px;
flex-shrink: 0;
margin: 0;
align-self: stretch;
background: linear-gradient(
to bottom,
transparent,
#c5cdd9,
transparent
);
animation: fadeInSeparator 1s cubic-bezier(0.4, 0, 0.2, 1) both;
}
html.dark .bn403-separator {
background: linear-gradient(
to bottom,
transparent,
#2e3a54,
transparent
);
}
@media (min-width: 768px) {
.bn403-separator {
display: block;
}
}
.bn403-panel-right {
position: relative;
overflow: hidden;
flex: 1 1 0%;
background: #fdfefe;
border-radius: 0 0 1rem 1rem;
border: 1px solid #dbe0ea;
border-left: none;
border-top-color: transparent;
box-shadow: 0 12px 28px rgba(22, 32, 58, 0.08),
0 4px 10px rgba(22, 32, 58, 0.04);
padding: 2rem;
display: flex;
flex-direction: column;
justify-content: flex-start;
min-width: 0;
animation: fadeInUp 0.7s cubic-bezier(0.4, 0, 0.2, 1) both;
animation-delay: 0.1s;
}
html.dark .bn403-panel-right {
background: #232b3e;
border: none;
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.35);
}
@media (min-width: 768px) {
.bn403-panel-right {
border-radius: 0 1rem 1rem 0;
border: 1px solid #dbe0ea;
border-left: none;
padding: 3rem;
}
html.dark .bn403-panel-right {
border: none;
}
}
.bn403-info-title {
position: relative;
z-index: 10;
font-size: 1.5rem;
line-height: 2rem;
font-weight: 700;
margin: 0 0 1.25rem;
padding-bottom: 0.75rem;
color: #1f2937;
border-bottom: 2px solid rgba(232, 69, 69, 0.38);
}
html.dark .bn403-info-title {
color: #e5e7eb;
border-bottom-color: rgba(248, 113, 113, 0.45);
}
.bn403-info-sheet {
position: relative;
z-index: 10;
border-radius: 0.875rem;
border: 1px solid rgba(148, 163, 184, 0.45);
overflow: hidden;
background: rgba(255, 255, 255, 0.72);
box-shadow: 0 4px 22px rgba(22, 32, 58, 0.07);
transition: box-shadow 0.2s ease, border-color 0.2s ease;
}
html.dark .bn403-info-sheet {
border-color: rgba(71, 85, 105, 0.5);
background: rgba(26, 35, 52, 0.52);
box-shadow: 0 8px 28px rgba(0, 0, 0, 0.28);
}
.bn403-info-sheet:hover {
border-color: rgba(148, 163, 184, 0.58);
box-shadow: 0 12px 36px rgba(22, 32, 58, 0.1);
}
html.dark .bn403-info-sheet:hover {
border-color: rgba(100, 116, 139, 0.48);
}
.bn403-info-list {
position: relative;
display: flex;
flex-direction: column;
gap: 0;
padding: 0;
margin: 0;
font-size: 0.875rem;
line-height: 1.55;
counter-reset: bn403info;
}
.bn403-info-block {
position: relative;
display: grid;
grid-template-columns: 2.125rem minmax(0, 1fr);
grid-template-rows: auto auto;
column-gap: 1rem;
row-gap: 0.35rem;
align-items: start;
padding: 1.125rem 1.25rem;
margin: 0;
text-align: start;
border-bottom: 1px solid rgba(148, 163, 184, 0.32);
transition: background-color 0.18s ease;
counter-increment: bn403info;
}
.bn403-info-block:last-child {
border-bottom: none;
}
.bn403-info-block:hover {
background: rgba(248, 250, 252, 0.85);
}
html.dark .bn403-info-block:hover {
background: rgba(39, 50, 74, 0.45);
}
.bn403-info-block::before {
grid-column: 1;
grid-row: 1 / span 2;
align-self: start;
justify-self: center;
margin-top: 0.1rem;
content: counter(bn403info);
font-size: 0.75rem;
font-weight: 800;
font-variant-numeric: tabular-nums;
line-height: 1;
min-width: 1.75rem;
height: 1.75rem;
padding: 0 0.35rem;
display: flex;
align-items: center;
justify-content: center;
border-radius: 0.45rem;
color: #be123c;
background: rgba(232, 69, 69, 0.12);
border: 1px solid rgba(232, 69, 69, 0.22);
box-shadow: 0 1px 2px rgba(22, 32, 58, 0.06);
}
html.dark .bn403-info-block::before {
color: #fecaca;
background: rgba(232, 69, 69, 0.22);
border-color: rgba(248, 113, 113, 0.35);
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.22);
}
.bn403-info-block h3 {
grid-column: 2;
grid-row: 1;
font-size: 1.0625rem;
line-height: 1.45rem;
font-weight: 600;
margin: 0;
color: #1f2937;
}
html.dark .bn403-info-block h3 {
color: #f3f4f6;
}
.bn403-info-block p {
grid-column: 2;
grid-row: 2;
margin: 0;
color: #4b5563;
}
html.dark .bn403-info-block p {
color: #9ca3af;
}
@keyframes fadeInUp {
0% { opacity: 0; transform: translateY(40px); }
100% { opacity: 1; transform: translateY(0); }
}
@keyframes popIn {
0% { opacity: 0; transform: scale(0.7) rotate(-8deg); }
80% { opacity: 1; transform: scale(1.08) rotate(2deg); }
100% { opacity: 1; transform: scale(1) rotate(0); }
}
@keyframes fadeInSeparator {
0% { opacity: 0; height: 0; }
100% { opacity: 1; height: 100%; }
}
.language-picker {
position: relative;
flex-shrink: 0;
direction: ltr;
}
.language-picker__toggle {
display: grid;
grid-template-columns: 28px minmax(0, 1fr) auto;
align-items: center;
column-gap: 10px;
min-width: 12.5em;
max-width: 100%;
padding: 8px 12px;
font-family: inherit;
font-size: 14px;
line-height: 1.35;
color: #333;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 6px;
cursor: pointer;
text-align: left;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
html[dir="rtl"] .language-picker__toggle {
text-align: left;
}
.language-picker__toggle:hover,
.language-picker__toggle:focus {
outline: none;
border-color: rgba(232, 69, 69, 0.45);
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.language-picker__toggle[aria-expanded="true"] {
border-color: rgba(232, 69, 69, 0.55);
}
.language-picker__flag {
width: 28px;
height: 20px;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
}
.language-picker__flag-img {
width: 24px;
height: 18px;
object-fit: cover;
display: block;
border-radius: 2px;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);
}
.language-picker__flag-fallback {
width: 24px;
height: 18px;
border-radius: 2px;
background: linear-gradient(135deg, #e8e8e8, #c8c8c8);
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
}
.language-picker__caret {
margin-left: 0;
flex-shrink: 0;
width: 0;
height: 0;
border-style: solid;
border-width: 5px 4px 0 4px;
border-color: #e84545 transparent transparent transparent;
opacity: 0.75;
}
.language-picker__text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #e84545;
font-weight: 500;
}
.language-picker__menu {
position: absolute;
right: 0;
margin: 6px 0 0;
padding: 6px 0;
min-width: min(240px, 94vw);
max-width: 94vw;
max-height: min(340px, 55vh);
overflow-y: auto;
overflow-x: hidden;
list-style: none;
font-size: 14px;
line-height: 1.35;
color: #222;
background: #fff;
border: 1px solid #ddd;
border-radius: 6px;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
z-index: 1050;
}
html[dir="rtl"] .language-picker__menu {
right: auto;
left: 0;
}
.language-picker__option {
display: grid;
grid-template-columns: 32px minmax(0, 1fr);
column-gap: 12px;
align-items: center;
padding: 8px 14px;
margin: 0;
cursor: pointer;
text-align: left;
border: none;
background: transparent;
width: 100%;
font-family: inherit;
font-size: inherit;
color: inherit;
}
.language-picker__option:hover,
.language-picker__option:focus {
outline: none;
background-color: rgba(232, 69, 69, 0.07);
}
.language-picker__option[aria-selected="true"] {
background-color: rgba(232, 69, 69, 0.11);
font-weight: 600;
}
.language-picker__option[aria-selected="true"] .language-picker__opt-label {
color: #e84545;
}
.language-picker__opt-flag {
width: 32px;
height: 22px;
display: flex;
align-items: center;
justify-content: center;
}
.language-picker__opt-flag .language-picker__flag-img {
width: 26px;
height: 19px;
}
.language-picker__opt-label {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: inherit;
}
.dark .language-picker__toggle {
color: #e5e7eb;
background-color: #27324a;
border-color: #3d4f73;
box-shadow: none;
}
.dark .language-picker__menu {
background: #27324a;
border-color: #3d4f73;
color: #e5e7eb;
}
.dark .language-picker__flag-fallback {
background: linear-gradient(135deg, #44506d, #2e3b57);
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.09);
}
@media (prefers-reduced-motion: reduce) {
.bn403-ip-card,
.bn403-steps-sheet,
.bn403-info-sheet,
.bn403-info-block,
.bn403-continue-btn {
transition: none !important;
}
.bn403-ip-card:hover {
transform: none;
}
.bn403-steps-sheet:hover {
transform: none;
}
.bn403-continue-btn:hover,
.bn403-continue-btn:active {
transform: none;
}
}
</style>
<script>
function bn403ResolveDark() {
try {
var t = localStorage.theme;
if (t === "dark") return true;
if (t === "light") return false;
return window.matchMedia("(prefers-color-scheme: dark)").matches;
} catch (e) {
return false;
}
}
function bn403ApplyTheme() {
document.documentElement.classList.toggle("dark", bn403ResolveDark());
bn403UpdateThemeIcon();
}
function bn403UpdateThemeIcon() {
var icon = document.getElementById("theme-toggle-icon");
if (!icon) return;
icon.textContent = document.documentElement.classList.contains("dark")
? "☀️"
: "🌙";
}
/* Match OS before first paint where possible */
bn403ApplyTheme();
window
.matchMedia("(prefers-color-scheme: dark)")
.addEventListener("change", function () {
if (!("theme" in localStorage)) bn403ApplyTheme();
});
document.addEventListener("DOMContentLoaded", function () {
var btn = document.getElementById("theme-toggle");
if (!btn) return;
btn.addEventListener("click", function () {
localStorage.theme = document.documentElement.classList.contains("dark")
? "light"
: "dark";
bn403ApplyTheme();
});
bn403ApplyTheme();
});
</script>
</head>
<body class="bn403-page">
<button id="theme-toggle" type="button" aria-label="Switch between light and dark theme" class="bn403-theme-toggle">
<span id="theme-toggle-icon" aria-hidden="true">🌙</span>
</button>
<main class="bn403-main">
<section class="bn403-panel-left">
<div class="bn403-copy">
<h1 class="bn403-title js-lang-SORRY">Sorry, your request has been blocked</h1>
<p class="bn403-lead js-lang-LEFT_P">
The website you tried to reach is under active web security protection to prevent cyber attacks. Your request triggered the web application firewall system so the request has been blocked. There are several factors why a request can be blocked, such as SQL keywords, malformed requests, and some specific words.
</p>
</div>
<div id="ip-card" class="bn403-ip-card">
<div id="ipv4-container" class="bn403-ip-stack">
<span class="bn403-ip-label js-lang-YOUR_IPV4">Your IP address:</span>
<span id="current-ip" class="bn403-ip-value">…</span>
</div>
</div>
<section class="bn403-steps-sheet">
<div class="bn403-continue-sheet">
<p class="bn403-continue-note js-lang-RECAPTCHA">You will be challenged by a reCAPTCHA page</p>
<a id="location" class="bn403-continue-btn" href="#">
<span class="bn403-continue-btn-label">
<span class="bn403-continue-btn-prefix js-lang-CONTINUE">Continue browsing on </span>
<span id="location-host" class="bn403-continue-host">…</span>
</span>
</a>
</div>
</section>
<footer class="bn403-panel-foot">
<div class="bn403-waf">
<span>WAF<sup><span class="bn403-waf-badge">Pro</span></sup></span>
</div>
</footer>
</section>
<div class="bn403-separator" aria-hidden="true"></div>
<section class="bn403-panel-right">
<div class="bn403-panel-brand">
<div class="bn403-panel-brand-slot">
<div class="language-picker" id="languagePickerRoot">
<button
type="button"
id="languagePickerToggle"
class="language-picker__toggle"
aria-haspopup="listbox"
aria-expanded="false"
>
<span id="languagePickerFlag" class="language-picker__flag" aria-hidden="true"></span>
<span id="languagePickerLabel" class="language-picker__text">English</span>
<span class="language-picker__caret" aria-hidden="true"></span>
</button>
<ul id="languagePickerMenu" class="language-picker__menu" role="listbox" hidden></ul>
</div>
</div>
<div class="bn403-logo-wrap">
<svg class="bn403-logo" width="120" height="48" viewBox="0 0 951 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_295_549)">
<path class="bn403-logo-mascot-bg" d="M232.615 236.878H37.7826C19.589 236.878 4.81104 221.996 4.81104 203.674V51.2037C4.81104 32.882 19.589 18 37.7826 18H232.615C250.808 18 265.585 32.882 265.585 51.2037V203.604C265.585 221.996 250.808 236.878 232.615 236.878Z" fill="white"/>
<path d="M232.609 236.878H37.7772C19.5836 236.878 4.80566 221.996 4.80566 203.674V51.2037C4.80566 32.882 19.5836 18 37.7772 18H232.609C250.803 18 265.58 32.882 265.58 51.2037V203.604C265.58 221.996 250.803 236.878 232.609 236.878Z" fill="#141324" fill-opacity="0.6"/>
<path d="M271.093 152.57C273.951 155.448 275.275 159.379 275.136 163.38C275.066 165.275 277.157 166.469 278.761 165.416C279.737 164.784 280.643 164.012 281.549 163.1C287.893 156.711 288.381 146.813 282.595 140.987C276.81 135.16 266.98 135.652 260.637 142.04C259.801 142.882 259.034 143.865 258.337 144.848C257.291 146.462 258.406 148.638 260.358 148.498C264.331 148.358 268.165 149.692 271.093 152.57Z" fill="#E84545"/>
<path d="M271.093 152.57C273.951 155.448 275.275 159.379 275.136 163.38C275.066 165.275 277.157 166.469 278.761 165.416C279.737 164.784 280.643 164.012 281.549 163.1C287.893 156.711 288.381 146.813 282.595 140.987C276.81 135.16 266.98 135.652 260.637 142.04C259.801 142.882 259.034 143.865 258.337 144.848C257.291 146.462 258.406 148.638 260.358 148.498C264.331 148.358 268.165 149.692 271.093 152.57Z" fill="#141324" fill-opacity="0.2"/>
<path d="M271.093 152.57C273.951 155.448 275.275 159.379 275.136 163.38C275.066 165.275 277.157 166.469 278.761 165.416C279.737 164.784 280.643 164.012 281.549 163.1C287.893 156.711 288.381 146.813 282.595 140.987C276.81 135.16 266.98 135.652 260.637 142.04C259.801 142.882 259.034 143.865 258.337 144.848C257.291 146.462 258.406 148.638 260.358 148.498C264.331 148.358 268.165 149.692 271.093 152.57Z" fill="#E84545"/>
<path d="M271.093 152.57C273.951 155.448 275.275 159.379 275.136 163.38C275.066 165.275 277.157 166.469 278.761 165.416C279.737 164.784 280.643 164.012 281.549 163.1C287.893 156.711 288.381 146.813 282.595 140.987C276.81 135.16 266.98 135.652 260.637 142.04C259.801 142.882 259.034 143.865 258.337 144.848C257.291 146.462 258.406 148.638 260.358 148.498C264.331 148.358 268.165 149.692 271.093 152.57Z" fill="#141324" fill-opacity="0.2"/>
<path d="M271.024 147.867C277.029 147.867 281.899 142.963 281.899 136.916C281.899 130.867 277.029 125.965 271.024 125.965C265.018 125.965 260.15 130.867 260.15 136.916C260.15 142.963 265.018 147.867 271.024 147.867Z" fill="#E84545"/>
<path d="M271.024 147.867C277.029 147.867 281.899 142.963 281.899 136.916C281.899 130.867 277.029 125.965 271.024 125.965C265.018 125.965 260.15 130.867 260.15 136.916C260.15 142.963 265.018 147.867 271.024 147.867Z" fill="#141324" fill-opacity="0.2"/>
<path d="M299.045 136.916C299.045 127.86 292.423 120.56 284.266 120.56C276.111 120.56 269.489 127.86 269.489 136.916C269.489 138.179 269.629 139.373 269.838 140.497C270.256 142.391 272.557 143.093 273.81 141.69C276.46 138.741 280.154 136.916 284.266 136.916C288.309 136.916 292.005 138.741 294.723 141.69C295.977 143.093 298.347 142.391 298.696 140.497" fill="#E84545"/>
<path d="M299.045 136.916C299.045 127.86 292.423 120.56 284.266 120.56C276.111 120.56 269.489 127.86 269.489 136.916C269.489 138.179 269.629 139.373 269.838 140.497C270.256 142.391 272.557 143.093 273.81 141.69C276.46 138.741 280.154 136.916 284.266 136.916C288.309 136.916 292.005 138.741 294.723 141.69C295.977 143.093 298.347 142.391 298.696 140.497" fill="#141324" fill-opacity="0.2"/>
<path d="M299.045 136.916C299.045 127.86 292.423 120.56 284.266 120.56C276.111 120.56 269.489 127.86 269.489 136.916C269.489 138.179 269.629 139.373 269.838 140.497C270.256 142.391 272.557 143.093 273.81 141.69C276.46 138.741 280.154 136.916 284.266 136.916C288.309 136.916 292.005 138.741 294.723 141.69C295.977 143.093 298.347 142.391 298.696 140.497" fill="#E84545"/>
<path d="M299.045 136.916C299.045 127.86 292.423 120.56 284.266 120.56C276.111 120.56 269.489 127.86 269.489 136.916C269.489 138.179 269.629 139.373 269.838 140.497C270.256 142.391 272.557 143.093 273.81 141.69C276.46 138.741 280.154 136.916 284.266 136.916C288.309 136.916 292.005 138.741 294.723 141.69C295.977 143.093 298.347 142.391 298.696 140.497" fill="#141324" fill-opacity="0.2"/>
<path d="M299.045 136.916C299.045 127.86 292.423 120.56 284.266 120.56C276.111 120.56 269.489 127.86 269.489 136.916C269.489 138.179 269.629 139.373 269.838 140.497C270.256 142.391 272.557 143.093 273.81 141.69C276.46 138.741 280.154 136.916 284.266 136.916C288.309 136.916 292.005 138.741 294.723 141.69C295.977 143.093 298.347 142.391 298.696 140.497" fill="#E84545"/>
<path d="M299.045 136.916C299.045 127.86 292.423 120.56 284.266 120.56C276.111 120.56 269.489 127.86 269.489 136.916C269.489 138.179 269.629 139.373 269.838 140.497C270.256 142.391 272.557 143.093 273.81 141.69C276.46 138.741 280.154 136.916 284.266 136.916C288.309 136.916 292.005 138.741 294.723 141.69C295.977 143.093 298.347 142.391 298.696 140.497" fill="#141324" fill-opacity="0.2"/>
<path d="M269.488 103.643H0V182.405H269.488V103.643Z" fill="#E84545"/>
<path d="M104.769 161.977H78.6988C73.8889 161.977 69.9854 158.607 69.9854 154.465V134.529C69.9854 129.475 75.6316 125.895 81.2081 127.368L107.279 134.107C110.973 135.091 113.483 137.969 113.483 141.268V154.465C113.483 158.607 109.58 161.977 104.769 161.977Z" fill="white"/>
<path d="M269.49 103.923H178.662V182.686H269.49V103.923Z" fill="#E84545"/>
<path d="M269.49 103.923H178.662V182.686H269.49V103.923Z" fill="#141324" fill-opacity="0.2"/>
<path d="M191.698 161.977H165.628C160.817 161.977 156.914 158.607 156.914 154.465V141.268C156.914 137.969 159.423 135.02 163.118 134.108L189.188 127.369C194.764 125.895 200.411 129.545 200.411 134.529V154.465C200.411 158.607 196.508 161.977 191.698 161.977Z" fill="white"/>
<path opacity="0.3" d="M135.163 103.642H265.515V51.4846C265.515 33.0225 250.598 18 232.265 18H135.163V103.642Z" fill="#141324" fill-opacity="0.4"/>
<path opacity="0.3" d="M135.163 236.877H232.544C250.807 236.877 265.585 221.996 265.585 203.603V182.404H135.232L135.163 236.877Z" fill="#141324" fill-opacity="0.4"/>
</g>
<path d="M333 103.5V33H365.5C373.233 33 379.2 34.6333 383.4 37.9C387.6 41.1667 389.7 45.6333 389.7 51.3C389.7 55.5 388.433 59.0667 385.9 62C383.433 64.9333 380.033 66.9 375.7 67.9V66.3C380.767 67.1667 384.667 69.1 387.4 72.1C390.2 75.0333 391.6 78.8667 391.6 83.6C391.6 89.8667 389.367 94.7667 384.9 98.3C380.5 101.767 374.4 103.5 366.6 103.5H333ZM347.9 91.9H364.7C368.567 91.9 371.533 91.1667 373.6 89.7C375.667 88.2333 376.7 85.9 376.7 82.7C376.7 79.4333 375.667 77.1 373.6 75.7C371.533 74.2333 368.567 73.5 364.7 73.5H347.9V91.9ZM347.9 62H362.7C366.767 62 369.767 61.2667 371.7 59.8C373.633 58.3333 374.6 56.1333 374.6 53.2C374.6 50.3333 373.633 48.1667 371.7 46.7C369.767 45.2333 366.767 44.5 362.7 44.5H347.9V62Z" fill="#E84545"/>
<path d="M404.629 103.5V33H420.229V103.5H404.629Z" fill="#E84545"/>
<path d="M452.812 103.5V45.7H430.412V33H490.812V45.7H468.412V103.5H452.812Z" fill="#E84545"/>
<path d="M501.305 103.5V33H512.905L551.205 81.7H548.505V33H563.005V103.5H551.405L513.205 54.8H515.805V103.5H501.305Z" fill="#E84545"/>
<path d="M579.281 103.5V33H594.881V103.5H579.281Z" fill="#E84545"/>
<path d="M611.164 103.5V33H622.764L661.064 81.7H658.364V33H672.864V103.5H661.264L623.064 54.8H625.664V103.5H611.164Z" fill="#E84545"/>
<path d="M691.541 122.2C690.341 122.2 688.907 122.133 687.241 122C685.574 121.867 683.874 121.633 682.141 121.3V109.1C683.474 109.367 684.741 109.567 685.941 109.7C687.141 109.833 688.107 109.9 688.841 109.9C691.907 109.9 694.074 109.033 695.341 107.3C696.607 105.567 697.241 102.767 697.241 98.9V33H712.841V98.9C712.841 104.1 712.107 108.433 710.641 111.9C709.241 115.367 706.974 117.933 703.841 119.6C700.774 121.333 696.674 122.2 691.541 122.2Z" fill="#E84545"/>
<path d="M720.927 103.5L753.327 33H766.227L799.027 103.5H783.227L774.727 83.9L780.827 88.2H738.927L745.127 83.9L736.627 103.5H720.927ZM759.727 49.4L746.827 80L744.127 76.2H775.627L773.327 80L760.127 49.4H759.727Z" fill="#E84545"/>
<path d="M356.016 222.756C351.256 222.756 346.944 222.168 343.08 220.992C339.216 219.76 335.856 218.024 333 215.784L335.94 208.896C337.844 210.352 339.804 211.556 341.82 212.508C343.892 213.46 346.076 214.188 348.372 214.692C350.724 215.14 353.272 215.364 356.016 215.364C360.72 215.364 364.164 214.524 366.348 212.844C368.588 211.164 369.708 208.952 369.708 206.208C369.708 203.856 368.924 202.036 367.356 200.748C365.844 199.46 363.156 198.424 359.292 197.64L350.136 195.792C344.704 194.672 340.644 192.852 337.956 190.332C335.324 187.756 334.008 184.256 334.008 179.832C334.008 176.248 334.96 173.112 336.864 170.424C338.768 167.736 341.4 165.664 344.76 164.208C348.176 162.752 352.152 162.024 356.688 162.024C360.888 162.024 364.752 162.64 368.28 163.872C371.808 165.048 374.776 166.812 377.184 169.164L374.328 175.8C371.808 173.616 369.12 172.02 366.264 171.012C363.408 169.948 360.16 169.416 356.52 169.416C352.208 169.416 348.82 170.312 346.356 172.104C343.948 173.896 342.744 176.332 342.744 179.412C342.744 181.876 343.5 183.808 345.012 185.208C346.58 186.608 349.156 187.672 352.74 188.4L361.896 190.164C367.552 191.34 371.724 193.16 374.412 195.624C377.1 198.032 378.444 201.364 378.444 205.62C378.444 209.036 377.52 212.032 375.672 214.608C373.88 217.184 371.304 219.2 367.944 220.656C364.584 222.056 360.608 222.756 356.016 222.756Z" fill="white"/>
<path d="M392.54 222V162.78H431.348V169.752H401.024V188.4H429.416V195.456H401.024V214.944H431.348V222H392.54Z" fill="white"/>
<path d="M471.993 222.756C465.945 222.756 460.793 221.524 456.537 219.06C452.281 216.596 449.005 213.096 446.709 208.56C444.469 203.968 443.349 198.564 443.349 192.348C443.349 186.132 444.469 180.756 446.709 176.22C449.005 171.684 452.281 168.184 456.537 165.72C460.793 163.256 465.945 162.024 471.993 162.024C476.193 162.024 479.945 162.64 483.249 163.872C486.553 165.104 489.437 166.896 491.901 169.248L488.877 176.22C486.189 173.924 483.557 172.272 480.981 171.264C478.461 170.256 475.521 169.752 472.161 169.752C465.777 169.752 460.905 171.712 457.545 175.632C454.185 179.552 452.505 185.124 452.505 192.348C452.505 199.572 454.185 205.172 457.545 209.148C460.905 213.068 465.777 215.028 472.161 215.028C475.521 215.028 478.461 214.524 480.981 213.516C483.557 212.508 486.189 210.828 488.877 208.476L491.901 215.448C489.437 217.8 486.553 219.62 483.249 220.908C479.945 222.14 476.193 222.756 471.993 222.756Z" fill="white"/>
<path d="M530.253 222.756C522.021 222.756 515.889 220.684 511.857 216.54C507.881 212.396 505.893 206.264 505.893 198.144V162.78H514.629V197.976C514.629 203.688 515.861 208 518.325 210.912C520.845 213.768 524.821 215.196 530.253 215.196C535.405 215.196 539.297 213.768 541.929 210.912C544.561 208 545.877 203.688 545.877 197.976V162.78H554.445V198.144C554.445 206.264 552.401 212.396 548.313 216.54C544.225 220.684 538.205 222.756 530.253 222.756Z" fill="white"/>
<path d="M571.359 222V162.78H596.391C602.719 162.78 607.618 164.292 611.091 167.316C614.562 170.284 616.299 174.456 616.299 179.832C616.299 183.36 615.515 186.384 613.947 188.904C612.379 191.424 610.167 193.356 607.311 194.7C604.455 195.988 601.095 196.632 597.231 196.632L598.575 195.288H600.843C603.139 195.288 605.183 195.876 606.975 197.052C608.823 198.228 610.335 200.104 611.511 202.68L619.995 222H610.419L602.019 202.596C601.179 200.3 599.863 198.816 598.071 198.144C596.335 197.472 594.178 197.136 591.603 197.136H580.095V222H571.359ZM580.095 190.5H594.963C599.163 190.5 602.327 189.604 604.455 187.812C606.639 186.02 607.731 183.444 607.731 180.084C607.731 176.668 606.639 174.092 604.455 172.356C602.327 170.62 599.163 169.752 594.963 169.752H580.095V190.5Z" fill="white"/>
<path d="M633.289 222V162.78H642.025V222H633.289Z" fill="white"/>
<path d="M673.485 222V170.088H653.241V162.78H702.465V170.088H682.221V222H673.485Z" fill="white"/>
<path d="M729.435 222V194.196L731.367 199.74L706.419 162.78H716.499L735.063 191.088H732.963L751.527 162.78H761.271L736.407 199.74L738.171 194.196V222H729.435Z" fill="white"/>
<defs>
<clipPath id="clip0_295_549">
<rect width="298" height="219" fill="white" transform="translate(0 18)"/>
</clipPath>
</defs>
</svg>
</div>
</div>
<h2 class="bn403-info-title js-lang-RIGHT_INFO_TITLE">What you should know</h2>
<div class="bn403-info-sheet">
<div class="bn403-info-list">
<div class="bn403-info-block">
<h3 class="js-lang-RIGHT_INFO_S1_TITLE">What is this protection?</h3>
<p class="js-lang-RIGHT_INFO_S1_P">This website uses a Web Application Firewall (WAF) and automated security rules to filter harmful requests. The protection runs on the hosting side before traffic reaches the site.</p>
</div>
<div class="bn403-info-block">
<h3 class="js-lang-RIGHT_INFO_S2_TITLE">Why was I blocked?</h3>
<p class="js-lang-RIGHT_INFO_S2_P">Your request matched one of the firewall’s rules (for example suspicious patterns, malformed input, or signatures associated with common attacks). Blocking is automatic and is not a judgment about you personally.</p>
</div>
<div class="bn403-info-block">
<h3 class="js-lang-RIGHT_INFO_S3_TITLE">What if this was a mistake?</h3>
<p class="js-lang-RIGHT_INFO_S3_P">False positives can happen. If you believe the block is wrong, contact the website owner or administrator. Share a screenshot, your IP address (shown on this page), the time of the request, and what you were doing beforehand.</p>
</div>
<div class="bn403-info-block">
<h3 class="js-lang-RIGHT_INFO_S4_TITLE">I am not the domain or server owner</h3>
<p class="js-lang-RIGHT_INFO_S4_P">Visitors usually cannot change firewall settings. If you do not manage this website, contact the site owner or, for hosting-related issues, your hosting provider or IT support.</p>
</div>
</div>
</div>
</section>
</main>
<script type="text/javascript">
var languages = {
en: "English",
il: "Hebrew",
fr: "French",
es: "Spanish",
sa: "Arabic",
de: "German",
in: "Hindi",
ir: "Persian",
zh: "Chinese",
pt: "Portuguese",
ru: "Russian",
ja: "Japanese",
ko: "Korean",
it: "Italian",
nl: "Dutch",
pl: "Polish",
tr: "Turkish",
vi: "Vietnamese",
id: "Indonesian",
uk: "Ukrainian",
ro: "Romanian",
cs: "Czech",
sv: "Swedish",
hu: "Hungarian",
el: "Greek",
th: "Thai",
bn: "Bengali"
};
var languageCountryIso = {
bn: "bd",
zh: "cn",
cs: "cz",
de: "de",
el: "gr",
en: "gb",
es: "es",
fr: "fr",
hu: "hu",
id: "id",
il: "il",
in: "in",
ir: "ir",
it: "it",
ja: "jp",
ko: "kr",
nl: "nl",
pl: "pl",
pt: "br",
ro: "ro",
ru: "ru",
sa: "sa",
sv: "se",
th: "th",
tr: "tr",
uk: "ua",
vi: "vn",
};
var FLAG_CDN = "https://flagcdn.com/w40/";
var rtlLanguages = ["sa", "ir"];
var translations = {};
translations["en"] = {
SORRY: "Sorry, your request has been blocked",
CONTINUE:"Continue browsing on ",
RECAPTCHA: "You will be challenged by a reCAPTCHA page",
LEFT_H3: "Why have I been blocked?",
LEFT_P:
"The website you tried to reach is under active web security protection to prevent cyber attacks. Your request triggered the web application firewall system so the request has been blocked. There are several factors why a request can be blocked, such as SQL keywords, malformed requests, and some specific words.",
RIGHT_H3:"What can I do to resolve my IP?",
RIGHT_P:
"Please contact the site owner in case you suspect this is a false alert. Please include a screenshot, your IP address and a short description of the actions you have performed before the system blocked your request.",
IP_LABEL: "Your IP address: ",
};
translations["de"] = {
SORRY: "Es tut uns leid, Ihre Anfrage wurde blockiert",
CONTINUE:"Surfen Sie weiter auf ",
RECAPTCHA: "(Sie werden durch eine reCAPTCHA-Seite geprüft)",
LEFT_H3: "Warum wurde ich blockiert?",
LEFT_P:
"Die Website, die Sie aufrufen wollten, steht unter aktivem Web-Sicherheitsschutz, um Cyber-Angriffe zu verhindern. Ihre Anfrage hat das System der Web Application Firewall ausgelöst, so dass die Anfrage blockiert wurde. Es gibt mehrere Gründe, warum eine Anfrage blockiert werden kann, z. B. SQL-Schlüsselwörter, fehlerhafte Anfragen und bestimmte Wörter.",
RIGHT_H3:"Was kann ich tun, um meine IP aufzulösen?",
RIGHT_P:
"Wenden Sie sich an den Eigentümer der Website, wenn Sie vermuten, dass es sich um eine Fehlmeldung handelt. Fügen Sie bitte einen Screenshot, Ihre IP-Adresse und eine kurze Beschreibung der Aktionen bei, die Sie durchgeführt haben, bevor das System Ihre Anfrage blockiert hat.",
IP_LABEL: "Ihre IP-Adresse: ",
RIGHT_INFO_TITLE: "Was Sie wissen sollten",
RIGHT_INFO_S1_TITLE: "Was ist dieser Schutz?",
RIGHT_INFO_S1_P:
"Diese Website nutzt eine Web Application Firewall (WAF) und automatisierte Sicherheitsregeln, um schädliche Anfragen herauszufiltern. Der Schutz läuft auf der Hosting-Seite, bevor der Datenverkehr die Seite erreicht.",
RIGHT_INFO_S2_TITLE: "Warum wurde ich blockiert?",
RIGHT_INFO_S2_P:
"Ihre Anfrage hat eine Regel der Firewall ausgelöst (z. B. verdächtige Muster, fehlerhafte Eingaben oder Signaturen typischer Angriffe). Die Blockierung erfolgt automatisch und ist keine persönliche Bewertung Ihrer Person.",
RIGHT_INFO_S3_TITLE: "Was, wenn das ein Fehler war?",
RIGHT_INFO_S3_P:
"Fehlalarme können vorkommen. Wenn Sie glauben, dass die Blockierung falsch ist, wenden Sie sich an den Website-Betreiber oder Administrator. Senden Sie einen Screenshot, Ihre IP-Adresse (auf dieser Seite angezeigt), Zeitpunkt der Anfrage und was Sie zuvor getan haben.",
RIGHT_INFO_S4_TITLE: "Ich bin nicht Inhaber der Domain oder des Servers",
RIGHT_INFO_S4_P:
"Besucher können Firewall-Einstellungen in der Regel nicht ändern. Wenn Sie diese Website nicht betreiben, kontaktieren Sie den Seitenbetreiber oder bei Hosting-Problemen Ihren Hosting-Anbieter bzw. die IT-Unterstützung.",
};
translations["es"] = {
SORRY: "Lo sentimos, tu solicitud ha sido bloqueada",
CONTINUE:"Continúa navegando en ",
RECAPTCHA: "(Se abrirá una página de reCAPTCHA)",
LEFT_H3: "¿Por qué he sido bloqueado?",
LEFT_P:
"El sitio web al que has intentado acceder está bajo protección de seguridad web activa para evitar ciberataques. Tu solicitud ha activado el sistema de firewall de aplicaciones web, por lo que la solicitud ha sido bloqueada. Hay varios factores por los que se puede bloquear una petición, como las palabras clave SQL, las solicitudes mal formadas y algunas palabras específicas.",
RIGHT_H3:"¿Qué puedo hacer para resolver mi IP?",
RIGHT_P:
"Ponte en contacto con el propietario del sitio web si sospechas que se trata de una falsa alerta. Incluye una captura de pantalla, tu dirección IP y una breve descripción de las acciones que has realizado antes de que el sistema bloqueara tu solicitud.",
IP_LABEL: "Tu dirección IP: ",
RIGHT_INFO_TITLE: "Lo que debe saber",
RIGHT_INFO_S1_TITLE: "¿Qué es esta protección?",
RIGHT_INFO_S1_P:
"Este sitio web utiliza un cortafuegos de aplicaciones web (WAF) y reglas de seguridad automáticas para filtrar solicitudes dañinas. La protección se aplica en el alojamiento antes de que el tráfico llegue al sitio.",
RIGHT_INFO_S2_TITLE: "¿Por qué me han bloqueado?",
RIGHT_INFO_S2_P:
"Tu solicitud coincidió con una regla del cortafuegos (por ejemplo patrones sospechosos, datos mal formados o firmas asociadas a ataques habituales). El bloqueo es automático y no supone un juicio personal sobre ti.",
RIGHT_INFO_S3_TITLE: "¿Y si ha sido un error?",
RIGHT_INFO_S3_P:
"Puede haber falsos positivos. Si crees que el bloqueo es incorrecto, contacta con el propietario o administrador del sitio. Facilita una captura de pantalla, tu dirección IP (mostrada en esta página), la hora aproximada y qué estabas haciendo antes.",
RIGHT_INFO_S4_TITLE: "No soy el propietario del dominio ni del servidor",
RIGHT_INFO_S4_P:
"Los visitantes normalmente no pueden cambiar la configuración del cortafuegos. Si no gestionas este sitio, contacta con su responsable o, por temas de alojamiento, con tu proveedor de hosting o soporte de TI.",
};
translations["fr"] = {
SORRY: "Désolé, votre demande a été bloquée",
CONTINUE:"Continuez à naviguer sur ",
RECAPTCHA: " (Vous serez confronté à une page reCAPTCHA)",
LEFT_H3: "Pourquoi ai-je été bloqué ?",
LEFT_P:
"Le site Web que vous avez essayé d'atteindre est sous protection active de sécurité Web pour prévenir les cyberattaques. Puisque votre demande a déclenché le système de pare-feu des applications Web, la demande a été bloquée. Plusieurs facteurs peuvent expliquer le blocage d'une requête, comme des mots-clés SQL, des requêtes malformées et certains mots spécifiques.",
RIGHT_H3:"Que puis-je faire pour résoudre mon IP ?",
RIGHT_P:
"Veuillez contacter le propriétaire du site si vous pensez qu'il s'agit d'une fausse alerte. Veuillez inclure une capture d'écran, votre adresse IP et une brève description des actions que vous avez effectuées avant que le système ne bloque votre requête.",
IP_LABEL: "Votre adresse IP : ",
RIGHT_INFO_TITLE: "Ce qu’il faut savoir",
RIGHT_INFO_S1_TITLE: "Qu’est-ce que cette protection ?",
RIGHT_INFO_S1_P:
"Ce site utilise un pare-feu d’application web (WAF) et des règles de sécurité automatisées pour filtrer les requêtes malveillantes. La protection s’exécute côté hébergement avant que le trafic n’atteigne le site.",
RIGHT_INFO_S2_TITLE: "Pourquoi suis-je bloqué ?",
RIGHT_INFO_S2_P:
"Votre requête correspondait à une règle du pare-feu (par exemple des motifs suspects, des données mal formées ou des signatures associées à des attaques courantes). Le blocage est automatique et ne vise pas à vous juger personnellement.",
RIGHT_INFO_S3_TITLE: "Et si c’était une erreur ?",
RIGHT_INFO_S3_P:
"Des faux positifs peuvent survenir. Si vous pensez que le blocage est incorrect, contactez le propriétaire ou l’administrateur du site. Indiquez une capture d’écran, votre adresse IP (affichée sur cette page), l’heure de la tentative et vos actions précédentes.",
RIGHT_INFO_S4_TITLE: "Je ne suis pas propriétaire du domaine ni du serveur",
RIGHT_INFO_S4_P:
"Les visiteurs ne peuvent généralement pas modifier le pare-feu. Si vous n’avez pas la gestion du site, contactez son propriétaire ou, pour l’hébergement, votre hébergeur ou votre support informatique.",
};
translations["il"] = {
SORRY: " מצטערים, בקשתכם נחסמה.",
CONTINUE:".המשיכו לגלוש",
RECAPTCHA: "(תופנו אל דף reCAPTCHA)",
LEFT_H3: "מדוע נחסמתי?",
LEFT_P:
"האתר שאליו ניסיתם להגיע נמצא תחת הגנת אבטחת אינטרנט פעילה, כדי למנוע התקפות סייבר. בקשתכם הפעילה את מערכת חומת האש של יישום האינטרנט ולכן הבקשה נחסמה. ישנם מספר גורמים שבגללם ניתן לחסום בקשה, כגון מילות מפתח של SQL, בקשות בעלות פורמט שגוי וכמה מילים ספציפיות.",
RIGHT_H3:"מה ניתן לעשות כדי לפתור את בעיית ה-IP שלי?",
RIGHT_P:
"אנא צרו קשר עם בעל האתר אם אתם חושבים כי מדובר בהתראת שווא. נא שילחו צילום מסך, את כתובת ה-IP שלכם ותיאור קצר של הפעולות שביצעתם לפני שהמערכת חסמה את בקשתכם.",
IP_LABEL: "כתובת ה־IP שלך: ",
RIGHT_INFO_TITLE: "מה כדאי לדעת",
RIGHT_INFO_S1_TITLE: "מה ההגנה הזאת?",
RIGHT_INFO_S1_P:
"האתר משתמש בחומת אש לאפליקציות אינטרנט (WAF) ובכללי אבטחה אוטומטיים לסינון בקשות מזיקות. ההגנה פועלת בצד האחסון לפני שהתעבורה מגיעה לאתר.",
RIGHT_INFO_S2_TITLE: "למה נחסמתי?",
RIGHT_INFO_S2_P:
"הבקשה שלכם התאימה לאחד מכללי חומת האש (לדוגמה תבניות חשודות, קלט פגום או חתימות הנקשרות למתקפות נפוצות). החסימה אוטומטית ואינה מיועדת לשפוט אתכם אישית.",
RIGHT_INFO_S3_TITLE: "מה אם זו טעות?",
RIGHT_INFO_S3_P:
"עלולים להיות מצבי שווא חיובי. אם נראה לכם שהחסימה שגויה, צרו קשר עם בעל האתר או המנהל. צרפו צילום מסך, כתובת IP (מוצגת בדף זה), את זמן הבקשה ומה עשיתם לפני כן.",
RIGHT_INFO_S4_TITLE: "אינני בעלי הדומיין או השרת",
RIGHT_INFO_S4_P:
"מבקרים בדרך כלל לא יכולים לשנות הגדרות חומת אש. אם אין לכם אחריות על האתר, פנו לבעל האתר, או בנושאי אירוח — לספק האחסון או לתמיכת המחשוב בארגונכם.",
};
translations["in"] = {
SORRY: "क्षमा करें, आपका रिक्वेस्ट ब्लाक कर दी गयी है",
CONTINUE:"ब्राउज़ करना जारी रखें ",
RECAPTCHA: "(आपको एक रीकैप्चा पेज द्वारा चुनौती दी जाएगी)",
LEFT_H3: "मुझे क्यों ब्लाक किया गया है?",
LEFT_P:
"आपने जिस वेबसाइट तक पहुंचने की कोशिश की है वह साइबर हमलों को रोकने के लिए सक्रिय वेब सुरक्षा के अंतर्गत है। आपकी रिक्वेस्ट ने वेब एप्लिकेशन फ़ायरवॉल सिस्टम को ट्रिगर किया, इसलिए रिक्वेस्ट को ब्लाक कर दिया गया है। रिक्वेस्ट को ब्लाक करने के कई कारण हैं, जैसे SQL कीवर्ड, विकृत रिक्वेस्ट और कुछ विशिष्ट शब्द।",
RIGHT_H3:"मैं अपने आईपी को ठीक करने के लिए क्या कर सकता हूं?",
RIGHT_P:
"कृपया साइट एडमिन से संपर्क करें यदि आपको संदेह है कि यह एक झूठी चेतावनी है। कृपया एक स्क्रीनशॉट, अपना आईपी पता, और सिस्टम द्वारा आपके रिक्वेस्ट को ब्लाक करने से पहले आपके द्वारा किए गए कार्यों का संक्षिप्त विवरण शामिल करें।",
IP_LABEL: "आपका आईपी पता: ",
RIGHT_INFO_TITLE: "आपको क्या पता होना चाहिए",
RIGHT_INFO_S1_TITLE: "यह सुरक्षा क्या है?",
RIGHT_INFO_S1_P:
"यह वेबसाइट हानिकारक अनुरोधों को फ़िल्टर करने के लिए एक वेब एप्लिकेशन फ़ायरवॉल (WAF) और स्वचालित सुरक्षा नियमों का उपयोग करती है। यह सुरक्षा ट्रैफ़िक साइट तक पहुँचने से पहले होस्टिंग पक्ष पर चलती है।",
RIGHT_INFO_S2_TITLE: "मुझे क्यों रोका गया?",
RIGHT_INFO_S2_P:
"आपके अनुरोध ने फ़ायरवॉल के किसी नियम से मेल खाया (उदाहरण संदिग्ध पैटर्न, दोष डेटा, या आम हमलों से जुड़े हस्ताक्षर)। ब्लॉक स्वचालित है और व्यक्तिगत रूप से आपका निर्णय नहीं है।",
RIGHT_INFO_S3_TITLE: "अगर यह गलती है?",
RIGHT_INFO_S3_P:
"गलत सकारात्मक (false positive) संभव हैं। यदि आपको लगता है ब्लॉक गलत है, साइट मालिक या एडमिन से संपर्क करें। स्क्रीनशॉट, IP पता (इस पृष्ठ पर), समय और पहले क्या कर रहे थे — बताएँ।",
RIGHT_INFO_S4_TITLE: "मैं डोमेन या सर्वर स्वामी नहीं हूँ",
RIGHT_INFO_S4_P:
"आमतौर पर आगंतुक फ़ायरवॉल नहीं बदल सकते। यदि आप साइट प्रबंधित नहीं करते, साइट स्वामी से संपर्क करें, या होस्टिंग मामलों पर अपनी होस्टिंग कंपनी या आईटी सहायता से पूछें।",
};
translations["sa"] = {
SORRY: ". عذرا ، تم حظر طلبك",
CONTINUE:"استمر في التصفح",
RECAPTCHA: "(ستواجه رمز reCAPTCHA)",
LEFT_H3: ". لماذا تم حظري؟",
LEFT_P:
". موقع الويب الذي حاولت الوصول إليه يخضع لحماية ويب نشطة لمنع الهجمات الإلكترونية. أدى طلبك إلى تشغيل نظام جدار حماية تطبيق الويب ، لذا تم حظر الطلب. هناك عدة عوامل يمكن أن تؤدي إلى حظر أحد الطلبات ، مثل الكلمات الرئيسية لـ SQL والطلبات الناقصة وبعض الكلمات المحددة.",
RIGHT_H3:". ما الذي يمكنني فعله لحل IP الخاص بي؟",
RIGHT_P:
". يرجى التواصل مع صاحب الموقع في حالة الشك في أن هذا انذار خاطئ. يرجى تضمين لقطة للشاشة وعنوان IP الخاص بك ووصف موجز للإجراءات التي قمت بها قبل أن يحظر النظام طلبك.",
IP_LABEL: "عنوان IP الخاص بك: ",
RIGHT_INFO_TITLE: "ما يجدر معرفته",
RIGHT_INFO_S1_TITLE: "ما هذه الحماية؟",
RIGHT_INFO_S1_P:
"يستخدم هذا الموقع جدار حماية لتطبيقات الويب (WAF) وقواعد أمان آلية لتصفية الطلبات الضارة. تعمل الحماية على جانب الاستضافة قبل وصول الزيارات إلى الموقع.",
RIGHT_INFO_S2_TITLE: "لماذا تم حظر طلبي؟",
RIGHT_INFO_S2_P:
"تطابق طلبك مع أحد قواعد جدار الحماية (مثل أنماط مريبة أو بيانات غير سليمة أو توقيعات مرتبطة بهجمات شائعة). الحظر تلقائي وليس حكما شخصيا عليك.",
RIGHT_INFO_S3_TITLE: "ماذا لو كان ذلك خطأ؟",
RIGHT_INFO_S3_P:
"قد تنشأ إيجابيات خاطئة. إذا كنت تعتقد أن الحظر خاطئ، تواصل مع مالك الموقع أو المسؤول. وفِّر لقطة شاشة وعنوان IP (معروض في هذه الصفحة) والوقت وما كنت تفعله سابقًا.",
RIGHT_INFO_S4_TITLE: "ليست أنا مالك النطاق أو الخادم",
RIGHT_INFO_S4_P:
"عادة لا يمكن للزوار تغيير إعدادات جدار الحماية. إذا لا تُدير الموقع، تواصل مع مالكه أو لمسائل الاستضافة مع مزود الخدمة أو دعم تكنولوجيا المعلومات.",
};
translations["ir"] = {
SORRY: "متاسفم، درخواست شما مسدود شده است.",
CONTINUE:"به مرور ادامه دهید ",
RECAPTCHA: "(با یک صفحه reCAPTCHA مواجه خواهید شد)",
LEFT_H3: "چرا من بلاک یا مسدود شده ام؟",
LEFT_P:
"وب سایتی که سعی کردید به آن دسترسی پیدا کنید تحت حفاظتِ فعالِ امنیتی برای جلوگیری از حملات سایبری است. درخواست شما سیستم فایروال را فعال کرد، بنابراین درخواست مسدود شده است. عوامل متعددی وجود دارد که باعث می شود یک درخواست مسدود شود، مانند کلمات کلیدی روی دیتابیس SQL، درخواست های نادرست و برخی کلمات خاص.",
RIGHT_H3:"برای رفع مشکل IP خود چه کاری می توانم انجام دهم؟",
RIGHT_P:
"لطفاً در صورتی که مشکوک هستید که این یک هشدار نادرست است، با مالک سایت تماس بگیرید. لطفاً یک اسکرین شات، آدرس IP خود و شرح کوتاهی از اقداماتی که قبل از مسدود شدن درخواست شما توسط سیستم انجام دادهاید، اضافه کنید.",
IP_LABEL: "آدرس IP شما: ",
RIGHT_INFO_TITLE: "نکاتی که بهتر است بدانید",
RIGHT_INFO_S1_TITLE: "این محافظت چیست؟",
RIGHT_INFO_S1_P:
"این وبسایت از دیوار آتش برنامه وب (WAF) و قوانین خودکار امنیتی برای فیلتر کردن درخواستهای مضر استفاده میکند. محافظت سمت میزبان، پیش از رسیدن ترافیک به سایت اعمال میشود.",
RIGHT_INFO_S2_TITLE: "چرا درخواست من مسدود شد؟",
RIGHT_INFO_S2_P:
"درخواست شما با یکی از قوانین دیوار آتش تطبیق یافت (مثلاً الگوهای مشکوک، ورودی نادرست، یا امضاهای حملات رایج). مسدودسازی خودکار است و قضاوت شخصی نیست.",
RIGHT_INFO_S3_TITLE: "اگر اشتباه بود چه کنم?",
RIGHT_INFO_S3_P:
"ممکن است هشدار اشتباه رخ دهد. اگر فکر میکنید مسدودسازی نادرست است، با صاحب سایت یا مدیر تماس بگیرید. اسکرینشات، آدرس IP (در این صفحه)، زمان تقریبی، و پیش از آن چه کار میکردید را ذکر کنید.",
RIGHT_INFO_S4_TITLE: "مالک دامنه یا سرور نیستم",
RIGHT_INFO_S4_P:
"معمولاً بازدیدکنندگان نمیتوانند تنظیمات دیوار آتش را تغییر دهند. اگر سایت را مدیریت نمیکنید، با مسئول سایت یا در مسائل میزبانی با شرکت هاست یا پشتیبانی فنی تماس بگیرید.",
};
translations["zh"] = {
SORRY: "抱歉,您的请求已被阻止",
CONTINUE: "继续在以下站点浏览 ",
RECAPTCHA: "(系统将要求您完成 reCAPTCHA 验证)",
LEFT_H3: "为什么我被阻止?",
LEFT_P:
"您尝试访问的网站启用了主动的 Web 安全防护以防止网络攻击。您的请求触发了 Web 应用程序防火墙系统,因此被阻止。请求被阻止可能有多种原因,例如 SQL 关键字、格式错误的请求以及某些特定的词语。",
RIGHT_H3: "如何解决与 IP 相关的问题?",
RIGHT_P:
"如果您怀疑这是一次误报,请联系网站所有者。请附上屏幕截图、您的 IP 地址,以及系统在阻止您的请求之前您所执行操作的简要说明。",
IP_LABEL: "您的 IP 地址:",
RIGHT_INFO_TITLE: "您需要了解的内容",
RIGHT_INFO_S1_TITLE: "这项保护是什么?",
RIGHT_INFO_S1_P:
"本站使用 Web 应用防火墙(WAF)与安全规则自动过滤有害请求;防护在托管侧生效,早于流量抵达网站。",
RIGHT_INFO_S2_TITLE: "为什么我会被拦截?",
RIGHT_INFO_S2_P:
"您的请求命中了防火墙规则(例如可疑模式、异常参数或与常见攻击特征匹配)。拦截是自动执行的,并不代表对个人的评判。",
RIGHT_INFO_S3_TITLE: "如果这是误判呢?",
RIGHT_INFO_S3_P:
"可能出现误报。若您认为不应被拦截,请联系网站所有者或管理员,并提供截图、本页显示的 IP、请求时间大致信息以及此前的操作说明。",
RIGHT_INFO_S4_TITLE: "我并非域名或服务器所有者",
RIGHT_INFO_S4_P:
"访客通常无法自行更改防火墙设置。如您不运维该站点,请联系网站负责人;与托管相关的事项请联系托管商或贵司 IT。",
};
translations["pt"] = {
SORRY: "Desculpe, seu pedido foi bloqueado",
CONTINUE: "Continue navegando em ",
RECAPTCHA: "(Será apresentada uma página reCAPTCHA)",
LEFT_H3: "Por que fui bloqueado?",
LEFT_P:
"O site que você tentou acessar está sob proteção de segurança web ativa para evitar ataques cibernéticos. Sua solicitação acionou o firewall de aplicações web e por isso foi bloqueada. Há vários motivos pelos quais uma solicitação pode ser bloqueada, como palavras-chave SQL, solicitações malformadas e certas palavras específicas.",
RIGHT_H3: "O que posso fazer para resolver o problema com meu IP?",
RIGHT_P:
"Entre em contato com o proprietário do site se suspeitar de um alerta falso. Inclua uma captura de tela, seu endereço IP e uma breve descrição do que você fez antes do sistema bloquear sua solicitação.",
IP_LABEL: "Seu endereço IP: ",
RIGHT_INFO_TITLE: "Informações úteis",
RIGHT_INFO_S1_TITLE: "O que é essa proteção?",
RIGHT_INFO_S1_P:
"Este site usa um firewall de aplicações web (WAF) e regras de segurança automáticas para filtrar pedidos nocivos. A proteção ocorre no lado da hospedagem antes do tráfego chegar ao site.",
RIGHT_INFO_S2_TITLE: "Por que fui bloqueado?",
RIGHT_INFO_S2_P:
"Sua solicitação correspondeu a uma regra do firewall (por exemplo padrões suspeitos, dados malformados ou assinaturas relacionadas a ataques comuns). O bloqueio é automático e não é um julgamento pessoal.",
RIGHT_INFO_S3_TITLE: "E se foi um erro?",
RIGHT_INFO_S3_P:
"Falsos positivos podem ocorrer. Se achar que o bloqueio é incorreto, contate o proprietário ou administrador do site. Envie uma captura de tela, seu IP (mostrado nesta página), o horário aproximado e o que estava fazendo antes.",
RIGHT_INFO_S4_TITLE: "Não sou proprietário do domínio nem do servidor",
RIGHT_INFO_S4_P:
"Visitantes em geral não podem mudar configurações de firewall. Se você não gere o site, fale com o responsável ou, sobre hospedagem, com sua empresa de hosting ou TI.",
};
translations["ru"] = {
SORRY: "К сожалению, ваш запрос заблокирован",
CONTINUE: "Продолжить просмотр на сайте ",
RECAPTCHA: "(Вам будет показана страница reCAPTCHA)",
LEFT_H3: "Почему меня заблокировали?",
LEFT_P:
"Веб-сайт, который вы попытались открыть, находится под активной защитой безопасности для предотвращения кибератак. Ваш запрос сработал в системе веб-ориентированного межсетевого экрана (WAF), поэтому был заблокирован. Запрос может быть блокирован по разным причинам: ключевые слова SQL, некорректный формат запроса или отдельные слова.",
RIGHT_H3: "Что я могу сделать по поводу блокировки моего IP?",
RIGHT_P:
"Свяжитесь с владельцем сайта, если считаете, что это ложное срабатывание. Укажите скриншот, ваш IP-адрес и краткое описание действий до того, как система заблокировала запрос.",
IP_LABEL: "Ваш IP-адрес: ",
RIGHT_INFO_TITLE: "Полезно знать",
RIGHT_INFO_S1_TITLE: "Что это за защита?",
RIGHT_INFO_S1_P:
"Сайт использует межсетевой экран веб-приложений (WAF) и автоматические правила безопасности, чтобы отфильтровывать вредные запросы. Защита работает на стороне хостинга до того, как трафик дойдёт до сайта.",
RIGHT_INFO_S2_TITLE: "Почему меня заблокировали?",
RIGHT_INFO_S2_P:
"Ваш запрос совпал с одним из правил (например подозрительные шаблоны, некорректные данные или сигнатуры типичных атак). Блокировка автоматическая и не является личной оценкой.",
RIGHT_INFO_S3_TITLE: "А если это ошибка?",
RIGHT_INFO_S3_P:
"Возможны ложные срабатывания. Если блок кажется ошибочным, свяжитесь с владельцем или администратором сайта. Укажите скриншот, ваш IP (на этой странице), время запроса и что вы делали до блокировки.",
RIGHT_INFO_S4_TITLE: "Я не владею доменом и сервером",
RIGHT_INFO_S4_P:
"Посетители обычно не могут менять настройки фаервола. Если вы не управляете сайтом, обратитесь к его владельцу или по вопросам хостинга — к компании-хостеру или в ИТ-поддержку.",
};
translations["ja"] = {
SORRY: "申し訳ありませんが、リクエストはブロックされました",
CONTINUE: "次のサイトで閲覧を続行 ",
RECAPTCHA: "(reCAPTCHA のページが表示されます)",
LEFT_H3: "なぜブロックされたのですか?",
LEFT_P:
"アクセスしようとしたウェブサイトは、サイバー攻撃を防ぐためのセキュリティ保護が有効です。リクエストがウェブアプリケーションファイアウォールを発動したためブロックされました。SQL に関連する語句、不正な形式のリクエスト、特定の語句など、ブロック理由はさまざまです。",
RIGHT_H3: "IP の問題を解消するにはどうすればよいですか?",
RIGHT_P:
"誤検知と思われる場合はサイト運営者にご連絡ください。画面のスクリーンショット、IP アドレス、ブロック前に行った操作の簡単な説明を添えてください。",
IP_LABEL: "IP アドレス: ",
RIGHT_INFO_TITLE: "知っておきたいこと",
RIGHT_INFO_S1_TITLE: "この保護とは?",
RIGHT_INFO_S1_P:
"このサイトでは Web アプリケーションファイアウォール(WAF)と自動のセキュリティルールで有害なリクエストをフィルタします。保護はトラフィックがサイトに届く前、ホスティング側で行われます。",
RIGHT_INFO_S2_TITLE: "ブロックされた理由は?",
RIGHT_INFO_S2_P:
"リクエストがファイアウォールのルールに一致しました(不審なパターン、不正な入力、代表的な攻撃のシグネチャなど)。ブロックは自動で、個人への判断ではありません。",
RIGHT_INFO_S3_TITLE: "誤検知だったら?",
RIGHT_INFO_S3_P:
"誤検知はあり得ます。不適切と思われる場合はサイト管理者に連絡し、画面のスクショ、IP(このページに表示)、日時と直前に行った操作を伝えてください。",
RIGHT_INFO_S4_TITLE: "ドメインやサーバーの管理者ではありません",
RIGHT_INFO_S4_P:
"一般の閲覧者がファイアウォール設定を変えることは通常できません。サイトを運用していない場合は運営者に連絡し、ホスティング関連はサーバー会社や社内 IT に相談してください。",
};
translations["ko"] = {
SORRY: "죄송합니다. 요청이 차단되었습니다",
CONTINUE: "다음 사이트에서 계속 이용 ",
RECAPTCHA: "(reCAPTCHA 페이지가 표시됩니다)",
LEFT_H3: "왜 차단되었나요?",
LEFT_P:
"접속하려던 웹사이트는 사이버 공격을 막기 위한 웹 보안 보호가 적용되어 있습니다. 요청이 웹 애플리케이션 방화벽을 유발하여 차단되었습니다. SQL 키워드, 잘못된 형식의 요청, 특정 단어 등 다양한 이유로 요청이 차단될 수 있습니다.",
RIGHT_H3: "IP 문제를 해결하려면 어떻게 해야 하나요?",
RIGHT_P:
"오탐일 수 있다고 생각되면 사이트 소유자에게 문의하세요. 스크린샷, IP 주소, 차단 전에 수행한 작업에 대한 간단한 설명을 포함해 주세요.",
IP_LABEL: "IP 주소: ",
RIGHT_INFO_TITLE: "알아두실 내용",
RIGHT_INFO_S1_TITLE: "이 보호 기능이란?",
RIGHT_INFO_S1_P:
"이 웹사이트는 웹 애플리케이션 방화벽(WAF)과 자동 보안 규칙으로 해로운 요청을 걸러냅니다. 보호는 트래픽이 사이트에 도달하기 전 호스팅 측에서 적용됩니다.",
RIGHT_INFO_S2_TITLE: "왜 차단되었나요?",
RIGHT_INFO_S2_P:
"요청이 방화벽 규칙과 일치했습니다(의심스러운 패턴, 잘못된 입력, 흔한 공격 특성 등). 차단은 자동이며 개인을 판단하는 것이 아닙니다.",
RIGHT_INFO_S3_TITLE: "오탐이라면?",
RIGHT_INFO_S3_P:
"오탐이 있을 수 있습니다. 잘못된 차단이라면 사이트 소유자나 관리자에게 연락하고, 스크린샷, 이 페이지의 IP, 시각 및 이전에 한 작업을 알려 주세요.",
RIGHT_INFO_S4_TITLE: "도메인·서버 소유자가 아닙니다",
RIGHT_INFO_S4_P:
"방문자가 방화벽 설정을 바꾸기는 어렵습니다. 사이트를 운영하지 않는다면 운영자에게 문의하고, 호스팅 문제는 제공업체 또는 IT 지원에 문의하세요.",
};
translations["it"] = {
SORRY: "Spiacenti, la tua richiesta è stata bloccata",
CONTINUE: "Continua a navigare su ",
RECAPTCHA: "(Ti verrà mostrata una pagina reCAPTCHA)",
LEFT_H3: "Perché sono stato bloccato?",
LEFT_P:
"Il sito web che stavi cercando di raggiungere è sotto protezione di sicurezza web attiva per prevenire attacchi informatici. La tua richiesta ha attivato il sistema di web application firewall ed è stata bloccata. Esistono diversi motivi per cui una richiesta può essere bloccata, ad esempio parole chiave SQL, richieste malformate e alcune parole specifiche.",
RIGHT_H3: "Cosa posso fare per risolvere il problema relativo al mio IP?",
RIGHT_P:
"Contatta il proprietario del sito se sospetti un falso allarme. Includi uno screenshot, il tuo indirizzo IP e una breve descrizione delle azioni che hai eseguito prima che il sistema bloccasse la tua richiesta.",
IP_LABEL: "Il tuo indirizzo IP: ",
RIGHT_INFO_TITLE: "Cosa è importante sapere",
RIGHT_INFO_S1_TITLE: "Che cos’è questa protezione?",
RIGHT_INFO_S1_P:
"Questo sito usa un firewall per applicazioni web (WAF) e regole di sicurezza automatiche per filtrare richieste dannose. La protezione agisce sul lato dell’hosting prima che il traffico raggiunga il sito.",
RIGHT_INFO_S2_TITLE: "Perché sono stato bloccato?",
RIGHT_INFO_S2_P:
"La tua richiesta ha incontrato una regola del firewall (ad esempio schemi sospetti, input non valido o firme associate ad attacchi comuni). Il blocco è automatico e non è un giudizio personale.",
RIGHT_INFO_S3_TITLE: "E se fosse un errore?",
RIGHT_INFO_S3_P:
"Possono capitare falsi positivi. Se credi il blocco errato, contatta il proprietario o l’amministratore del sito. Fornisci uno screenshot, l’IP (mostrato in questa pagina), l’orario approssimativo e cosa stavi facendo prima.",
RIGHT_INFO_S4_TITLE: "Non sono il proprietario del dominio o del server",
RIGHT_INFO_S4_P:
"Di solito i visitatori non possono modificare il firewall. Se non gestisci il sito, rivolgiti al responsabile o, per dubbi hosting, al fornitore o al reparto IT.",
};
translations["nl"] = {
SORRY: "Sorry, uw verzoek is geblokkeerd",
CONTINUE: "Ga verder met browsen op ",
RECAPTCHA: "(U wordt doorverwezen naar een reCAPTCHA-pagina)",
LEFT_H3: "Waarom ben ik geblokkeerd?",
LEFT_P:
"De website die u probeerde te bereiken valt onder actieve webbeveiliging tegen cyberaanvallen. Uw verzoek activeerde het web application firewall-systeem en is daarom geblokkeerd. Er zijn verschillende redenen waarom een verzoek kan worden geblokkeerd, zoals SQL-trefwoorden, onjuist opgebouwde verzoeken en bepaalde woorden.",
RIGHT_H3: "Wat kan ik doen om mijn IP-probleem op te lossen?",
RIGHT_P:
"Neem contact op met de site-eigenaar als u dit een valse melding vindt. Voeg een screenshot, uw IP-adres en een korte beschrijving toe van uw acties vóór de blokkering.",
IP_LABEL: "Uw IP-adres: ",
RIGHT_INFO_TITLE: "Belangrijk om te weten",
RIGHT_INFO_S1_TITLE: "Wat is deze bescherming?",
RIGHT_INFO_S1_P:
"Deze site gebruikt een web application firewall (WAF) en geautomatiseerde beveiligingsregels om schadelijk verkeer te filteren. Dit gebeurt aan de hostingkant voordat het je site bereikt.",
RIGHT_INFO_S2_TITLE: "Waarom ben ik geblokkeerd?",
RIGHT_INFO_S2_P:
"Uw verzoek voldeed aan een regel (bijvoorbeeld verdachte patronen, foutieve invoer of kenmerken van veelvoorkomende aanvallen). Blokkeren gaat automatisch en is geen oordeel over u.",
RIGHT_INFO_S3_TITLE: "Stel dat het een vergissing was?",
RIGHT_INFO_S3_P:
"Valse positieven zijn mogelijk. Als u dit onjuist vindt, neem contact op met de site-eigenaar of -beheerder. Stuur een screenshot, uw IP (op deze pagina), tijdstip en wat u daarvoor deed.",
RIGHT_INFO_S4_TITLE: "Ik beheer het domein of de server niet",
RIGHT_INFO_S4_P:
"Bezoekers passen firewallinstellingen meestal niet aan. Als u de site niet beheert, meld u bij de eigenaar of bij hostingproblemen bij uw provider of IT.",
};
translations["pl"] = {
SORRY: "Przepraszamy, Twoje żądanie zostało zablokowane",
CONTINUE: "Kontynuuj przeglądanie witryny ",
RECAPTCHA: "(Zostanie wyświetlona strona reCAPTCHA)",
LEFT_H3: "Dlaczego zostałem zablokowany?",
LEFT_P:
"Strona, którą próbowałeś odwiedzić, korzysta z aktywnej ochrony bezpieczeństwa w celu przeciwdziałania atakom cybernetycznym. Twoje żądanie wywołało system zapory aplikacji webowej i zostało zablokowane. Żądanie może zostać zablokowane z wielu powodów — m.in. ze względu na słowa kluczowe SQL, nieprawidłowy format lub określone słowa.",
RIGHT_H3: "Co mogę zrobić w sprawie mojego adresu IP?",
RIGHT_P:
"Skontaktuj się z właścicielem witryny, jeśli podejrzewasz fałszywy alarm. Dołącz zrzut ekranu, adres IP oraz krótki opis działań przed blokadą żądania.",
IP_LABEL: "Twój adres IP: ",
RIGHT_INFO_TITLE: "Co warto wiedzieć",
RIGHT_INFO_S1_TITLE: "Na czym polega ta ochrona?",
RIGHT_INFO_S1_P:
"Witryna korzysta z zapory aplikacji webowej (WAF) i automatycznych reguł bezpieczeństwa, aby odfiltrować szkodliwe żądania. Ochrona działa po stronie hostingu, zanim ruch dotrze do serwisu.",
RIGHT_INFO_S2_TITLE: "Dlaczego zostałem zablokowany?",
RIGHT_INFO_S2_P:
"Twoje żądanie zgodziło się z regułą zapory (np. podejrzane wzorce, zniekształcone dane lub sygnatury typowych ataków). Blokada jest automatyczna i nie jest oceną Twojej osoby.",
RIGHT_INFO_S3_TITLE: "A jeśli to pomyłka?",
RIGHT_INFO_S3_P:
"Zdarzają się fałszywe alarmy. Jeśli uważasz, że blok jest błędny, skontaktuj się z właścicielem lub administratorem strony. Podaj zrzut ekranu, adres IP (na tej stronie), czas i co robiłeś wcześniej.",
RIGHT_INFO_S4_TITLE: "Nie jestem właścicielem domeny ani serwera",
RIGHT_INFO_S4_P:
"Zwykle goście nie zmieniają ustawień zapory. Jeśli nie prowadzisz witryny, napisz do jej właściciela; w sprawach hostingu — do dostawcy lub działu IT.",
};
translations["tr"] = {
SORRY: "Üzgünüz, isteğiniz engellendi",
CONTINUE: "Şu konumda gezinmeye devam edin ",
RECAPTCHA: "(Bir reCAPTCHA sayfasıyla karşılaşacaksınız)",
LEFT_H3: "Neden engellendim?",
LEFT_P:
"Erişmeye çalıştığınız web sitesi siber saldırıları önlemek için etkin güvenlik koruması altındadır. İstek, web uygulama güvenlik duvarını tetiklediği için engellendi. SQL anahtar kelimeleri, hatalı biçimlendirilmiş istekler ve belirli kelimeler gibi pek çok nedenle engelleme olabilir.",
RIGHT_H3: "IP adresimle ilgili sorunu nasıl çözebilirim?",
RIGHT_P:
"Bu durumun hatalı bir uyarı olduğunu düşünüyorsanız site sahibiyle iletişime geçin. Lütfen ekran görüntüsü, IP adresiniz ve sistemin isteği engellemesinden önceki kısa bir eylem açıklaması ekleyin.",
IP_LABEL: "IP adresiniz: ",
RIGHT_INFO_TITLE: "Bilmeniz gerekenler",
RIGHT_INFO_S1_TITLE: "Bu koruma nedir?",
RIGHT_INFO_S1_P:
"Bu site, zararlı istekleri süzmek için bir web uygulama güvenlik duvarı (WAF) ve otomatik güvenlik kuralları kullanır. Koruma, trafik siteye ulaşmadan barındırma tarafında çalışır.",
RIGHT_INFO_S2_TITLE: "Neden engellendim?",
RIGHT_INFO_S2_P:
"İsteğiniz güvenlik duvarı kurallarından biriyle eşleşti (ör. şüpheli kalıplar, hatalı girdi veya yaygın saldırı imzaları). Engelleme otomatiktir ve kişisel bir yargı değildir.",
RIGHT_INFO_S3_TITLE: "Yanlışlıkla olduysa?",
RIGHT_INFO_S3_P:
"Yanlış pozitifler olabilir. Engelin hatalı olduğunu düşünüyorsanız site sahibi veya yöneticisiyle iletişime geçin. Ekran görüntüsü, bu sayfadaki IP, zaman ve önceden ne yaptığınızı paylaşın.",
RIGHT_INFO_S4_TITLE: "Alan adı veya sunucunun sahibi değilim",
RIGHT_INFO_S4_P:
"Genelde ziyaretçiler güvenlik duvarını değiştiremez. Siteyi siz yönetmiyorsanız site sahibine başvurun; barındırma konularında hosting sağlayıcınıza veya BT desteğine sorun.",
};
translations["vi"] = {
SORRY: "Rất tiếc, yêu cầu của bạn đã bị chặn",
CONTINUE: "Tiếp tục duyệt tại ",
RECAPTCHA: "(Bạn sẽ thấy trang reCAPTCHA)",
LEFT_H3: "Tại sao tôi bị chặn?",
LEFT_P:
"Trang web bạn cố truy cập đang được bảo vệ chủ động để ngăn chặn tấn công mạng. Yêu cầu của bạn kích hoạt tường lửa ứng dụng web nên đã bị chặn. Có nhiều nguyên nhân, ví dụ từ khóa SQL, yêu cầu sai định dạng hoặc một số từ nhất định.",
RIGHT_H3: "Tôi cần làm gì về vấn đề IP của mình?",
RIGHT_P:
"Hãy liên hệ chủ trang nếu bạn nghi ngờ báo động giả. Kèm ảnh chụp màn hình, địa chỉ IP và mô tả ngắn về các thao tác trước khi hệ thống chặn yêu cầu.",
IP_LABEL: "Địa chỉ IP của bạn: ",
RIGHT_INFO_TITLE: "Thông tin bạn nên biết",
RIGHT_INFO_S1_TITLE: "Đây là biện pháp bảo vệ gì?",
RIGHT_INFO_S1_P:
"Trang web dùng tường lửa ứng dụng web (WAF) và quy tắc bảo mật tự động để lọc yêu cầu có hại. Bảo vệ chạy phía hosting trước khi lưu lượng đến trang.",
RIGHT_INFO_S2_TITLE: "Tại sao tôi bị chặn?",
RIGHT_INFO_S2_P:
"Yêu cầu của bạn khớp một quy tắc của tường lửa (ví dụ mẫu đáng ngờ, đầu vào sai định dạng hay dấu hiệu tấn công phổ biến). Chặn là tự động, không mang tính phán xét cá nhân.",
RIGHT_INFO_S3_TITLE: "Nếu đây là nhầm lẫn?",
RIGHT_INFO_S3_P:
"Có thể có báo sai. Nếu bạn cho rằng không nên chặn, liên hệ chủ/trang quản trị. Gửi ảnh màn hình, IP trên trang này, thời gian và những thao tác trước đó.",
RIGHT_INFO_S4_TITLE: "Tôi không sở hữu hay quản trị tên miền/máy chủ",
RIGHT_INFO_S4_P:
"Người truy cập thường không thể đổi cấu hình tường lửa. Nếu bạn không vận hành website, hãy liên hệ chủ site; riêng vấn đề hosting, nhờ nhà cung cấp hoặc đội IT.",
};
translations["id"] = {
SORRY: "Maaf, permintaan Anda diblokir",
CONTINUE: "Lanjutkan menjelajah di ",
RECAPTCHA: "(Anda akan melihat halaman reCAPTCHA)",
LEFT_H3: "Mengapa saya diblokir?",
LEFT_P:
"Situs yang Anda akses dilindungi keamanan web aktif untuk mencegat serangan siber. Permintaan Anda memicu firewall aplikasi web sehingga diblokir. Ada banyak penyebab, seperti kata kunci SQL, permintaan tidak valid, atau kata tertentu.",
RIGHT_H3: "Apa yang bisa saya lakukan untuk masalah IP saya?",
RIGHT_P:
"Hubungi pemilik situs jika Anda mencurigai peringatan palsu. Lampirkan tangkapan layar, alamat IP, dan ringkas tindakan Anda sebelum pemblokiran.",
IP_LABEL: "Alamat IP Anda: ",
RIGHT_INFO_TITLE: "Yang perlu Anda tahu",
RIGHT_INFO_S1_TITLE: "Apa perlindungan ini?",
RIGHT_INFO_S1_P:
"Situs menggunakan Web Application Firewall (WAF) dan aturan keamanan otomatis untuk menyaring permintaan berbahaya. Perlindungan berjalan di sisi hosting sebelum traffic mencapai situs.",
RIGHT_INFO_S2_TITLE: "Mengapa saya diblokir?",
RIGHT_INFO_S2_P:
"Permintaan Anda cocok dengan salah satu aturan WAF (misalnya pola mencurigakan, input salah format, atau tanda serangan umum). Pemblokiran otomatis dan bukan penilaian pribadi.",
RIGHT_INFO_S3_TITLE: "Bagaimana jika ini salah?",
RIGHT_INFO_S3_P:
"False positive bisa terjadi. Jika menurut Anda pemblokiran keliru, hubungi pemilik atau administrator situs. Sertakan tangkapan layar, IP (di halaman ini), perkiraan waktu, dan aktivitas Anda sebelumnya.",
RIGHT_INFO_S4_TITLE: "Saya bukan pemilik domain atau server",
RIGHT_INFO_S4_P:
"Pengunjung biasanya tidak dapat mengatur firewall. Jika Anda tidak mengelola situs, hubungi pemiliknya; untuk masalah hosting, tanyakan ke penyedia hosting atau dukungan TI.",
};
translations["uk"] = {
SORRY: "Вибачте, ваш запит заблоковано",
CONTINUE: "Продовжити перегляд сайту ",
RECAPTCHA: "(Відкриється сторінка reCAPTCHA)",
LEFT_H3: "Чому мене заблокували?",
LEFT_P:
"Сайт, який ви намагаєтеся відкрити, перебуває під активним захистом веббезпеки від кібератак. Ваш запит спрацював у системі веб-фаєрволу застосунків і був заблокований. Причин багато: ключові слова SQL, некоректні запити або певні слова.",
RIGHT_H3: "Що зробити щодо моєї IP-адреси?",
RIGHT_P:
"Звʼяжіться з власником сайту, якщо це можлива помилка. Додайте знімок екрана, IP-адресу та короткий опис дій до блокування.",
IP_LABEL: "Ваша IP-адреса: ",
RIGHT_INFO_TITLE: "Корисно знати",
RIGHT_INFO_S1_TITLE: "У чому суть захисту?",
RIGHT_INFO_S1_P:
"Сайт використовує WAF та автоматичні правила безпеки для відфільтрування шкідливих запитів. Захист діє на стороні хостингу до того, як трафік дійде до сайту.",
RIGHT_INFO_S2_TITLE: "Чому запит заблокували?",
RIGHT_INFO_S2_P:
"Ваш запит збігся з правилом (підозрілі шаблони, некоректні дані або сигнатури типових атак). Блокування автоматичне та не є оцінкою вас особисто.",
RIGHT_INFO_S3_TITLE: "А якщо це помилка?",
RIGHT_INFO_S3_P:
"Можливі хибні спрацювання. Якщо блок здається несправедливим, зв’яжіться з власником чи адміністратором сайту: скріншот, IP (на цій сторінці), час і що робили перед цим.",
RIGHT_INFO_S4_TITLE: "Я не власник домену чи сервера",
RIGHT_INFO_S4_P:
"Відвідувачі зазвичай не змінюють налаштування фаервола. Якщо ви не адмініструєте сайт, напишіть його власнику; із питань хостингу — вашому провайдеру або IT-підтримці.",
};
translations["ro"] = {
SORRY: "Ne pare rău, solicitarea dvs. a fost blocată",
CONTINUE: "Continuați navigarea pe ",
RECAPTCHA: "(Veți întâlni o pagină reCAPTCHA)",
LEFT_H3: "De ce am fost blocat?",
LEFT_P:
"Site-ul pe care ați încercat să îl accesați este protejat activ împotriva atacurilor cibernetice. Solicitarea a declanșat sistemul firewall pentru aplicații web și a fost blocată. Există mai multe motive: cuvinte cheie SQL, cereri incorecte sau anumite cuvinte.",
RIGHT_H3: "Ce pot face în privința IP-ului meu?",
RIGHT_P:
"Contactați proprietarul site-ului dacă suspectați o alertă falsă. Includeți captură de ecran, IP-ul dvs. și o scurtă descriere a acțiunilor dinaintea blocării.",
IP_LABEL: "Adresa dvs. IP: ",
RIGHT_INFO_TITLE: "Ce ar trebui să știți",
RIGHT_INFO_S1_TITLE: "Ce este această protecție?",
RIGHT_INFO_S1_P:
"Site-ul folosește un firewall pentru aplicații web (WAF) și reguli automate de securitate pentru a filtra cererile dăunătoare. Protecția rulează la găzduire înainte ca traficul să ajungă pe site.",
RIGHT_INFO_S2_TITLE: "De ce am fost blocat?",
RIGHT_INFO_S2_P:
"Cererea dvs. s-a potrivit cu o regulă (ex. modele suspecte, date incorecte sau semnături ale atacurilor frecvente). Blocarea este automată și nu vizează persoana dvs.",
RIGHT_INFO_S3_TITLE: "Dacă este o greșeală?",
RIGHT_INFO_S3_P:
"Pot exista detectări false. Dacă credeți că blocarea este incorectă, contactați proprietarul sau administratorul site-ului: captură de ecran, IP (afișat pe această pagină), ora și acțiunile anterioare.",
RIGHT_INFO_S4_TITLE: "Nu sunt proprietarul domeniului sau serverului",
RIGHT_INFO_S4_P:
"Vizitatorii nu pot de obicei modifica firewall-ul. Dacă nu administrați site-ul, adresați-vă proprietarului; pentru probleme de găzduire, furnizorului de hosting sau suportului IT.",
};
translations["cs"] = {
SORRY: "Je nám líto, váš požadavek byl zablokován",
CONTINUE: "Pokračujte v prohlížeči na ",
RECAPTCHA: "(Zobrazí se stránka reCAPTCHA)",
LEFT_H3: "Proč jsem byl zablokován?",
LEFT_P:
"Web, který se pokoušíte navštívit, má aktivní bezpečnostní ochranu proti kybernetickým útokům. Požadavek spustil systém firewallu webové aplikace a byl proto zablokován. Mezi příčiny patří klíčová slova SQL, chybné požadavky nebo některá konkrétní slova.",
RIGHT_H3: "Co mohu udělat ohledně mého IP?",
RIGHT_P:
"Kontaktujte vlastníka webu, pokud jde zřejmě o falešné varování. Přiložte snímek obrazovky, IP adresu a stručný popis činnosti před zablokováním.",
IP_LABEL: "Vaše IP adresa: ",
RIGHT_INFO_TITLE: "Co byste měli vědět",
RIGHT_INFO_S1_TITLE: "O jakou ochranu jde?",
RIGHT_INFO_S1_P:
"Web používá firewall webových aplikací (WAF) a automatická bezpečnostní pravidla k filtrování škodlivých požadavků. Ochrana běží na straně hostingu dříve, než provoz dorazí na web.",
RIGHT_INFO_S2_TITLE: "Proč jsem byl zablokován?",
RIGHT_INFO_S2_P:
"Váš požadavek odpovídá pravidlu (např. podezřelé vzory, chybná data nebo signatury běžných útoků). Blokování je automatické a není osobním hodnocením.",
RIGHT_INFO_S3_TITLE: "Co když jde o omyl?",
RIGHT_INFO_S3_P:
"Mohou vznikat falešné poplachy. Pokud považujete blok za nesprávný, kontaktujte vlastníka nebo správce webu: snímek obrazovky, IP (na této stránce), čas a co jste dělali předtím.",
RIGHT_INFO_S4_TITLE: "Nejsem vlastník domény ani serveru",
RIGHT_INFO_S4_P:
"Návštěvníci obvykle nemění firewall. Nepřebíráte-li správu webu, obraťte se na provozovatele; u hostingu na poskytovatele nebo IT podporu.",
};
translations["sv"] = {
SORRY: "Tyvärr har din förfrågan blockerats",
CONTINUE: "Fortsätt surfa på ",
RECAPTCHA: "(Du möts av en reCAPTCHA-sida)",
LEFT_H3: "Varför blev jag blockerad?",
LEFT_P:
"Webbplatsen du försökte nå är skyddad av aktiv webbsäkerhet mot cyberattacker. Din förfrågan utlöste ett brandväggssystem för webbapplikationer och blockerades därför. Förfrågningar kan blockeras av flera skäl, till exempel SQL-nyckelord, felaktigt formaterade begäranden eller vissa ord.",
RIGHT_H3: "Vad kan jag göra åt mitt IP?",
RIGHT_P:
"Kontakta sajtägaren om du misstänker en falsk varning. Bifoga en skärmbild, din IP-adress och en kort beskrivning av vad du gjorde innan systemet blockerade dig.",
IP_LABEL: "Din IP-adress: ",
RIGHT_INFO_TITLE: "Det här bör du veta",
RIGHT_INFO_S1_TITLE: "Vad är skyddet?",
RIGHT_INFO_S1_P:
"Webbplatsen använder en webbapplikationsbrandvägg (WAF) och automatiska säkerhetsregler för att stoppa skadlig trafik. Skyddet sker vid webbhotellet innan trafiken når sajten.",
RIGHT_INFO_S2_TITLE: "Varför blev jag blockerad?",
RIGHT_INFO_S2_P:
"Din förfrågan matchade en regel (till exempel misstänkta mönster, felaktig data eller signaturer för vanliga attacker). Blockeringen är automatisk och riktas inte mot dig som person.",
RIGHT_INFO_S3_TITLE: "Om det var fel?",
RIGHT_INFO_S3_P:
"Falsklarm förekommer. Kontakta sajtägare eller administratör om du tror blockeringen är fel. Bifoga skärmbild, IP som visas på sidan, tidpunkt och vad du gjorde innan.",
RIGHT_INFO_S4_TITLE: "Jag äger inte domänen eller servern",
RIGHT_INFO_S4_P:
"Besökare kan sällan ändra brandväggen. Om du inte driver webbplatsen, kontakta ansvarig; vid frågor om hosting, din leverantör eller IT-support.",
};
translations["hu"] = {
SORRY: "Sajnáljuk, a kérését blokkolta a rendszer",
CONTINUE: "Böngésszen tovább itt: ",
RECAPTCHA: "(Egy reCAPTCHA-oldalon kell átmennie)",
LEFT_H3: "Miért lettem blokkolva?",
LEFT_P:
"A megnyitni kívánt weboldal aktív védelmet kap a kibertámadások ellen. A kérés aktiválta a webes alkalmazás tűzfalát, ezért blokkoltuk. Ennek több oka lehet (például SQL-kulcsszavak, hibás kérés, bizonyos szavak).",
RIGHT_H3: "Mit tehetek az IP-címem problémájának megoldásához?",
RIGHT_P:
"Ha téves riasztásra gyanakszik, forduljon a webhely tulajdonosához. Mellékeljen képernyőképet, IP-címet és rövid leírást a blokkolás előtti tevékenységről.",
IP_LABEL: "IP-címe: ",
RIGHT_INFO_TITLE: "Mit érdemes tudnia",
RIGHT_INFO_S1_TITLE: "Milyen védelemről van szó?",
RIGHT_INFO_S1_P:
"A honlap webes alkalmazás tűzfalat (WAF) és automatikus szabályokat használ a káros kérések szűrésére. Ez a védelem a hosting oldalon fut, mielőtt a forgalom eléri az oldalt.",
RIGHT_INFO_S2_TITLE: "Miért lett blokkolva a kérésem?",
RIGHT_INFO_S2_P:
"A kéréser egy szabályhoz illeszkedett (pl. gyanús minták, hibás bemenet vagy gyakori támadások jellemzői). A blokkolás automatikus, nem személyes ítélet.",
RIGHT_INFO_S3_TITLE: "Mi van, ha tévedés?",
RIGHT_INFO_S3_P:
"Előfordulhat téves riasztás. Ha Ön szerint tévesen tiltották, forduljon a webhely tulajdonosához vagy rendszergazdájához: képernyőkép, IP (ezen az oldalon), időpont és hogy mit csinált előtte.",
RIGHT_INFO_S4_TITLE: "Nem én vagyok a domain vagy a szerver tulajdonosa",
RIGHT_INFO_S4_P:
"A látogatók általában nem változtathatják a tűzfal beállításait. Ha nem Ön üzemelteti az oldalt, keresse meg üzemeltetőjét; hosting ügyben a szolgáltatót vagy az IT csapatot.",
};
translations["el"] = {
SORRY: "Λυπούμαστε, το αίτημά σας αποκλείστηκε",
CONTINUE: "Συνεχίστε την περιήγηση στο ",
RECAPTCHA: "(Θα εμφανιστεί σελίδα reCAPTCHA)",
LEFT_H3: "Γιατί αποκλείστηκα;",
LEFT_P:
"Ο ιστότοπος που προσπαθείτε να ανοίξετε έχει ενεργή προστασία για την αποφυγή κυβερνοεπιθέσεων. Το αίτημά σας ενεργοποίησε τείχος προστασίας εφαρμογών ιστού και επομένως αποκλείστηκε. Οι λόγοι περιλαμβάνουν λέξεις‑κλειδιά SQL, κακοσχηματισμένα αιτήματα ή συγκεκριμένες λέξεις.",
RIGHT_H3: "Τι μπορώ να κάνω για τη διεύθυνση IP μου;",
RIGHT_P:
"Επικοινωνήστε με τον κάτοχο του ιστοτόπου αν υποπτεύεστε ψευδή συναγερμό. Συμπεριλάβετε στιγμιότυπο οθόνης, IP και σύντομη περιγραφή ενεργειών πριν τον αποκλεισμό.",
IP_LABEL: "Η διεύθυνση IP σας: ",
RIGHT_INFO_TITLE: "Τι πρέπει να γνωρίζετε",
RIGHT_INFO_S1_TITLE: "Τι είναι αυτή η προστασία;",
RIGHT_INFO_S1_P:
"Ο ιστότοπος χρησιμοποιεί τείχος προστασίας εφαρμογών web (WAF) και αυτοματοποιημένους κανόνες για να φιλτράρει επιβλαβή αιτήματα. Η προστασία εφαρμόζεται στην πλευρά φιλοξενίας πριν φτάσει η κίνηση στο site.",
RIGHT_INFO_S2_TITLE: "Γιατί αποκλείστηκα;",
RIGHT_INFO_S2_P:
"Το αίτημά σας ταίριαξε με κανόνα (π.χ. ύποπτα μοτίβα, λανθασμένα δεδομένα ή υπογραφές κοινών επιθέσεων). Ο αποκλεισμός είναι αυτόματος και δεν αποτελεί κρίση για εσάς προσωπικά.",
RIGHT_INFO_S3_TITLE: "Αν πρόκειται για λάθος;",
RIGHT_INFO_S3_P:
"Μπορεί να υπάρξουν ψευδώς θετικά. Αν πιστεύετε ότι ο αποκλεισμός είναι λανθασμένος, επικοινωνήστε με τον κάτοχο ή διαχειριστή: στιγμιότυπο, IP (σε αυτή τη σελίδα), ώρα και τι κάνατε πριν.",
RIGHT_INFO_S4_TITLE: "Δεν είμαι ιδιοκτήτης domain ή διακομιστή",
RIGHT_INFO_S4_P:
"Οι επισκέπτες συνήθως δεν αλλάζουν ρυθμίσεις τείχους. Αν δεν διαχειρίζεστε τον ιστότοπο, απευθυνθείτε στον υπεύθυνο· για hosting, στον πάροχο ή την IT υποστήριξη.",
};
translations["th"] = {
SORRY: "ขออภัย คำขอของคุณถูกบล็อก",
CONTINUE: "ทำการเรียกดูต่อที่ ",
RECAPTCHA: "(คุณจะพบหน้า reCAPTCHA)",
LEFT_H3: "ทำไมฉันถึงถูกบล็อก?",
LEFT_P:
"เว็บไซต์ที่คุณพยายามเข้าถึงมีการป้องกันความปลอดภัยเพื่อป้องกันการโจมตีทางไซเบอร์ คำขอของคุณทำให้เกิดระบบไฟร์วอลล์ของเว็บแอปพลิเคชันจึงถูกบล็อก สาเหตุอาจรวมถึงคำสำคัญ SQL คำขอที่ผิดรูปแบบ หรือคำบางคำ",
RIGHT_H3: "ฉันควรทำอย่างไรกับที่อยู่ IP ของฉัน?",
RIGHT_P:
"ติดต่อเจ้าของเว็บไซต์หากสงสัยว่าเป็นสัญญาณผิดพลาด แนบภาพหน้าจอ ที่อยู่ IP และคำอธิบายสั้นๆ ว่าทำอะไรก่อนถูกบล็อก",
IP_LABEL: "ที่อยู่ IP ของคุณ: ",
RIGHT_INFO_TITLE: "สิ่งที่ควรทราบ",
RIGHT_INFO_S1_TITLE: "การป้องกันนี้คืออะไร?",
RIGHT_INFO_S1_P:
"เว็บไซต์นี้ใช้ Web Application Firewall (WAF) และกฎความปลอดภัยอัตโนมัติเพื่อกรองคำขอที่เป็นอันตราย การป้องกันทำงานฝั่งโฮสติงก่อนทราฟฟิกจะถึงเว็บไซต์",
RIGHT_INFO_S2_TITLE: "ทำไมฉันถูกบล็อก?",
RIGHT_INFO_S2_P:
"คำขอของคุณตรงกับกฎของไฟร์วอลล์ (เช่น รูปแบบน่าสงสัย ข้อมูลผิดรูปแบบ หรือลายเซ็นของการโจมตีทั่วไป) การบล็อกเป็นอัตโนมัติและไม่ได้ตัดสินคุณเป็นการส่วนตัว",
RIGHT_INFO_S3_TITLE: "ถ้าเป็นความผิดพลาด?",
RIGHT_INFO_S3_P:
"อาจมีการแจ้งเตือนผิดพลาดได้ หากคิดว่าไม่ควรถูกบล็อก โปรดติดต่อเจ้าของหรือผู้ดูแลเว็บไซต์ พร้อมภาพหน้าจอ IP ที่แสดงในหน้านี้ เวลาโดยประมาณ และสิ่งที่คุณทำก่อนหน้า",
RIGHT_INFO_S4_TITLE: "ฉันไม่ใช่เจ้าของโดเมนหรือเซิร์ฟเวอร์",
RIGHT_INFO_S4_P:
"ผู้เข้าชมมักแก้ไขไฟร์วอลล์ไม่ได้ หากคุณไม่ได้จัดการเว็บไซต์ ติดต่อผู้รับผิดชอบ หรือหากเป็นเรื่องโฮสติง ติดต่อผู้ให้บริการหรือฝ่าย IT",
};
translations["bn"] = {
SORRY: "দুঃখিত, আপনার অনুরোধ ব্লক করা হয়েছে",
CONTINUE: "এখানে ব্রাউজিং চালিয়ে যান ",
RECAPTCHA: "(আপনি একটি reCAPTCHA পৃষ্ঠা দেখবেন)",
LEFT_H3: "আমাকে কেন ব্লক করা হয়েছে?",
LEFT_P:
"যে ওয়েবসাইটটি খুলতে চেয়েছিলেন, সেটি সাইবার আক্রমণ প্রতিরোধের জন্য সক্রিয় ওয়েব নিরাপত্তার অধীনে রয়েছে। আপনার অনুরোধ ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল সিস্টেম সক্রিয় করেছে, তাই অনুরোধটি ব্লক হয়েছে। SQL কীওয়ার্ড, খারাপ ফরম্যাটের অনুরোধ ও নির্দিষ্ট শব্দের মতো বিভিন্ন কারণ থাকতে পারে।",
RIGHT_H3: "আমার IP নিয়ে কী করতে পারি?",
RIGHT_P:
"যদি মনে হয় ভুল সতর্কতা হয়েছে, সাইটের মালিককে লিখুন। স্ক্রিনশট, IP ঠিকানা এবং ব্লকের আগের কাজের সংক্ষিপ্ত বিবরণ সংযুক্ত করুন।",
IP_LABEL: "আপনার IP ঠিকানা: ",
RIGHT_INFO_TITLE: "যা জানা দরকার",
RIGHT_INFO_S1_TITLE: "এই সুরক্ষা কী?",
RIGHT_INFO_S1_P:
"এই ওয়েবসাইট ক্ষতিকর অনুরোধ ফিল্টার করতে ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল (WAF) ও স্বয়ংক্রিয় নিয়ম ব্যবহার করে। সুরক্ষা হোস্টিং পাশে কাজ করে, ট্র্যাফিক সাইটে পৌঁছানোর আগে।",
RIGHT_INFO_S2_TITLE: "আমাকে কেন ব্লক করা হয়েছে?",
RIGHT_INFO_S2_P:
"আপনার অনুরোধ ফায়ারওয়ালের একটি নিয়মের সঙ্গে মিলেছে (যেমন সন্দেহজনক প্যাটার্ন, ভুল ফরম্যাট বা সাধারণ আক্রমণের স্বাক্ষর)। ব্লক স্বয়ংক্রিয় এবং ব্যক্তিগত রায় নয়।",
RIGHT_INFO_S3_TITLE: "ভুল হলে কী করব?",
RIGHT_INFO_S3_P:
"ভুল সতর্কতা হতে পারে। ব্লক ভুল মনে হলে সাইটের মালিক বা প্রশাসকের সঙ্গে যোগাযোগ করুন—স্ক্রিনশট, এই পৃষ্ঠার IP, সময় এবং আগে কী করছিলেন তা জানান।",
RIGHT_INFO_S4_TITLE: "আমি ডোমেইন বা সার্ভারের মালিক নই",
RIGHT_INFO_S4_P:
"দর্শকরা সাধারণত ফায়ারওয়াল বদলাতে পারে না। আপনি সাইট পরিচালনা না করলে মালিকের কাছে যান; হোস্টিং নিয়ে সরবরাহকারী বা IT সহায়তায় যোগাযোগ করুন।",
};
(function bn403ExtendNewCopy() {
var en = translations["en"];
var featEn = {
RIGHT_INFO_TITLE: "What you should know",
RIGHT_INFO_S1_TITLE: "What is this protection?",
RIGHT_INFO_S1_P:
"This website uses a Web Application Firewall (WAF) and automated security rules to filter harmful requests. The protection runs on the hosting side before traffic reaches the site.",
RIGHT_INFO_S2_TITLE: "Why was I blocked?",
RIGHT_INFO_S2_P:
"Your request matched one of the firewall’s rules (for example suspicious patterns, malformed input, or signatures associated with common attacks). Blocking is automatic and is not a judgment about you personally.",
RIGHT_INFO_S3_TITLE: "What if this was a mistake?",
RIGHT_INFO_S3_P:
"False positives can happen. If you believe the block is wrong, contact the website owner or administrator. Share a screenshot, your IP address (shown on this page), the time of the request, and what you were doing beforehand.",
RIGHT_INFO_S4_TITLE: "I am not the domain or server owner",
RIGHT_INFO_S4_P:
"Visitors usually cannot change firewall settings. If you do not manage this website, contact the site owner or, for hosting-related issues, your hosting provider or IT support.",
CONTINUE_BTN_ARIA: "Continue to website"
};
Object.keys(featEn).forEach(function (k) {
if (!en[k]) en[k] = featEn[k];
});
function stripOuterParens(s) {
s = String(s || "").trim();
if (!s) return s;
if (s.charAt(0) === "(" && s.charAt(s.length - 1) === ")") {
return s.slice(1, -1).trim();
}
if (s.charAt(0) === "(" && s.charAt(s.length - 1) === ")") {
return s.slice(1, -1).trim();
}
return s;
}
function ipLabelToYourIp(lbl) {
var t = String(lbl || "").trim();
if (!t) return null;
if (!/:\s*$/.test(t)) t = t.replace(/\s+$/, "") + ":";
return t;
}
var fk = Object.keys(featEn);
var fallbackIp = ipLabelToYourIp(en.IP_LABEL) || "Your IP address:";
Object.keys(translations).forEach(function (code) {
var t = translations[code];
if (t.RECAPTCHA) t.RECAPTCHA = stripOuterParens(t.RECAPTCHA);
if (!t.YOUR_IPV4) {
var y = ipLabelToYourIp(t.IP_LABEL);
t.YOUR_IPV4 = y || fallbackIp;
t.YOUR_IPV6 = t.YOUR_IPV4;
}
fk.forEach(function (k) {
if (!t[k]) t[k] = en[k] || featEn[k];
});
});
})();
var regex = /((([a-zA-Z]+(-[a-zA-Z0-9]+){0,2})|\*)(;q=[0-1](\.[0-9]+)?)?)*/g;
var isString = function (s) {
return typeof s === "string";
};
function parse(al) {
var strings = (al || "").match(regex);
return strings
.map(function (m) {
if (!m) {
return;
}
var bits = m.split(";");
var ietf = bits[0].split("-");
var hasScript = ietf.length === 3;
return {
code: ietf[0],
script: hasScript ? ietf[1] : null,
region: hasScript ? ietf[2] : ietf[1],
quality: bits[1] ? parseFloat(bits[1].split("=")[1]) : 1.0,
};
})
.filter(function (r) {
return r;
})
.sort(function (a, b) {
return b.quality - a.quality;
});
}
function pick(supportedLanguages, acceptLanguage, options) {
options = options || {};
if (
!supportedLanguages ||
!supportedLanguages.length ||
!acceptLanguage
) {
return null;
}
if (isString(acceptLanguage)) {
acceptLanguage = parse(acceptLanguage);
}
var supported = supportedLanguages.map(function (support) {
var bits = support.split("-");
var hasScript = bits.length === 3;
return {
code: bits[0],
script: hasScript ? bits[1] : null,
region: hasScript ? bits[2] : bits[1],
};
});
for (var i = 0; i < acceptLanguage.length; i++) {
var lang = acceptLanguage[i];
var langCode = lang.code.toLowerCase();
var langRegion = lang.region
? lang.region.toLowerCase()
: lang.region;
var langScript = lang.script
? lang.script.toLowerCase()
: lang.script;
for (var j = 0; j < supported.length; j++) {
var supportedCode = supported[j].code.toLowerCase();
var supportedScript = supported[j].script
? supported[j].script.toLowerCase()
: supported[j].script;
var supportedRegion = supported[j].region
? supported[j].region.toLowerCase()
: supported[j].region;
if (
langCode === supportedCode &&
(options.loose ||
!langScript ||
langScript === supportedScript) &&
(options.loose || !langRegion || langRegion === supportedRegion)
) {
return supportedLanguages[j];
}
}
}
return null;
}
</script>
<script>
var fallbackLanguage = { code: "en" };
function bn403NormalizeLangCode(code) {
if (code == null || code === "") {
return "auto";
}
var c = String(code).trim().toLowerCase();
if (c === "auto") {
return "auto";
}
// Browsers use "fa" for Persian; translations use "ir"
if (c === "fa") {
return "ir";
}
if (/^[a-z]{2,8}$/.test(c)) {
return c;
}
return "auto";
}
function bn403LangFromCookie() {
try {
var parts = ("; " + document.cookie).split("; bn403_lang=");
if (parts.length === 2) {
return bn403NormalizeLangCode(parts.pop().split(";").shift());
}
} catch (e) {
/* ignore */
}
return "auto";
}
function bn403LangPreference() {
var fromQuery = "auto";
try {
var params = new URLSearchParams(window.location.search);
var raw = params.get("bn_lang");
if (raw == null || raw === "") {
raw = params.get("lang");
}
fromQuery = bn403NormalizeLangCode(raw);
} catch (e) {
fromQuery = "auto";
}
if (fromQuery !== "auto") {
return fromQuery;
}
var fromCookie = bn403LangFromCookie();
if (fromCookie !== "auto") {
return fromCookie;
}
return "auto";
}
// Detect browser language (System [captcha] language via bn403_lang cookie / ?bn_lang= / ?lang=)
var bn403PreferredLang = bn403LangPreference();
var browserLanguages;
if (
bn403PreferredLang !== "auto" &&
typeof translations[bn403PreferredLang] !== "undefined"
) {
browserLanguages = [{ code: bn403PreferredLang }, fallbackLanguage];
} else {
browserLanguages = [
...parse(window.navigator.language),
fallbackLanguage,
];
}
// Browsers report Persian as "fa" (ISO 639-1); this page uses "ir"
if (
browserLanguages[0] &&
browserLanguages[0].code &&
browserLanguages[0].code.toLowerCase() === "fa"
) {
browserLanguages[0].code = "ir";
}
function bn403CountryIso(langCode) {
return languageCountryIso[langCode] || "";
}
function bn403FlagFallbackEl() {
var span = document.createElement("span");
span.className = "language-picker__flag-fallback";
span.setAttribute("aria-hidden", "true");
return span;
}
function bn403FlagImg(iso) {
var img = document.createElement("img");
img.className = "language-picker__flag-img";
img.src = FLAG_CDN + iso + ".png";
img.alt = "";
img.width = 40;
img.height = 30;
img.loading = "lazy";
img.decoding = "async";
img.addEventListener("error", function onErr() {
img.removeEventListener("error", onErr);
var p = img.parentNode;
if (p) {
p.replaceChild(bn403FlagFallbackEl(), img);
}
});
return img;
}
function bn403RenderFlag(container, langCode) {
if (!container) return;
container.textContent = "";
var iso = bn403CountryIso(langCode);
if (iso) {
container.appendChild(bn403FlagImg(iso));
} else {
container.appendChild(bn403FlagFallbackEl());
}
}
function bn403SortedLangCodes() {
return Object.keys(translations).sort(function (a, b) {
return languages[a].localeCompare(languages[b], undefined, {
sensitivity: "base",
});
});
}
function bn403EffectiveLang(browserLanguagesArr) {
for (var bi = 0; bi < browserLanguagesArr.length; bi++) {
var c = browserLanguagesArr[bi].code;
if (translations[c]) return c;
}
return "en";
}
var pickerRoot = document.getElementById("languagePickerRoot");
var pickerToggle = document.getElementById("languagePickerToggle");
var pickerMenu = document.getElementById("languagePickerMenu");
var pickerFlag = document.getElementById("languagePickerFlag");
var pickerLabel = document.getElementById("languagePickerLabel");
function bn403SyncLanguagePicker(code) {
if (!pickerToggle || !pickerMenu || !translations[code]) return;
bn403RenderFlag(pickerFlag, code);
pickerLabel.textContent = languages[code];
pickerToggle.setAttribute(
"aria-label",
"Choose language (" + languages[code] + ")"
);
var opts = pickerMenu.querySelectorAll(".language-picker__option");
for (var i = 0; i < opts.length; i++) {
opts[i].setAttribute(
"aria-selected",
opts[i].getAttribute("data-lang") === code ? "true" : "false"
);
}
}
function bn403PickLanguage(code) {
if (!translations[code]) return;
translate([{ code: code }, fallbackLanguage]);
bn403SyncLanguagePicker(code);
bn403ReapplyIPs();
}
function bn403ClosePickerMenu() {
pickerMenu.hidden = true;
pickerToggle.setAttribute("aria-expanded", "false");
}
function bn403OpenPickerMenu() {
pickerMenu.hidden = false;
pickerToggle.setAttribute("aria-expanded", "true");
var chosen = pickerMenu.querySelector('[aria-selected="true"]');
if (chosen) chosen.focus();
}
bn403SortedLangCodes().forEach(function (langCode) {
var item = document.createElement("button");
item.type = "button";
item.className = "language-picker__option";
item.setAttribute("role", "option");
item.setAttribute("data-lang", langCode);
var flagWrap = document.createElement("span");
flagWrap.className = "language-picker__opt-flag";
flagWrap.setAttribute("aria-hidden", "true");
bn403RenderFlag(flagWrap, langCode);
var label = document.createElement("span");
label.className = "language-picker__opt-label";
label.textContent = languages[langCode];
item.appendChild(flagWrap);
item.appendChild(label);
item.addEventListener("mousedown", function (e) {
e.preventDefault();
});
item.addEventListener("click", function () {
bn403PickLanguage(langCode);
bn403ClosePickerMenu();
});
pickerMenu.appendChild(item);
});
pickerToggle.addEventListener("click", function (e) {
e.stopPropagation();
if (pickerMenu.hidden) bn403OpenPickerMenu();
else bn403ClosePickerMenu();
});
document.addEventListener("click", function (evt) {
if (!pickerRoot.contains(evt.target)) bn403ClosePickerMenu();
});
document.addEventListener("keydown", function (evt) {
if (evt.key === "Escape" && !pickerMenu.hidden) {
bn403ClosePickerMenu();
pickerToggle.focus();
}
});
function bn403ReapplyIPs() {
var el = document.querySelector("#current-ip");
if (el && typeof window.__bitninja_current_ip !== "undefined") {
el.innerText = window.__bitninja_current_ip;
}
}
function fetchIPs() {
var el = document.querySelector("#current-ip");
if (!el) return;
function apply(ip) {
var v = ip == null ? "" : String(ip).trim();
el.innerText = v || "Unavailable";
window.__bitninja_current_ip = el.innerText;
}
function fail() {
apply("Unavailable");
}
var url = "https://api64.ipify.org/?format=json";
if (typeof fetch === "function") {
fetch(url, { credentials: "omit", cache: "no-store" })
.then(function (r) {
if (!r.ok) throw new Error("http " + r.status);
return r.json();
})
.then(function (data) {
apply(data && data.ip ? data.ip : "");
})
.catch(fail);
return;
}
fail();
}
var effectiveInitial = bn403EffectiveLang(browserLanguages);
console.log("[BitNinja 403] Automatic language", {
selected: effectiveInitial,
navigatorLanguage: navigator.language,
primaryCode: browserLanguages[0].code,
hasTranslationForPrimary:
typeof translations[browserLanguages[0].code] !== "undefined",
});
fetchIPs();
</script>
<script>
var translationMap = {};
function bn403SetLocationLink() {
var loc = document.querySelector("#location");
var hostEl = document.querySelector("#location-host");
if (!loc) return;
var host = window.location.host;
var hasHost = !!host;
if (hostEl) {
hostEl.textContent = hasHost ? host : "—";
}
loc.setAttribute(
"href",
hasHost ? window.location.protocol + "//" + host : "#"
);
loc.classList.toggle("bn403-continue-btn--muted", !hasHost);
var recapRaw =
translationMap && translationMap.RECAPTCHA
? String(translationMap.RECAPTCHA)
: "";
var recap = recapRaw.replace(/<[^>]*>/g, "").replace(/\s+/g, " ").trim();
var continuePrefixRaw =
translationMap && translationMap.CONTINUE
? String(translationMap.CONTINUE).replace(/<[^>]*>/g, "")
: "";
var continuePrefix = continuePrefixRaw;
if (!continuePrefix.replace(/\s/g, "").length) {
continuePrefix =
(translationMap && translationMap.CONTINUE_BTN_ARIA
? String(translationMap.CONTINUE_BTN_ARIA)
: "Continue to website") + ": ";
}
function bn403JoinBrowsePrefix(prefix, tail) {
var p = String(prefix || "");
var t = String(tail || "");
if (!t) return p;
var end = p.slice(-1);
if (/[\s:]/.test(end) || p.length === 0) return p + t;
return p + " " + t;
}
var actionPhrase = hasHost
? bn403JoinBrowsePrefix(continuePrefix, host)
: bn403JoinBrowsePrefix(continuePrefix.trimEnd(), "—");
var ariaLabel = recap ? recap + ". " + actionPhrase : actionPhrase;
loc.setAttribute("aria-label", ariaLabel);
if (hasHost) {
loc.setAttribute("rel", "noopener");
} else {
loc.removeAttribute("rel");
}
}
function translate(browserLanguages) {
translationMap = {};
if (rtlLanguages.indexOf(browserLanguages[0].code) !== -1) {
document.body.setAttribute("dir", "rtl");
} else {
document.body.setAttribute("dir", "ltr");
}
browserLanguages.slice().reverse().forEach((lang, idx) => {
if (typeof translations[lang.code] !== "undefined") {
var languageMap = translations[lang.code];
for (const [key, value] of Object.entries(languageMap)) {
translationMap[key] = value;
}
}
});
for (const key in translationMap) {
if (translationMap.hasOwnProperty(key)) {
const replace = translationMap[key];
Array.from(
document.getElementsByClassName("js-lang-" + key)
).forEach(function (element) {
if (element) {
element.innerHTML = replace;
}
if (element.value) {
element.value = replace;
}
});
}
}
bn403SetLocationLink();
}
translate(browserLanguages);
bn403SyncLanguagePicker(bn403EffectiveLang(browserLanguages));
</script>
</body>
</html>