<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Chromium on KnightLi Blog</title>
        <link>https://www.knightli.com/es/tags/chromium/</link>
        <description>Recent content in Chromium on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Tue, 19 May 2026 10:56:50 +0800</lastBuildDate><atom:link href="https://www.knightli.com/es/tags/chromium/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Qué es CloakBrowser: un navegador más realista para Playwright y Puppeteer</title>
        <link>https://www.knightli.com/es/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/</guid>
        <description>&lt;p&gt;&lt;code&gt;CloakHQ/CloakBrowser&lt;/code&gt; es un proyecto open source para automatización de navegador. No es solo una configuración de Playwright ni un pequeño parche en JavaScript. Está construido alrededor de un binario Chromium personalizado para que señales como la huella del navegador, WebGL, Canvas, audio, fuentes, GPU, pantalla, WebRTC y temporización de red se parezcan más a un navegador real.&lt;/p&gt;
&lt;p&gt;URL del proyecto: &lt;a class=&#34;link&#34; href=&#34;https://github.com/CloakHQ/CloakBrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/CloakHQ/CloakBrowser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En el momento de escribir este artículo, la API de GitHub mostraba unas 15k estrellas, Python como lenguaje principal y licencia MIT. El README lo define de forma directa: un Stealth Chromium que puede reemplazar el lanzador habitual de Playwright o Puppeteer.&lt;/p&gt;
&lt;h2 id=&#34;qué-problema-intenta-resolver&#34;&gt;Qué problema intenta resolver
&lt;/h2&gt;&lt;p&gt;Muchos scripts de automatización exponen señales claras cuando corren sobre un Headless Chromium normal, por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;navigator.webdriver&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rastros en el user agent headless.&lt;/li&gt;
&lt;li&gt;Huellas poco naturales de plugins, fuentes, pantalla o GPU.&lt;/li&gt;
&lt;li&gt;Diferencias entre CDP y entradas de usuario reales.&lt;/li&gt;
&lt;li&gt;Perfiles temporales sin historial normal de navegación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CloakBrowser lleva parte de esos cambios a la capa de código fuente y binario de Chromium, en lugar de depender solo de configuración en tiempo de ejecución o parches JS. Para usuarios de Playwright, el uso se mantiene cercano al flujo habitual, pero el navegador subyacente pasa a ser el build personalizado del proyecto.&lt;/p&gt;
&lt;p&gt;Este tipo de herramienta encaja en pruebas de automatización autorizadas, validaciones de compatibilidad, pruebas internas de sistemas antiabuso y experimentos con entornos de navegador para agentes. No debe usarse para accesos no autorizados, abuso de cuentas, evasión de controles de riesgo o incumplimiento de términos de servicio.&lt;/p&gt;
&lt;h2 id=&#34;uso-básico&#34;&gt;Uso básico
&lt;/h2&gt;&lt;p&gt;Instalación en Python:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install cloakbrowser
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Instalación en JavaScript / Node.js:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install cloakbrowser playwright-core
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El ejemplo en Python del README es muy parecido a Playwright:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;cloakbrowser&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;launch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new_page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://protected-site.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;En JavaScript también es directo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;cloakbrowser&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;newPage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://protected-site.com&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;browser-profile-manager&#34;&gt;Browser Profile Manager
&lt;/h2&gt;&lt;p&gt;CloakBrowser también ofrece Browser Profile Manager para administrar perfiles, entornos de prueba y tareas repetidas de automatización.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -p 8080:8080 -v cloakprofiles:/data cloakhq/cloakbrowser-manager
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Después de iniciarlo, abre:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El valor de un gestor de perfiles está en no depender siempre de un perfil temporal desechable. En pruebas largas, validaciones de compatibilidad y experimentos con agentes, los perfiles estables suelen ser más fáciles de depurar.&lt;/p&gt;
&lt;h2 id=&#34;diferencias-frente-a-playwright-normal&#34;&gt;Diferencias frente a Playwright normal
&lt;/h2&gt;&lt;p&gt;Playwright se centra en controlar el navegador de forma fiable. CloakBrowser se centra en que el entorno del navegador resulte más natural.&lt;/p&gt;
&lt;p&gt;En resumen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playwright ofrece la API de automatización.&lt;/li&gt;
&lt;li&gt;CloakBrowser ofrece un runtime de navegador personalizado.&lt;/li&gt;
&lt;li&gt;Playwright sirve para pruebas y automatización general.&lt;/li&gt;
&lt;li&gt;CloakBrowser apunta más a comportamiento realista y coherencia de huellas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto no significa que CloakBrowser resuelva mágicamente todos los sistemas de detección. Un sitio puede evaluar comportamiento, frecuencia, reputación de cuenta, red y reglas de negocio.&lt;/p&gt;
&lt;h2 id=&#34;precauciones&#34;&gt;Precauciones
&lt;/h2&gt;&lt;p&gt;Primero, la conformidad importa. Tener un entorno más realista no significa que todo uso esté permitido. La automatización debe respetar permisos, límites de frecuencia y términos de la plataforma.&lt;/p&gt;
&lt;p&gt;Segundo, el proyecto depende de un Chromium personalizado. Conviene revisar compatibilidad de versiones, actualizaciones de seguridad y origen de los binarios antes de usarlo en producción.&lt;/p&gt;
&lt;p&gt;Tercero, la huella del navegador es solo una parte. Si el script actúa de forma poco natural, envía demasiadas acciones o usa cuentas de manera anómala, el riesgo sigue ahí.&lt;/p&gt;
&lt;h2 id=&#34;para-quién-es&#34;&gt;Para quién es
&lt;/h2&gt;&lt;p&gt;CloakBrowser encaja mejor con desarrolladores y equipos que ya usan Playwright, Puppeteer, agentes de navegador, automatización QA o pruebas de compatibilidad web. No es la opción más simple para quien solo busca un producto no-code.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;CloakBrowser es interesante porque lleva la automatización de navegador desde &amp;ldquo;controlar un headless&amp;rdquo; hacia &amp;ldquo;usar un entorno más parecido al de un usuario real&amp;rdquo;. Para pruebas, experimentos con agentes e investigación controlada, merece seguimiento. En uso real, la base sigue siendo autorización, cumplimiento y control de riesgos.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
