R.I.P. Google’s cache
El algún momento del día 23 de Septiembre el cache de Google dejó de funcionar y con eso se acabó el acceso a la información de algunos sitios.
Algunas páginas, especialmente las de noticias, que tengan algún tipo de paywall podían ser leídas utilizando el cache de Google simplemente agregando cache: seguido de la URL, esto funcionaba tanto en Chrome como Firefox.
Si bien estaba al tanto de que el servicio iba a ser discontinuado eventualmente desde que lo anunciaron a principios de este año nunca tuve tiempo de revisar una extensión que utilizaba este servicio. Antes de archivarla (porque no tenía muchas intenciones de arreglar el código honestamente) decidí probar si el sitio que estaba utilizando para recuperar las notas del cache de Google respondía al bot de noticias de la misma empresa, un dato no tan conocido es que muchas páginas que ofrecen contentido atrás de una suscripción usualmente dejan expuesto ese contenido no solo a sus suscriptores sino también a algunos crawlers por varios motivos (mayor exposición en las busquedas, SEO, etc).
Veamos que nos dice el viejo y querido curl:
curl -A Googlebot-News https://www.lagaceta.com.ar/nota/*/*.html > output.html
Revisando el archivo output.html vemos para sorpresa de nadie que si funciona, en caso de que no hubiese funcionado hubieramos tenido una respuesta similar a esta:
<body>
<div id="cf-wrapper">
<div class="cf-alert cf-alert-error cf-cookie-error" id="cookie-alert" data-translate="enable_cookies">Please enable cookies.</div>
<div id="cf-error-details" class="cf-error-details-wrapper">
<div class="cf-wrapper cf-header cf-error-overview">
<h1 data-translate="block_headline">Sorry, you have been blocked</h1>
<h2 class="cf-subheadline"><span data-translate="unable_to_access">You are unable to access</span> lagaceta.com.ar</h2>
</div><!-- /.header -->
<div class="cf-section cf-highlight">
<div class="cf-wrapper">
<div class="cf-screenshot-container cf-screenshot-full">
<span class="cf-no-screenshot error"></span>
</div>
</div>
</div><!-- /.captcha-container -->
<div class="cf-section cf-wrapper">
<div class="cf-columns two">
<div class="cf-column">
<h2 data-translate="blocked_why_headline">Why have I been blocked?</h2>
<p data-translate="blocked_why_detail">This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.</p>
</div>
<div class="cf-column">
<h2 data-translate="blocked_resolve_headline">What can I do to resolve this?</h2>
<p data-translate="blocked_resolve_detail">You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.</p>
</div>
</div>
</div><!-- /.section -->
<div class="cf-error-footer cf-wrapper w-240 lg:w-full py-10 sm:py-4 sm:px-8 mx-auto text-center sm:text-left border-solid border-0 border-t border-gray-300">
<p class="text-13">
<span class="cf-footer-item sm:block sm:mb-1">Cloudflare Ray ID: <strong class="font-semibold">7d0xf2cbf2bf20xf297d</strong></span>
<span class="cf-footer-separator sm:hidden">•</span>
<span id="cf-footer-item-ip" class="cf-footer-item hidden sm:block sm:mb-1">
Your IP:
<button type="button" id="cf-footer-ip-reveal" class="cf-footer-ip-reveal-btn">Click to reveal</button>
<span class="hidden" id="cf-footer-ip">133.701.23.4</span>
<span class="cf-footer-separator sm:hidden">•</span>
</span>
<span class="cf-footer-item sm:block sm:mb-1"><span>Performance & security by</span> <a rel="noopener noreferrer" href="https://www.cloudflare.com/5xx-error-landing" id="brand_link" target="_blank">Cloudflare</a></span>
</p>
</body>
Ahora solo queda hacer una pequeña modificación al código original para utilizar el USER-AGENT acorde y obtener el mismo resultado, incluso con mejor performance.
A veces cuando se cierra una ventana se abren 3 puertas.