Cookies: declarar las reales de Next.js, quitar las inventadas

La página venía de ultimowow y declaraba 26 cookies que este sitio NO pone.
Empezando por PHPSESSID, que es de PHP: aquí no hay PHP. Además todo el bloque
de Cloudflare (cf_clearance, __cf_bm, _cfuvid, CF_VERIFIED_DEVICE_*,
_cf_logged_in, sparrow_id), Google Analytics (_ga, _gid, _gat), Facebook
(_fbp, _fbc, fr), Adobe (AMCV_*), Zaraz (zaraz-consent, cfz_*) y las de
preferencias del foro/visor 3D de ultimowow (comments_sort, temp_default_3dmodel).

Se comprobó en un navegador contra producción, no de memoria: las únicas cookies
son NEXT_LOCALE (idioma), ns_cookie_consent (consentimiento, 1 año) y
nightspire_session (sesión, httpOnly). Turnstile NO pone ninguna en nuestro
dominio, y el sitio NO está detrás de un proxy de Cloudflare (la IP es del
servidor y no llega cabecera cf-ray), así que ninguna cookie de Cloudflare
aplicaba. Tampoco hay Google Analytics ni píxeles: no aparecen en el código.

Terceros medidos en el navegador: challenges.cloudflare.com (Turnstile, solo en
formularios), wow.zamimg.com (iconos de Wowhead), cdnjs.cloudflare.com
(tipografías/iconos) y YouTube (solo si un creador tiene vídeo configurado).

40 claves de traducción eliminadas en ES y EN; 43 usadas = 43 definidas, sin
huérfanas.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-15 15:40:28 +00:00
parent 6d974f7773
commit 5362787a34
3 changed files with 37 additions and 180 deletions
+11 -78
View File
@@ -46,87 +46,19 @@ export default async function CookiesPage() {
<th>{t('cookies.thDuration')}</th>
</tr>
</thead>
{/* Las 3 cookies REALES de la web. Se comprobaron en un navegador
contra el sitio en producción: no hay ninguna más. */}
<tbody>
<tr><td>PHPSESSID</td><td>NightSpire</td><td>{t('cookies.nPurpose1')}</td><td>{t('cookies.durSession')}</td></tr>
<tr><td>NEXT_LOCALE</td><td>NightSpire</td><td>{t('cookies.nPurpose1')}</td><td>{t('cookies.durSession')}</td></tr>
<tr><td>ns_cookie_consent</td><td>NightSpire</td><td>{t('cookies.nPurpose2')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>cf_clearance</td><td>Cloudflare</td><td>{t('cookies.nPurpose3')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>__cf_bm</td><td>Cloudflare</td><td>{t('cookies.nPurpose4')}</td><td>{t('cookies.dur30Min')}</td></tr>
<tr><td>_cfuvid</td><td>Cloudflare</td><td>{t('cookies.nPurpose5')}</td><td>{t('cookies.durSession')}</td></tr>
<tr><td>CF_VERIFIED_DEVICE_*</td><td>Cloudflare</td><td>{t('cookies.nPurpose6')}</td><td>{t('cookies.dur30Days')}</td></tr>
<tr><td>_cf_logged_in</td><td>Cloudflare</td><td>{t('cookies.nPurpose7')}</td><td>{t('cookies.durSession')}</td></tr>
<tr><td>cf_chl_*</td><td>Cloudflare Turnstile</td><td>{t('cookies.nPurpose8')}</td><td>{t('cookies.durVariable')}</td></tr>
<tr><td>cf.turnstile.u</td><td>Cloudflare Turnstile</td><td>{t('cookies.nPurpose9')}</td><td>{t('cookies.durPersistent')}</td></tr>
<tr><td>zaraz-consent</td><td>Cloudflare Zaraz</td><td>{t('cookies.nPurpose10')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>cfz_*</td><td>Cloudflare Zaraz</td><td>{t('cookies.nPurpose11')}</td><td>{t('cookies.durVariable')}</td></tr>
<tr><td>nightspire_session</td><td>NightSpire</td><td>{t('cookies.nPurpose3')}</td><td>{t('cookies.durSession')}</td></tr>
</tbody>
</table>
<p className="third-brown">{t.rich('cookies.cfNote', { link: (c) => <a href="https://www.cloudflare.com/cookie-policy/" target="_blank" rel="noopener">{c}</a> })}</p>
<br />
<span className="second-brown">{t('cookies.prefTitle')}</span>
<p>{t('cookies.prefDesc')}</p>
<table className="ns-cookie-table">
<thead>
<tr>
<th>{t('cookies.thCookie')}</th>
<th>{t('cookies.thProvider')}</th>
<th>{t('cookies.thPurpose')}</th>
<th>{t('cookies.thDuration')}</th>
</tr>
</thead>
<tbody>
<tr><td>comments_sort</td><td>www.nightspire.gg</td><td>{t('cookies.prefPurpose1')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>wwcomments_sort</td><td>www.nightspire.gg</td><td>{t('cookies.prefPurpose2')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>temp_default_3dmodel</td><td>www.nightspire.gg</td><td>{t('cookies.prefPurpose3')}</td><td>{t('cookies.dur1Year')}</td></tr>
</tbody>
</table>
<span className="second-brown">{t('cookies.analyticsTitle')}</span>
<p>{t('cookies.analyticsDesc')}</p>
<table className="ns-cookie-table">
<thead>
<tr>
<th>{t('cookies.thCookie')}</th>
<th>{t('cookies.thProvider')}</th>
<th>{t('cookies.thPurpose')}</th>
<th>{t('cookies.thDuration')}</th>
</tr>
</thead>
<tbody>
<tr><td>_ga</td><td>Google Analytics</td><td>{t('cookies.aPurpose1')}</td><td>{t('cookies.dur2Years')}</td></tr>
<tr><td>_ga_*</td><td>Google Analytics</td><td>{t('cookies.aPurpose2')}</td><td>{t('cookies.dur2Years')}</td></tr>
<tr><td>_gid</td><td>Google Analytics</td><td>{t('cookies.aPurpose3')}</td><td>{t('cookies.dur24Hours')}</td></tr>
<tr><td>_gat</td><td>Google Analytics</td><td>{t('cookies.aPurpose4')}</td><td>{t('cookies.dur1Minute')}</td></tr>
<tr><td>sparrow_id</td><td>Cloudflare</td><td>{t('cookies.aPurpose5')}</td><td>{t('cookies.dur1Year')}</td></tr>
</tbody>
</table>
<span className="second-brown">{t('cookies.marketingTitle')}</span>
<p>{t('cookies.marketingDesc')}</p>
<table className="ns-cookie-table">
<thead>
<tr>
<th>{t('cookies.thCookie')}</th>
<th>{t('cookies.thProvider')}</th>
<th>{t('cookies.thPurpose')}</th>
<th>{t('cookies.thDuration')}</th>
</tr>
</thead>
<tbody>
<tr><td>_gcl_*</td><td>Google</td><td>{t('cookies.mPurpose1')}</td><td>{t('cookies.dur90Days')}</td></tr>
<tr><td>IDE</td><td>Google DoubleClick</td><td>{t('cookies.mPurpose2')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>_fbp</td><td>Facebook (Meta)</td><td>{t('cookies.mPurpose3')}</td><td>{t('cookies.dur3Months')}</td></tr>
<tr><td>_fbc</td><td>Facebook (Meta)</td><td>{t('cookies.mPurpose4')}</td><td>{t('cookies.dur3Months')}</td></tr>
<tr><td>fr</td><td>Facebook (Meta)</td><td>{t('cookies.mPurpose5')}</td><td>{t('cookies.dur3Months')}</td></tr>
<tr><td>AMCV_*</td><td>Adobe Experience Cloud</td><td>{t('cookies.mPurpose6')}</td><td>{t('cookies.dur2Years')}</td></tr>
<tr><td>_q_state_*</td><td>{t('cookies.providerVarious')}</td><td>{t('cookies.mPurpose7')}</td><td>{t('cookies.durVariable')}</td></tr>
</tbody>
</table>
<p className="third-brown">{t('cookies.thirdPartyNote')}</p>
<span className="second-brown">{t('cookies.noneTitle')}</span>
<p>{t('cookies.noneDesc')}</p>
<br />
<span className="second-brown">{t('cookies.embeddedTitle')}</span>
@@ -140,11 +72,12 @@ export default async function CookiesPage() {
<th>{t('cookies.thMoreInfo')}</th>
</tr>
</thead>
{/* Terceros que carga la web de verdad, medidos en el navegador. */}
<tbody>
<tr><td>YouTube (Google)</td><td>{t('cookies.embType1')}</td><td><a href="https://policies.google.com/privacy" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>Discord</td><td>{t('cookies.embType2')}</td><td><a href="https://discord.com/privacy" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>Twitch</td><td>{t('cookies.embType3')}</td><td><a href="https://www.twitch.tv/p/legal/privacy-notice/" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>Facebook (Meta)</td><td>{t('cookies.embType4')}</td><td><a href="https://www.facebook.com/privacy/policy/" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>Cloudflare Turnstile</td><td>{t('cookies.embType1')}</td><td><a href="https://www.cloudflare.com/cookie-policy/" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>Wowhead (zamimg.com)</td><td>{t('cookies.embType2')}</td><td><a href="https://www.wowhead.com/privacy-policy" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>cdnjs (Cloudflare)</td><td>{t('cookies.embType3')}</td><td><a href="https://www.cloudflare.com/privacypolicy/" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>YouTube (Google)</td><td>{t('cookies.embType4')}</td><td><a href="https://policies.google.com/privacy" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
</tbody>
</table>