Bloqueado por hacer scraping

freishner

Capo
Se incorporó
16 Noviembre 2021
Mensajes
403
A quien no le ha pasado. Por suerte, Drive tiene una alternativa gratuita para hacer que Google haga peticiones GET por uno.

Código:
GET /viewerng/viewer?embedded=false&url=https://capa9.net
Host: drive.google.com

No se hagan ilusiónes todavía, no es un simple GET. Tratándose de Google, todo tiene truco.
Si miran en la tab network del dev tools, verán un request secundario que trae la data.

Código:
GET /viewerng/text?id=[ID-REQUEST]&page=0
Host: drive.google.com

Y para accesar a dicho ID hay que mirar el HTML resultante de la primera petición. Particularmente del único tag SCRIPT que viene con código.

JavaScript:
_init([["0",null,null,null,null,1,null,null,null,null,0,[1],0,null,null,"https://drive.google.com",null,null,null,null,null,1,null,null,null,null,null,null,null,null,null,null,[["core-670-RC1","prod"],12,1,1],null,null,null,null,[null,null,null,null,"https://accounts.google.com/ServiceLogin?passive\u003d1209600\u0026continue\u003dhttps://drive.google.com/viewerng/viewer?embedded%3Dfalse%26url%3Dhttps://capa9.net\u0026hl\u003des\u0026followup\u003dhttps://drive.google.com/viewerng/viewer?embedded%3Dfalse%26url%3Dhttps://capa9.net",null,null,null,0],null,null,null,null,null,null,null,null,null,null,1,null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1],[null,"https://capa9.net","/viewerng/thumb?*****",null,null,null,null,null,null,"/viewerng/upload?*****",null,"text/html",null,null,1,null,null,null,"https://capa9.net",null,1,0,null,null,null,null,null,"/viewerng/standalone/refresh?embedded\u003dfalse\u0026url\u003dhttps://capa9.net",[null,null,"meta?id\u003d[ID-REQUEST]","text?id\u003d[ID-REQUEST]",null,"status?id\u003d[ID-REQUEST]"],null,null,null,"net"],"","",2]);</script>

Mas simplificado, extraído de al final

Código:
text?id\u003d[ID-REQUEST]

Cuando hagan la petición, obtendrán un JSON como el siguiente

JSON:
{
    "mimetype": "text/html",
    "data": "<!DOCTYPE html><html id=\"XF\" lang=\"es-CL\" dir=\"LTR\" data-app=\"public\" data-template=\"page_view\" data-container-key=\"node-744\"..."
}

Útil, pero solo para un GET. Siempre y cuando el sitio no tenga acceso restringido a nivel nacional. Algunos lo tienen, pero igual le dan la pasada al buscador. Para otros efectos, en gratuito, está UrlFetchApp, siempre que se respete el límite de para el peso de la respuesta, y el timeout de la ejecución.
 
Subir