Amazon midudev web scraping TypeScript GitHub Actions Turso

Rastrejar preus d’Amazon amb TypeScript i GitHub Actions

Tutorial per extreure preus d’Amazon, desar-ne l’historial a Turso i automatitzar les captures amb GitHub Actions.

Un rastrejador de preus útil no es limita a llegir una pàgina una vegada. Ha d’identificar productes, extreure dades consistents, conservar-ne l’historial i repetir l’operació sense intervenció manual. En aquest tutorial, Midudev construeix aquest flux amb TypeScript, una API de scraping, Turso i GitHub Actions.

El títol promet un scraping «indetectable», però cap sistema pot garantir que una web no el detecti ni el bloquegi. Els servidors poden canviar el marcatge, aplicar límits, exigir CAPTCHA o modificar les condicions d’accés. La demostració és més útil si s’entén com una arquitectura resistent als errors, no com una manera de saltar controls sense límits.

1. Del producte a l’ASIN i l’HTML

A 00:45, el vídeo comença pel scraper manual. Cada producte d’Amazon té un ASIN, l’identificador que apareix habitualment després de /dp/ a l’URL. El projecte llegeix una llista d’ASIN des d’una variable d’entorn i construeix l’adreça correcta segons la botiga, com ara amazon.es.

La primera versió fa un fetch, envia un User-Agent i converteix la resposta a text. Després busca el títol, el preu i altres camps dins l’HTML. És una bona prova per entendre el recorregut complet, però els selectors basats en fragments de marcatge o expressions regulars són fràgils: una classe nova, un preu carregat dinàmicament o una pàgina alternativa poden trencar l’extracció.

El repositori públic del projecte permet revisar les peces reals: el rastrejador en TypeScript, la base de dades, el tauler d’Astro i el workflow. El README adverteix que el mode manual pot fallar per CAPTCHA o bloqueig i recomana tractar-lo com una demostració educativa.

2. Per què un fetch repetit deixa de funcionar

A 03:49, Midudev provoca peticions repetides fins que Amazon respon amb un límit. Una botiga gran no només compta sol·licituds: pot observar la IP, les capçaleres, les galetes, la velocitat, la regió i el comportament del client. També pot retornar una pàgina de verificació amb estat correcte, de manera que comprovar només el codi HTTP no és suficient.

Un rastrejador robust ha de validar el contingut. Cal rebutjar preus absents o fora de rang, detectar pàgines de CAPTCHA, conservar l’últim valor fiable i registrar l’error. Els reintents necessiten espera exponencial i aleatorietat; repetir immediatament una petició bloquejada sol empitjorar el problema.

També convé limitar la freqüència, agrupar productes i evitar descarregar dades que no s’utilitzaran. «Poder» accedir a una pàgina no equival a tenir permís il·limitat per reutilitzar-ne el contingut. Abans de desplegar el servei s’han de revisar les condicions del lloc, robots.txt, els drets sobre les dades i la normativa aplicable.

3. API de scraping i proxies: què resolen

A 04:36, la demostració passa a Decodo, patrocinador del vídeo. El servei ofereix proxies i una API que rep un ASIN, visita la pàgina i retorna una estructura JSON amb camps com títol, preu, disponibilitat, valoració i imatges. Això trasllada al proveïdor la rotació d’IP, els reintents i part de l’adaptació al lloc.

A 07:47, el codi llegeix el testimoni de Decodo des de l’entorn, construeix la consulta i transforma la resposta complexa en un ProductSnapshot. Aquesta capa de normalització és clau: la resta de l’aplicació només necessita una interfície estable, encara que després es canviï de proveïdor.

Un proxy no converteix automàticament una extracció en legítima ni elimina tots els límits. També introdueix cost, dependència externa i tractament de dades per un tercer. Per a casos compatibles amb el programa d’afiliació, l’API oficial és una alternativa que cal avaluar. La documentació d’Amazon sobre bones pràctiques de la Product Advertising API exigeix respectar l’acord, aplicar controls de taxa i demanar només els recursos necessaris; aquella PA-API ja dirigia els usuaris cap a la nova Creators API.

4. Guardar un historial que tingui sentit

A 10:24, el tutorial crea una base de dades Turso, basada en libSQL. La taula price_snapshots conserva un registre per observació amb l’ASIN, el títol, el preu, la moneda, la disponibilitat, la URL i l’instant de captura. Un índex per producte i data accelera la consulta de la sèrie temporal.

La base de dades no hauria de confondre «sense preu» amb zero. També és prudent conservar moneda i botiga, perquè 399 euros a Espanya no són comparables directament amb 399 dòlars als Estats Units. Per evitar duplicats, es pot imposar una clau única per ASIN i interval o actualitzar la mostra del dia en lloc d’inserir-ne moltes.

El tauler d’Astro consulta les mostres, mostra l’últim preu i dibuixa l’evolució. En producció convindria afegir una marca de qualitat, l’origen de cada dada i alertes només després de confirmar una baixada. Un error d’extracció que llegeixi «4,99» en lloc de «499» no hauria d’enviar una falsa ganga a tots els usuaris.

5. Automatitzar amb GitHub Actions sense filtrar secrets

A 13:47, Midudev presenta un workflow que s’executa cada dia a les 07:00 UTC i també manualment amb workflow_dispatch. La tasca descarrega el repositori, prepara pnpm i Node.js, instal·la dependències i inicia el rastrejador.

La documentació de GitHub Actions recomana desar testimonis i credencials com a secrets, injectar-los a l’entorn només quan cal i evitar imprimir-los. El projecte necessita DECODO_AUTH_TOKEN, TURSO_DATABASE_URL, TURSO_AUTH_TOKEN i la llista d’ASIN. La base de dades hauria d’emprar un testimoni amb els permisos mínims necessaris.

Els horaris programats no són un rellotge de precisió i treballen en UTC. També cal impedir execucions solapades, fixar versions de les accions, definir un temps màxim i avisar quan hi ha diversos errors seguits. Una automatització silenciosa que deixa d’escriure dades durant setmanes dona una falsa sensació de fiabilitat.

Conclusions

El tutorial uneix bé quatre capes que sovint s’expliquen per separat: extracció, normalització, persistència i programació. Amb els ASIN com a entrada, una funció scrapeProduct intercanviable i mostres temporals a Turso, el projecte pot canviar d’API o d’interfície sense reescriure-ho tot.

La millora principal és abandonar la promesa literal d’«indetectable». Un servei de proxies pot reduir bloquejos, però la qualitat depèn de validar cada resposta, controlar la taxa, protegir secrets i respectar les regles de la font. Amb aquestes precaucions, el repositori és una base clara per aprendre a construir un rastrejador de preus mantenible.

Contrast i context

Fonts consultades

4 fonts
  1. 01
  2. 02
  3. 03
  4. 04

Font de treball

Transcripció amb marques de temps

15 fragments
Consulta la transcripció
  1. 0:00 , obre el vídeo en una pestanya nova

    Hoy te enseño cómo montar un rastreador de precios de Amazon con Typesc, pero no una demo de sacar el precio una vez y ya está. Vamos a construir un scrapping en condiciones que consulte el título, el precio, que guardemos un histórico en una base de datos, que lo automaticemos con GHUp actions y que no nos bloqueen nunca utilizando de codo. Así que sí, vamos a construir como un tracker de precios porque claro, hacer scrapping parece muy fácil. Haces un fetch y ya está, recuperas los datos y venga a extraerlos. Y esto funcionar funciona. Ya ves que como tienes el HTML te pones aquí a buscar dónde tienes el precio y ya está. Pero cuando estás con webs más serias empiezan los problemas. Tienes problemas de rate limit, o sea, que te limitan la tasa de veces que puedes hacer la petición. Te bloquean la IP, el HTML cambia contenido dinámico, los capchas y en ese momento precioso en el que crees que todo funciona, pero que en realidad te está devolviendo basura. Pero bueno, que no te preocupes porque vamos a empezar desde el principio. Que sepas que todo el código de lo que vas a ver en este vídeo lo tienes disponible en este repositorio que en la descripción te dejo el enlace para que no te lo pierdas. Y de hecho vamos a ver cómo hacer un scrapping manual [carraspeo] rápidamente. Este archivo lo

  2. 1:05 , obre el vídeo en una pestanya nova

    tienes en el repositorio, pero te lo voy a explicar paso a paso para que lo entiendas porque es básico. Tengo una función principal en este archivo manualscrapper.ts, que lo que [resoplido] hace es iterar sobre los assins. ¿Qué es esto del asin? No te asustes. Estos son los identificadores únicos en la store de Amazon de los productos. ¿Ves? Los he puesto aquí como variables de entorno [resoplido] en la tienda de Amazon en España. Y los assins los sacas de la URL. Aquí, fíjate, este sería el asin de este producto, pero seguramente puedes ir a otro producto y encontrarte esta URL supergre y luego, ¿dónde está la SIM? Está justo después. Este es el identificador que necesitas. Y entonces, ¿qué pasa con todo esto? Porque esto no sirve absolutamente para nada. De hecho, esto puedes poner aquí, mira, puedes poner lo que quieras, puedes poner aquí lo que quieras. Le das al enter y funciona perfectamente. ¿Lo sabías? Bueno, pues ya sabes, le puedes hacer una broma a tu amigo, pones aquí PlayStation 5, se pasa la URL y se asusta. Pero bueno, el tema es que lo importante de la URL es esto. Sacas ese identificador, te lo traes para aquí. Ahora iteramos sobre cada uno de estos identificadores y llamamos a la función scrape. Esto, ¿qué es lo que hace? Pues

  3. 2:19 , obre el vídeo en una pestanya nova

    vamos a hacer una petición sobre la URL correcta que hemos construido aquí con el dominio si españa, si es Estados Unidos o lo que sea y pasándole el identificador de producto. hacemos un fetch, que al hacer un fetch es como hacer esto, ver código fuente de la página, recuperar todo el contenido y como es simplemente el HTML lo que queremos, por eso aquí lo que estamos haciendo es un response punto text, por eso no estamos convirtiendo a Jason ni nada, sino que es un punto text. Cosas importantes que de headers le estamos pasando un user agent como si fuésemos un usuario. Esto cuando hacemos scrapping manual pues es normal para que no nos bloqueen. Luego que si hay algún error hacemos un throughout new error y aquí lo que hacemos es un console lo log del HTML para ver qué es lo que nos ha devuelto. De hecho, si vamos a la terminal y yo ejecuto npx TSX, esto es porque estoy utilizando Typescript, ¿vale? Para no tener que compilarlo y ejecutarlo al vuelo. Ejecutamos este scrapper, ¿vale? Y fíjate que en cuanto termine, pues aquí tengo todo el HTML. Qué graciosos la gente de Amazon metiendo estas cosas. En ese HTML es que tenemos que extraer toda la información. Y para eso, pues, ¿qué hacemos? Pues utilizar un Regex. Lo que hacemos aquí, fíjate, para encontrar el título del

  4. 3:32 , obre el vídeo en una pestanya nova

    producto, pues buscamos el elemento del productemos lo de dentro. Y finalmente, una vez que hemos hecho todas las regs, lo que hacemos es devolver cada uno de los campos. Y bueno, así te puedes defender mientras no cambie el HTML porque si no lo tienes que cambiar todo y ya está. Lo peor en realidad es que ya le he dado unas cuantas veces, pero voy a estar dándole hasta que me pase esto, ¿vale? Y es que de vez en cuando Amazon puede detectar que estás haciendo demasiadas peticiones y te va a dar un 421, te va a hacer un rate limit, te va a limitar el número de peticiones que vas a poder hacer. Es verdad que si tú de repente le vuelves a dar, a lo mejor ha pasado suficiente tiempo, pues puede volver a funcionar sin ningún problema, ¿vale? Pero si tú vuelves a ejecutar todo el rato lo mismo, cada vez el rey limito y es más fácil que te vuelva a salir. Vale, aquí vamos a ver. Ahora mismo pues habrá pasado un minuto y me estará permitiendo hacerlo. Ahora me va a dejar fatal. Pues voy a decir, "No, pues ya no." Ah, no, ahí está. Vale, otra vez. Fíjate que me ha vuelto a salir este error. Obviamente si tú haces un scrapping, pues muy corto, no pasa nada. Pero para arreglar esto podríamos utilizar los servicios de Decodo. Decodo es un servicio que te permite no tener

  5. 4:42 , obre el vídeo en una pestanya nova

    que enfocarte tanto en la parte de la infraestructura, sino más en el dato. ¿Por qué? Porque tiene servicios tanto de proxy como directamente para hacer scrapping. Como a mí lo que me interesa es construir un tracker y no pelearme con esto, pues me viene genial. Podríamos utilizar los proxis de decodo, que está muy bien porque te permite acceder a más de 115 millones de IPs diferentes en más de 195 localizaciones. O sea, que sería imposible que Amazon me pudiera bloquear porque estaría cambiando todo el rato la IP. ¿Y cómo se utilizaría? Pues así, aquí tienes este código de No lo puedes ver. utilizaríamos el https proxy agent, donde accedemos con la URL de Decodo. Tendríamos que acceder también con nuestro nombre de usuario y password, pero esto lo que haría es que cuando hagamos el fetch, esto va a tener este agente que es el que se va a encargar de tener una IP diferente y hacer la petición por nosotros. Pero por encima de esto también tienen los scrappers que ya están utilizando toda esta plataforma y tú no te tienes que pelear y ya están preparados para sacar información de cualquier web y con algunas plantillas específicas para sacar, por ejemplo, de Amazon. Que sepas que en este vídeo nos está apoyando Decodo y por eso tengo en la descripción un enlace con una prueba

  6. 5:55 , obre el vídeo en una pestanya nova

    gratuita para el Webcrapping API y que también te da un 10% de descuento por si te ha gustado el servicio y quieres seguir utilizándolo en tus próximos proyectos. En este caso le vamos a dar a start free y ves, yo ya tengo aquí el webscrapping API. Podemos buscar aquí, vamos a ir al API Playground. Fíjate que aquí tenemos el web scrapping más general, pero podemos ponerlo en Amazon. Amazon Product. Aquí le vamos a poner pues justamente esta ID de aquí. Podemos desactivar el JavaScript rendering, que es interesante, pero en este caso lo que va a hacer es que tarde más si necesariamente. Le decimos que el output es JSON. Le indicamos que la tienda es la española. Importante. Podemos aquí cambiar más cosas, pero bueno, no es importante. Y ahora simplemente vamos a enviar la petición. Voy a cambiarlo en Note para que veamos aquí cómo es la API. Le voy a enviar la petición y en 3 segundos tenemos toda la información. Fíjate que tenemos aquí, pues yo que sé, los bullet points, la categoría, la caja de compra. Aquí tendríamos toda la información. O sea, es que tenemos mucha más información de la que parecía antes, ¿eh? Porque es que nos ha convertido toda la página web a un Jason de, por ejemplo, la descripción tenemos, o sea, no hemos tenido que pelearnos con absolutamente nada. Y aquí tenemos esta

  7. 7:10 , obre el vídeo en una pestanya nova

    información, todas las imágenes, también tenemos el precio, tenemos también por aquí todos los detalles, el nombre del producto, bueno, una pasada, tenemos aquí un montón de información, rating, tenemos es que hasta el breakdown, las reviews, nos ha sacado un montón de información. Esto obviamente se puede personalizar para que nos devuelva más o menos información, pero bueno, cuanta más información tengamos pues mucho mejor. Ahora, volviendo a la petición, fíjate aquí que nos podemos copiar todo esto. Aquí está mi token. No te lo copies, utiliza el tuyo, que te he dejado el enlace para que consigas el tuyo. Pero bueno, nos podemos copiar todo este código y vamos a volver a mi proyecto. Antes hemos visto el manual scrapper para hacerlo manualmente haciendo un fetch a saco. Ahora voy a ir al archivo scrapper. TS. Y fíjate que aquí tengo el método Scrappe Product. Vale, pues lo que vamos a hacer aquí es pegar lo que había copiado. Aquí, ojo que te sale el token, no me lo robes. Entonces, para el token, yo lo voy a sacar de la variable de entorno. Tengo esta función get decodo out, que es la que voy a utilizar aquí, y directamente voy a ir a las variables de entorno y voy a rellenar este decodo out token. Para eso volvemos al dashboard de decodo y nos tenemos que copiar este basic

  8. 8:24 , obre el vídeo en una pestanya nova

    authentication token. Le damos aquí a copiar. Volvemos por aquí. Nos vemos a las variables de entorno. Ahora mírame a los ojos. Mírame a los ojos. No mires esto. No mires. Ya está. Ahora ya podemos volver por aquí. Entonces la respuesta, fíjate una cosita importante, la query le tenemos que pasar el así, el assín que nos lleva por parámetro. Y esta respuesta vamos a decirle que si no está bien la respuesta vamos a enviar el error, ¿vale? Vamos a quitar esta línea aquí del catch porque no tiene sentido. Ya estamos comprobando aquí el error. Luego aquí tenemos que transformar la respuesta para recuperar los datos que ya antes hemos visto que era un objeto un poco complejo. Data. resols, la primera el primer elemento de resols, luego el contenido, luego más resols y finalmente vamos a poder mapear todos los datos. Aquí hago alguna transformación para tener el precio como si fuese un número. Lo mismo con la puntuación. Entonces, hacemos algunas transformaciones y con esto ya deberíamos tener nuestro scrapper sin tener que preocuparnos de ray limit, de capcha ni nada. Ahora vamos a probarlo. Voy a volver a la terminal y voy a ejecutar este script de aquí, pnpm run track proxy, que lo que hace es ejecutar este scrapper de aquí y vamos a ver si funciona correctamente. ¿Ves? Ahora

  9. 9:45 , obre el vídeo en una pestanya nova

    mismo está utilizando el proxy de Decodo, utilizando todo esto y ya tenemos aquí toda la información sin ningún tipo de problema, el precio, rating, reviews, el stock URL y cuando ha hecho el scrapping. No ha tardado nada, fíjate. Y lo bueno es que esto sí que yo puedo estar volviendo a darle otra vez más, que no vamos a tener problemas de rate limitarnos de los elementos HTML ni nada, directamente nos está sacando la información sin que tengamos que nosotros tener una preocupación si escala o no escala. Acuérdate que tengo un enlace para que pruebes todo esto, mi enlace exclusivo para ti. Ahora que ya tenemos todo esto, una cosa que me gustaría hacer es ver si podemos ver el histórico. Para eso, yo lo que estoy haciendo aquí en el proxy scrapper, fíjate que ahora mismo, pues nada, está recuperando los assins, estoy llamando este scrapping manual, pues lo que vamos a hacer es iniciar sesión con una base de datos. Yo voy a utilizar Turso, no sé si lo conocéis, pero está bastante bien. Una base de datos que podemos poner en la nube. Voy a iniciar sesión con GitHub y voy a iniciar en una base de datos donde pueda guardar toda esta información. Ya tengo la base de datos aquí, Amazon Tracking. Pues una vez que estamos aquí tenemos la información para

  10. 10:59 , obre el vídeo en una pestanya nova

    conectarnos, el database URL, que lo vamos a poner en la variable de entorno. Como no te voy a enseñar la variable de entorno, lo que sí que puedes ver en el example, ¿vale? Fíjate que tenemos el turso database URL y el turso out token. Pues estas son las dos cosas que tienes que rellenar. El token lo vas a sacar aquí. Le das a create token y te va a crear el token según como lo digas. Le vamos a decir que sea de lectura y escritura y que nunca expire. Y cuando le damos a create token, pues tenemos aquí la información. Esto sería la URL y esto sería el token que no aparece completo, pero ya me va bien que no aparezca completo. Entonces, mientras me miras a los ojos, voy a estar rellenando la información con el token, que no se me escape nada. Y ya he pasado toda la información, así que ya lo tengo las variables de entorno. Lo único que me hace falta ahora sería importar aquí una forma de iniciar la base de datos. Aquí tengo un esquema donde tengo toda la tabla y toda la información, los índices que tenemos que utilizar y también tendía aquí las queries, fíjate aquí las queries. Tengo aquí las queries, es safe snapshot para recuperar todos los snapshots. Esto es básicamente para hacer el histórico. Así que vamos a hacer un import. Vamos a hacer el safe snapshot y este safe snapshot vamos a

  11. 12:18 , obre el vídeo en una pestanya nova

    utilizarlo aquí dentro, ¿vale? Primero aquí importante, vamos a inicializar la base de datos. Vale, aquí me ha importado algo, ¿no? Vale, perfecto. Y aquí dentro, una vez que tenemos la información, vamos a hacer el save snapshot, ¿vale? Para guardar esta información en nuestra base de datos. Ahora que hemos hecho esto, vamos a ejecutar otra vez a ver si funciona correctamente. Está solicitando la información adecodo. Estamos haciendo el crowling. Ha guardado en la base de datos este snapshot y al volver a nuestra base de datos podemos ir a edit data y ver pues todo el histórico y deberíamos ver lo que ha ocurrido hoy. Si compartimos aquí, fíjate, hoy es 30 de abril y ya tenemos los datos de hoy. Así que perfecto. ¿Cómo podemos ver este histórico? Pues simplemente levantando el entorno de desarrollo. Yo lo he dejado aquí en el puerto 4322. Y fíjate qué gráfica más bonita. Tenemos los dos elementos con su título, sus precios y todo. Y podemos ver la evolución de los precios de cada uno. Un elemento. Tampoco que hayan cambiado mucho. Ha bajado un pelín la memoria RAM. Mira, ha bajado un poquito. Ha bajado, ¿cuánto? 5 € han bajado 2 € y luego esta sí que parece ser que ha bajado de 416 a 413,99. Bueno, algo es algo, algo es algo. Pero

  12. 13:41 , obre el vídeo en una pestanya nova

    bueno, aquí podéis ver la evolución de precios donde cada día ha hecho pues este scrapping, se ha quedado la información, le ha guardado la base de datos y ya tenemos el histórico. Y ahora la pregunta del millón, ¿cómo podemos automatizar esto de forma que todos los días a la misma hora podamos recuperar el precio y así tener el histórico, pues vamos a crear una Gighub action y es que tenemos aquí este flujo de trabajo, un Wordflow, que lo que hacemos es que funciona en schedule, lo tenemos aquí con un Chrome Job que siempre a las 7 de la mañana se va a ejecutar y si no también lo podemos ejecutar manualmente. Para esto funciona este Wordflow Dispatch. ¿Qué estamos haciendo aquí? Tenemos diferentes pasos. Va a funcionar en la última versión de Ubuntu. Lo que hacemos es los pasos, el checkout del repo para recuperarlo. Vamos a hacer un setup de PNPM para poder instalar las dependencias. Setup de NOJS con la versión 22. Instalamos las dependencias y leemos todas las variables de entorno que necesitamos para que funcione y ejecutamos el script pnpm track proxy. Ahora, una vez que tenemos esto, vámonos a nuestro repositorio. Fíjate que yo lo he ejecutado en realidad más veces, pero lo he ido eliminando. Y lo que puedo hacer aquí es darle en esta action le podría dar aquí a rank workflow y

  13. 14:59 , obre el vídeo en una pestanya nova

    manualmente ejecutarlo. Lo que va a pasar es que va a funcionar todos los días a las 7 de la mañana, pero lo voy a hacer ahora manualmente. Puedo entrar para ver cómo va ejecutándose paso a paso. Ya ha hecho el checkout del repo. Está también haciendo el setup de no GS, instalando las dependencias, ejecutando el tracker. Ahora está llamando a los servicios de decodo con el proxy sin problemas ni capcha ni nada. Re limit, adiós. Automáticamente está rotando las IPS para ti. Y fíjate que ya ha terminado. ¿Cuánto ha tardado? Pues habrá tardado unos 10 segundos, 12 máximo, 37, va, 25, perdón. Ha tardado 25 segundos, pero lo que es el tracker en realidad ha tardado 12 segundos. Y para asegurarnos que esto está funcionando, pues fíjate que aquí podríamos resetear esto y ver que aquí, fíjate que ahora tenemos también del 30 de abril, que es hoy, tenemos más. ¿Por qué? Porque justamente ahora los ha añadido. Ha añadido a la hora que estamos ahora, pues ha añadido nuevos. Y aquí, aunque no se va a notar mucho si refresco, podríamos ver que tenemos aquí más de un punto. De hecho, fíjate que no es redondo como este. ¿Por qué? Porque como es el mismo día, pues tenemos más de un punto ahí que nos da el precio. No es lo ideal normalmente tener más de un punto en el mismo día porque no es muy

  14. 16:18 , obre el vídeo en una pestanya nova

    útil, pero al menos sabemos que funcionar funciona. Así que todo esto lo tienes totalmente de código abierto, se llama scrapping Amazon Prices para que veas cómo lo he hecho desde cero, para que veas cómo funciona y que además lo puedas hacer funcionar una vez que le pasas tus variables de entorno. que te acuerdes que estoy utilizando los servicios de decodo y que te dejo en la descripción mi enlace donde puedes conseguir un 10% de descuento en sus servicios por si te ha gustado y lo quieres utilizar más adelante. Fíjate que aquí te dice el precio y que todo lo que he ejecutado me ha salido por 2 céntimos de dólar. Imagínate, además, no tienes que poner tarjeta de crédito ni nada, lo puedes probar y te va a encantar. O sea, ya puedes probar desde el principio sin ningún tipo de problema y ya ves que es muy fácil y es que hay un montón de templates diferentes para YouTube, para TikTok, para Reddit, para lo que tú quieras. Y lo mejor es que tienes también el servicio de proxis, que lo tienes aquí por si quieres hacer una rotación automática de IPS, también lo puedes hacer. Espero que os haya gustado este vídeo, este pedazo de tutorial, porque me parece que es muy interesante que muy pocas veces se utiliza este tipo de técnica de cómo utilizar un proxy, cómo hacer un

  15. 17:29 , obre el vídeo en una pestanya nova

    scrapping mucho más avanzado. Además, ten un histórico que seguramente muchas veces has visto, "Oye, ¿cómo hará esto?" pues lo hacen así, no tiene mucha más historia y además que lo hemos hecho de código abierto. Si te gusta este tipo de contenido y si te ha gustado el servicio de Decodo, que muy poca gente lo conoce y que la verdad es que está muy genial, pues deja tu like si te gusta este tipo de contenido, me ayudas un montón dejando tu like porque luego me dicen que no programo, pero es que cuando programo pues la gente no deja su like. Pues deja un like, pon un comentario, dime qué te ha parecido y si lo reventamos, yo que sé, si llegamos a los 5,000 likes, le voy a decir a Decodo que hacemos una segunda parte para el tema de los proxis, a ver qué os parece. Vale, espero que lo hayáis disfrutado mucho. Nos vemos. Ciao. [música]