@jjlmoya/utils-streaming 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +134 -0
  3. package/src/category/i18n/id.ts +134 -0
  4. package/src/category/i18n/it.ts +134 -0
  5. package/src/category/i18n/ja.ts +134 -0
  6. package/src/category/i18n/ko.ts +134 -0
  7. package/src/category/i18n/nl.ts +134 -0
  8. package/src/category/i18n/pl.ts +134 -0
  9. package/src/category/i18n/pt.ts +134 -0
  10. package/src/category/i18n/ru.ts +134 -0
  11. package/src/category/i18n/sv.ts +134 -0
  12. package/src/category/i18n/tr.ts +134 -0
  13. package/src/category/i18n/zh.ts +134 -0
  14. package/src/category/index.ts +12 -0
  15. package/src/tests/i18n_coverage.test.ts +36 -0
  16. package/src/tests/locale_completeness.test.ts +1 -1
  17. package/src/tests/slug_uniqueness.test.ts +81 -0
  18. package/src/tool/sorteo/i18n/de.ts +256 -0
  19. package/src/tool/sorteo/i18n/id.ts +256 -0
  20. package/src/tool/sorteo/i18n/it.ts +256 -0
  21. package/src/tool/sorteo/i18n/ja.ts +256 -0
  22. package/src/tool/sorteo/i18n/ko.ts +256 -0
  23. package/src/tool/sorteo/i18n/nl.ts +256 -0
  24. package/src/tool/sorteo/i18n/pl.ts +256 -0
  25. package/src/tool/sorteo/i18n/pt.ts +256 -0
  26. package/src/tool/sorteo/i18n/ru.ts +256 -0
  27. package/src/tool/sorteo/i18n/sv.ts +256 -0
  28. package/src/tool/sorteo/i18n/tr.ts +256 -0
  29. package/src/tool/sorteo/i18n/zh.ts +256 -0
  30. package/src/tool/sorteo/index.ts +12 -0
  31. package/src/tool/tebasCheck/i18n/de.ts +256 -0
  32. package/src/tool/tebasCheck/i18n/id.ts +256 -0
  33. package/src/tool/tebasCheck/i18n/it.ts +256 -0
  34. package/src/tool/tebasCheck/i18n/ja.ts +256 -0
  35. package/src/tool/tebasCheck/i18n/ko.ts +256 -0
  36. package/src/tool/tebasCheck/i18n/nl.ts +256 -0
  37. package/src/tool/tebasCheck/i18n/pl.ts +256 -0
  38. package/src/tool/tebasCheck/i18n/pt.ts +256 -0
  39. package/src/tool/tebasCheck/i18n/ru.ts +256 -0
  40. package/src/tool/tebasCheck/i18n/sv.ts +256 -0
  41. package/src/tool/tebasCheck/i18n/tr.ts +256 -0
  42. package/src/tool/tebasCheck/i18n/zh.ts +256 -0
  43. package/src/tool/tebasCheck/index.ts +12 -0
@@ -0,0 +1,256 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TebasCheckUI } from '../types';
4
+
5
+ const slug = 'isp-blockage-detector';
6
+ const title = 'ISP 웹사이트 차단 감지기 Tebas Check';
7
+ const description = '스페인 ISP가 Cloudflare 공유 IP를 부당하게 차단하는 것을 감지하기 위한 진단 도구입니다.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Tebas-Check란 무엇인가요?',
12
+ answer: '불법 방송 접속을 막기 위해 스페인에서 사법적으로 차단된 알려진 Cloudflare IP에 연결을 시도하는 진단 도구입니다. 문제는 공유 IP를 차단함으로써 수천 개의 합법적인 웹사이트까지 함께 "망가뜨린다"는 점입니다.',
13
+ },
14
+ {
15
+ question: '왜 내 ISP가 Cloudflare IP를 차단하나요?',
16
+ answer: '보호된 콘텐츠를 전송하는 것으로 의심되는 서버의 IP를 ISP가 차단해야 하는 동적인 예방 조치 때문입니다. Cloudflare(CDN)를 사용하면 많은 웹사이트가 동일한 IP를 공유하게 되어, 무고한 사용자들에게 부수적인 피해를 입힙니다.',
17
+ },
18
+ {
19
+ question: '테스트는 어떻게 작동하나요?',
20
+ answer: '차단된 것으로 표시된 IP로부터 작은 리소스를 로드하려고 시도합니다. 해당 IP에서만 "타임아웃" 또는 연결 재설정으로 인해 연결이 실패하면, 이는 ISP가 IP 필터링을 적용하고 있다는 명확한 신호입니다.',
21
+ },
22
+ {
23
+ question: '이 차단을 우회할 수 있나요?',
24
+ answer: 'IP 차단은 DNS만 변경해서는 우회하기 어렵습니다. 해결책은 일반적으로 VPN, Tor 브라우저를 사용하거나, Cloudflare가 방문하려는 합법적인 서비스에 새 IP를 할당할 때까지 기다리는 것입니다.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'VPN 또는 프록시 비활성화',
31
+ text: '테스트의 정확성을 위해 중간 단계 없이 라우터의 직접 연결(광랜 또는 4G/5G)을 사용해야 합니다.',
32
+ },
33
+ {
34
+ name: '스캔 시작',
35
+ text: '진단 버튼을 클릭하세요. 도구가 차단 의심을 받는 IP에 테스트 패킷을 보냅니다.',
36
+ },
37
+ {
38
+ name: '결과 해석',
39
+ text: '결과가 빨간색으로 표시되면 해당 IP에 접속할 수 없음을 의미합니다. 초록색이면 트래픽이 정상적으로 흐르고 있는 것입니다.',
40
+ },
41
+ {
42
+ name: '보고서 생성',
43
+ text: 'ISP가 합법적인 서비스를 차단하고 있는 경우, 결과를 사용하여 해당 사례를 ISP에 신고할 수 있습니다.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
78
+ inLanguage: 'ko',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TebasCheckUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: '자주 묻는 질문',
86
+ faq: faqData,
87
+ bibliographyTitle: '참고 자료 및 배경',
88
+ bibliography: [
89
+ {
90
+ name: 'Cloudflare: IP 차단 이해하기',
91
+ url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
+ },
93
+ {
94
+ name: '스페인 동적 차단 규정',
95
+ url: 'https://www.poderjudicial.es/',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: '왜 갑자기 모든 것이 멈췄나요?',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: '<strong>"예방적 정의"</strong>의 놀라운 세계에 오신 것을 환영합니다. 일요일 오후에 합법적인 웹사이트 로딩은 멈췄는데 트위터는 완벽하게 작동한다면, 당신은 아마도 불법 축구 중계와의 전쟁에서 발생한 부수적인 피해자일 것입니다.',
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: '스페인에서 판사들은 특정 스포츠 단체에 "레드 버튼"을 부여했습니다. 이 버튼을 통해 그들은 매 분마다 직접적인 사법 감독 없이도 실시간으로 IP 주소를 차단할 수 있습니다. 문제는 그들이 축제장의 사격 게임처럼 아무 데나 쏘아대어, "불법 경기"뿐만 아니라 병원, 대학교, 혹은 당신이 즐겨 찾는 요리 블로그가 입주해 있는 공유 서버를 자주 맞춘다는 점입니다.',
113
+ },
114
+ {
115
+ type: 'title',
116
+ text: '불타는 건물 이론',
117
+ level: 3,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: '초고층 빌딩의 4B호실에서 불법 스트리밍이 방송되고 있다고 상상해 보세요. 논리적인 해결책은 4B호의 문을 두드리고 전기를 끊는 것이겠죠?',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: '하지만 아닙니다. 현재의 해결책은 <strong>건물 전체의 기초를 폭파하는 것</strong>입니다.',
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Cloudflare와 같은 서비스의 IP를 차단함으로써 인터넷 제공업체는 해적판 서버만 잡는 것이 아니라, 그 디지털 주소를 공유하던 다른 50,000개의 합법적인 웹사이트도 함께 중단시킵니다. 만약 당신이 일하거나 공부하고 있었는데 그 웹사이트가 해당 IP를 사용했다면, 정말 안타깝게도 부수적인 피해를 입은 것입니다. 주범에게 항의해 보세요.',
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: '이 진단 도구는 정확히 무엇을 하나요?',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: '이 도구는 ISP가 선택적인 IP 주소 차단을 적용하고 있는지 확인하기 위해 세 단계의 기술적 분석을 수행합니다.',
139
+ },
140
+ {
141
+ type: 'comparative',
142
+ columns: 3,
143
+ items: [
144
+ {
145
+ title: 'Google 핑 테스트',
146
+ description: '연결이 살아있는지 확인합니다. Google이 로드되지 않는다면 Wi-Fi 요금을 내지 않은 것이 문제일 수 있습니다. 이것은 기본 연결 테스트입니다.',
147
+ },
148
+ {
149
+ title: 'Cloudflare 핑 테스트',
150
+ description: '1.1.1.1에 접속을 시도합니다. 이는 스페인 차단의 "탄광 속 카나리아"와 같으며 사법 차단의 주요 표적입니다.',
151
+ },
152
+ {
153
+ title: '판정',
154
+ description: 'Google은 작동하는데 Cloudflare가 실패한다면 명확합니다. 당신의 ISP가 Cloudflare에 대해 선택적인 IP 차단을 적용하고 있는 것입니다.',
155
+ },
156
+ ],
157
+ },
158
+ {
159
+ type: 'title',
160
+ text: '동적 차단의 영향',
161
+ level: 3,
162
+ },
163
+ {
164
+ type: 'comparative',
165
+ columns: 3,
166
+ items: [
167
+ {
168
+ title: '오탐지',
169
+ description: '기업 웹사이트, 개인 블로그 및 정부 서비스가 승인되지 않은 스트리밍 서버와 IP를 공유하는 경우 작동이 멈출 수 있습니다.',
170
+ },
171
+ {
172
+ title: 'IP 필터링',
173
+ description: 'DNS 차단과 달리 IP 필터링은 네트워크 수준에서 연결을 차단하므로 DNS 변경만으로는 문제를 해결하기에 부족합니다.',
174
+ },
175
+ {
176
+ title: '투명성 부족',
177
+ description: '종종 사용자는 문제가 자신의 연결 문제인지 아니면 ISP의 활성화된 차단 때문인지 알지 못한 채 "타임아웃" 오류만 보게 됩니다.',
178
+ },
179
+ ],
180
+ },
181
+ {
182
+ type: 'title',
183
+ text: '누구도 대답하고 싶어 하지 않는 질문들',
184
+ level: 3,
185
+ },
186
+ {
187
+ type: 'list',
188
+ items: [
189
+ '<strong>이것을 사용하는 것이 불법인가요?</strong> 아니요. 서버에 핑을 보내는 것은 상점 유리창을 들여다보는 것만큼이나 합법적입니다. 이 도구는 수동적인 네트워크 진단입니다. 암호를 해독하거나 비밀번호를 크랙하거나 보호된 콘텐츠에 액세스하지 않습니다. 단지 왜 평소 이용하던 웹사이트에 접속할 수 없는지 알려줄 뿐입니다.',
190
+ '<strong>어떻게 해결하나요?</strong> 활성화된 차단이 있는 경우 DNS 변경은 더 이상 도움이 되지 않습니다(그들은 모든 기술을 알고 있습니다). 현재 유일한 실질적인 해결책은 <strong>VPN</strong>입니다. 트래픽을 암호화하면 ISP는 사용자가 무엇을 요청하는지 확인할 수 없으므로 "선택적으로"(또는 실수로) 차단할 수 없게 됩니다.',
191
+ ],
192
+ },
193
+ {
194
+ type: 'title',
195
+ text: '스트리머 모드 / OBS 위젯',
196
+ level: 3,
197
+ },
198
+ {
199
+ type: 'paragraph',
200
+ html: '스트리머이신가요? 방송에서 실시간 검열 상태를 보여주고 싶으신가요? 투명 배경(크로마키 준비 완료)과 5분마다 자동 새로고침되는 특별한 울트라 미니멀리즘 모드를 만들었습니다.',
201
+ },
202
+ {
203
+ type: 'list',
204
+ items: [
205
+ '<strong>1단계:</strong> OBS에서 새로운 <strong>브라우저</strong> 소스를 추가합니다.',
206
+ '<strong>2단계:</strong> 이 URL을 사용하세요: <code>https://jjlmoya.es/utilidades/tebas-check/stream/</code>',
207
+ '<strong>3단계:</strong> 완료! 당신의 연결 상태가 깨끗한지 아니면 사법적 공격을 받고 있는지를 나타내는 커다란 아이콘(초록/빨강)이 나타납니다.',
208
+ ],
209
+ },
210
+ {
211
+ type: 'tip',
212
+ title: '법적 고지',
213
+ html: '<p>이 도구는 어떤 스포츠 단체와도 관련이 없으며, 보호된 콘텐츠에 대한 액세스를 용이하게 하지 않으며, 기술적 보호 조치(DRM)를 우회하지 않습니다. 단지 사용자의 인터넷 연결이 인위적으로 저하되었음을 알려줄 뿐입니다.</p>',
214
+ },
215
+ ],
216
+ ui: {
217
+ faqTitle: '자주 묻는 질문',
218
+ bibliographyTitle: '참고 자료 및 배경',
219
+ scanning: '매트릭스 스캔 중...',
220
+ seekingBlocks: '회선 내 콘크리트 차단물 탐색 중...',
221
+ blockedTitle: '차단 중...',
222
+ blockedDiagnosis: '진단: "선택적 검열"',
223
+ blockedReason: 'ISP에서 간섭을 감지했습니다. Cloudflare 또는 DNS가 조작되고 있습니다.',
224
+ noInternetTitle: '연결 없음',
225
+ noInternetReason: '인터넷에 접속할 수 없는 것 같습니다. 케이블이나 요금 미납 여부를 확인하세요.',
226
+ successTitle: '당신은 자유입니다',
227
+ successReason: '당신의 연결은 깨끗해 보입니다. 글로벌 차단이 있더라도 당신에게는 영향을 미치지 않습니다.',
228
+ retryBtn: '사법 당국을 다시 도발하기',
229
+ authorNoteTitle: '저자 노트:',
230
+ authorNoteText: '제가 테바스의 "검은 손"의 영향을 받지 않아 이 유틸리티를 완전히 테스트해보지 못했습니다. 진단 개선을 도와주고 싶으시다면 연락주세요.',
231
+ consoleHeader: 'TEBAS_OS v3.2.0',
232
+ statusNegotiating: '라우터와 협상 중...',
233
+ statusDodging: '법원 회람 피하는 중...',
234
+ statusCheckingPirate: '당신이 해적인지 확인 중(찡긋)...',
235
+ statusPinging: '존재 여부를 확인하기 위해 Google에 핑 보내는 중...',
236
+ statusConsulting: '공유 IP 오라클에 문의 중...',
237
+ statusCheckingFee: '테바스가 자영업자 회비를 냈는지 확인 중...',
238
+ statusCalculating: '복권 당첨 확률 계산 중...',
239
+ statusDeciphering: 'ISP 계약 해독 시도 중...',
240
+ logStarted: "자율 프로토콜 'TEBAS_WATCH' 시작 중...",
241
+ logDetecting: '> ISP 및 기본 연결 감지 중...',
242
+ logIspFound: '> 감지된 ISP: ',
243
+ logConnError: '> 기본 연결 오류',
244
+ logDnsCross: '> DNS 데이터 크로스 체크(DoH vs 로컬) 실행 중...',
245
+ logDnsGoogle: '> 실제 DNS (Google): ',
246
+ logDnsPoisoned: '> 경고: 오염된 DNS 감지됨.',
247
+ logDnsNoDoh: '> DoH를 사용할 수 없어 DNS 크로스 체크를 건너뜁니다.',
248
+ logLaunchingProbes: '> 중요 대상에 프로브 실행 중...',
249
+ logIpBlocked: '> 대상 {ip}: 응답 없음 (IP 차단 의심)',
250
+ logIpActive: '> 대상 {ip}: 활성',
251
+ logAlertInterference: '!!! 사법적 간섭 경고 !!!',
252
+ logNoInternet: '인터넷 액세스 불가',
253
+ logClean: '깨끗한 연결. 즐기세요.',
254
+ logDiagError: '진단 오류',
255
+ },
256
+ };
@@ -0,0 +1,256 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TebasCheckUI } from '../types';
4
+
5
+ const slug = 'isp-blokkade-detector';
6
+ const title = 'ISP blokkeringsdetector Tebas Check';
7
+ const description = 'Diagnostisch hulpmiddel om onrechtmatige blokkering van gedeelde Cloudflare IP-adressen door Spaanse providers te detecteren.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Wat is de Tebas-Check?',
12
+ answer: 'Het is een diagnostisch hulpmiddel dat probeert verbinding te maken met bekende Cloudflare IP-adressen die in Spanje gerechtelijk zijn geblokkeerd om toegang tot illegale uitzendingen te voorkomen. Het probleem is dat door het blokkeren van een gedeeld IP-adres, duizenden legitieme websites "kapot" gaan.',
13
+ },
14
+ {
15
+ question: 'Waarom blokkeert mijn provider een Cloudflare IP-adres?',
16
+ answer: 'Vanwege dynamische voorzorgsmaatregelen waarbij providers IP-adressen moeten blokkeren van servers die zogenaamd beschermde inhoud uitzenden. Door het gebruik van Cloudflare (CDN) delen veel websites hetzelfde IP-adres, wat leidt tot bijkomende schade voor onschuldige gebruikers.',
17
+ },
18
+ {
19
+ question: 'Hoe werkt de test?',
20
+ answer: 'We proberen een kleine bron te laden vanaf de IP-adressen die als geblokkeerd zijn gemarkeerd. Als de verbinding mislukt vanwege "Timeout" of verbinding-resets alleen op die IP-adressen, is dit een duidelijke indicator dat uw provider IP-filtering toepast.',
21
+ },
22
+ {
23
+ question: 'Kan ik deze blokkade omzeilen?',
24
+ answer: 'IP-blokkades zijn moeilijk te omzeilen door alleen de DNS te wijzigen. De oplossing bestaat meestal uit het gebruik van een VPN, de Tor-browser of wachten tot Cloudflare een nieuw IP-adres toewijst aan de legitieme dienst die u probeert te bezoeken.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'VPN of proxy\'s uitschakelen',
31
+ text: 'Voor een nauwkeurige test moet u de directe verbinding van uw router gebruiken (Glasvezel of 4G/5G) zonder tussenlagen.',
32
+ },
33
+ {
34
+ name: 'Start de scan',
35
+ text: 'Klik op de diagnoseknop. Het hulpmiddel stuurt testpakketten naar de IP-adressen die verdacht worden van blokkering.',
36
+ },
37
+ {
38
+ name: 'Interpreteer de resultaten',
39
+ text: 'Als u resultaten in het rood ziet, betekent dit dat die IP onbereikbaar is. Als het groen is, stroomt uw verkeer normaal.',
40
+ },
41
+ {
42
+ name: 'Rapport genereren',
43
+ text: 'U kunt de resultaten gebruiken om het incident te melden bij uw provider als zij legitieme diensten blokkeren.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'nl',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TebasCheckUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Veelgestelde vragen',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Referenties en context',
88
+ bibliography: [
89
+ {
90
+ name: 'Cloudflare: IP-blokkering begrijpen',
91
+ url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
+ },
93
+ {
94
+ name: 'Spaanse regelgeving voor dynamische blokkering',
95
+ url: 'https://www.poderjudicial.es/',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Waarom is alles gestopt met werken?',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Welkom in de wondere wereld van de <strong>"Preventieve Justitie"</strong>. Als je hier bent op een zondagmiddag en legitieme websites stoppen met laden terwijl Twitter perfect werkt, ben je waarschijnlijk een bijkomend slachtoffer van de kruistocht tegen illegale voetbaluitzendingen.',
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'In Spanje hebben rechters een "rode knop" gegeven aan bepaalde sportorganisaties. Met deze knop kunnen ze IP-adressen in realtime blokkeren zonder direct gerechtelijk toezicht van minuut tot minuut. Het probleem is dat ze met een kermisschrootgeweer richten, en ze schieten vaak op gedeelde servers waar naast "illegale wedstrijden" ook ziekenhuizen, universiteiten of je favoriete kookblog wonen.',
113
+ },
114
+ {
115
+ type: 'title',
116
+ text: 'De theorie van het brandende gebouw',
117
+ level: 3,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'Stel je voor dat er een illegale stream wordt uitgezonden vanuit appartement 4B van een wolkenkrabber. De logische oplossing zou zijn om bij 4B aan te kloppen en de stroom af te sluiten, toch?',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Nou, nee. De huidige oplossing is om <strong>de fundering van het hele gebouw op te blazen</strong>.',
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Door het IP-adres van een dienst als Cloudflare te blokkeren, haalt de internetprovider niet alleen de piraat neer, maar ook de andere 50.000 legitieme websites die hetzelfde digitale adres deelden. Als je aan het werk was of aan het studeren en je website gebruikte dat IP-adres: pech gehad, bijkomende schade. Dien een klacht in bij de meester-wapensmid.',
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: 'Wat doet dit diagnostisch hulpmiddel precies?',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Dit hulpmiddel voert een technische analyse uit in drie stappen om te identificeren of uw provider selectieve IP-adresblokkering toepast:',
139
+ },
140
+ {
141
+ type: 'comparative',
142
+ columns: 3,
143
+ items: [
144
+ {
145
+ title: 'Ping naar Google',
146
+ description: 'We controleren of je een "pols" hebt. Als Google niet laadt, is het probleem dat je je wifi-rekening niet hebt betaald. Dit is de basis connectiviteitstest.',
147
+ },
148
+ {
149
+ title: 'Ping naar Cloudflare',
150
+ description: 'We proberen 1.1.1.1 te bereiken. Het is de "kanarie in de kolenmijn" van blokkades in Spanje en het hoofddoel van gerechtelijke blokkades.',
151
+ },
152
+ {
153
+ title: 'Verdict',
154
+ description: 'Als Google werkt en Cloudflare faalt, is het glashelder: je provider past selectieve IP-blokkering van Cloudflare toe.',
155
+ },
156
+ ],
157
+ },
158
+ {
159
+ type: 'title',
160
+ text: 'Impact van dynamische blokkering',
161
+ level: 3,
162
+ },
163
+ {
164
+ type: 'comparative',
165
+ columns: 3,
166
+ items: [
167
+ {
168
+ title: 'Valse positieven',
169
+ description: 'Bedrijfswebsites, persoonlijke blogs en overheidsdiensten kunnen stoppen met werken als ze een IP-adres delen met een ongeautoriseerde streamingserver.',
170
+ },
171
+ {
172
+ title: 'IP filtering',
173
+ description: 'In tegenstelling tot DNS-blokkering voorkomt IP-filtering verbinding op netwerkniveau, waardoor het wijzigen van de DNS onvoldoende is om het probleem op te lossen.',
174
+ },
175
+ {
176
+ title: 'Gebrek aan transparantie',
177
+ description: 'Vaak ziet de gebruiker alleen een "Timeout"-fout zonder te weten of het probleem in hun verbinding zit of een actieve blokkade van de provider is.',
178
+ },
179
+ ],
180
+ },
181
+ {
182
+ type: 'title',
183
+ text: 'Vragen die niemand wil beantwoorden',
184
+ level: 3,
185
+ },
186
+ {
187
+ type: 'list',
188
+ items: [
189
+ '<strong>Is het illegaal om dit te gebruiken?</strong> Nee. Pingen naar een server is net zo illegaal als naar een etalage kijken. Dit hulpmiddel is een passieve netwerkdiagnose. Het breekt geen encryptie, kraakt geen wachtwoorden en opent geen beschermde inhoud. Het vertelt je alleen waarom je je gebruikelijke websites niet kunt bezoeken.',
190
+ '<strong>Hoe los ik het op?</strong> Als je een actieve blokkade hebt, helpt het wijzigen van de DNS niet meer (ze kennen alle trucs). De enige echte oplossing vandaag de dag is een <strong>VPN</strong>. Door je verkeer te versleutelen, kan je provider niet zien wat je vraagt of aan wie, en kan je dus niet "selectief" (of per ongeluk) blokkeren.',
191
+ ],
192
+ },
193
+ {
194
+ type: 'title',
195
+ text: 'Streamer-modus / OBS-widget',
196
+ level: 3,
197
+ },
198
+ {
199
+ type: 'paragraph',
200
+ html: 'Ben je een streamer en wil je de status van de censuur in realtime laten zien in je stream? We hebben een speciale ultra-minimalistische modus gemaakt, met een transparante achtergrond (chroma-ready) en elke 5 minuten een automatische verversing.',
201
+ },
202
+ {
203
+ type: 'list',
204
+ items: [
205
+ '<strong>Stap 1:</strong> Voeg een nieuwe <strong>Browser</strong>-bron toe in OBS.',
206
+ '<strong>Stap 2:</strong> Gebruik deze URL: <code>https://jjlmoya.es/utilidades/tebas-check/stream/</code>',
207
+ '<strong>Stap 3:</strong> Klaar! Er verschijnt een groot pictogram (Groen/Rood) dat aangeeft of je verbinding schoon is of onder een gerechtelijke aanval ligt.',
208
+ ],
209
+ },
210
+ {
211
+ type: 'tip',
212
+ title: 'Juridische mededeling',
213
+ html: '<p>Dit hulpmiddel is niet gelieerd aan enige sportorganisatie, vergemakkelijkt de toegang tot beschermde inhoud niet en omzeilt geen technologische beschermingsmaatregelen (DRM). Het informeert de gebruiker eenvoudigweg dat hun internetverbinding kunstmatig wordt vertraagd.</p>',
214
+ },
215
+ ],
216
+ ui: {
217
+ faqTitle: 'Veelgestelde vragen',
218
+ bibliographyTitle: 'Referenties en context',
219
+ scanning: 'De matrix scannen...',
220
+ seekingBlocks: 'Zoeken naar betonblokken in je glasvezel...',
221
+ blockedTitle: 'BLOKKEREN...',
222
+ blockedDiagnosis: 'Diagnose: "Selectieve Censuur"',
223
+ blockedReason: 'We hebben interferentie gedetecteerd bij uw provider. Cloudflare of DNS worden gemanipuleerd.',
224
+ noInternetTitle: 'GEEN VERBINDING',
225
+ noInternetReason: 'Het lijkt erop dat je geen internettoegang hebt. Controleer je kabel of de rekening.',
226
+ successTitle: 'JE BENT VRIJ',
227
+ successReason: 'Je verbinding ziet er schoon uit. Als er globale blokkades zijn, hebben die geen invloed op jou.',
228
+ retryBtn: 'De justitie opnieuw uitdagen',
229
+ authorNoteTitle: 'Opmerking van de auteur:',
230
+ authorNoteText: 'Ik heb dit hulpmiddel niet volledig kunnen testen omdat ik geen last heb van de "zwarte hand" van Tebas. Als je me wilt helpen de diagnose te verbeteren, neem dan contact met me op.',
231
+ consoleHeader: 'TEBAS_OS v3.2.0',
232
+ statusNegotiating: 'Onderhandelen met je router...',
233
+ statusDodging: 'De gerechtelijke circulaire ontwijken...',
234
+ statusCheckingPirate: 'Controleren of je een piraat bent (knipoog)...',
235
+ statusPinging: 'Pingen naar Google om te zien of je bestaat...',
236
+ statusConsulting: 'Het gedeelde IP-orakel raadplegen...',
237
+ statusCheckingFee: 'Controleren of Tebas de zelfstandigenbijdrage heeft betaald...',
238
+ statusCalculating: 'De kans berekenen om de loterij te winnen...',
239
+ statusDeciphering: 'Poging om je providercontract te ontcijferen...',
240
+ logStarted: "AUTONOOM PROTOCOL 'TEBAS_WATCH' STARTEN...",
241
+ logDetecting: '> Provider en basis connectiviteit detecteren...',
242
+ logIspFound: '> Provider gedetecteerd: ',
243
+ logConnError: '> Basis verbindingsfout',
244
+ logDnsCross: '> Uitvoeren van DNS-datacontrole (DoH vs Lokaal)...',
245
+ logDnsGoogle: '> Echte DNS (Google): ',
246
+ logDnsPoisoned: '> ALERT: Vergiftigde DNS gedetecteerd.',
247
+ logDnsNoDoh: '> DoH niet beschikbaar, overslaan van DNS-controle.',
248
+ logLaunchingProbes: '> Lancering van sondes op kritieke doelen...',
249
+ logIpBlocked: '> Doel {ip}: GEEN REACTIE (Vermoedelijke IP-blokkade)',
250
+ logIpActive: '> Doel {ip}: ACTIEF',
251
+ logAlertInterference: '!!! ALERT GERECHTELIJKE INTERFERENTIE !!!',
252
+ logNoInternet: 'GEEN INTERNETTOEGANG',
253
+ logClean: 'SCHONE VERBINDING. GENIET ERVAN.',
254
+ logDiagError: 'DIAGNOSTISCHE FOUT',
255
+ },
256
+ };