{"id":47425,"date":"2026-08-27T09:21:09","date_gmt":"2026-08-27T09:21:09","guid":{"rendered":"https:\/\/floppydata.com\/sin-categoria\/como-utilizar-un-proxy-en-puppeteer\/"},"modified":"2026-08-27T09:21:09","modified_gmt":"2026-08-27T09:21:09","slug":"how-to-use-a-proxy-in-puppeteer","status":"publish","type":"post","link":"https:\/\/floppydata.com\/es\/blog\/how-to-use-a-proxy-in-puppeteer\/","title":{"rendered":"C\u00f3mo utilizar un proxy en Puppeteer"},"content":{"rendered":"<p>Puppeteer es una de las bibliotecas de Node.js m\u00e1s populares y una potente herramienta para automatizar tareas como el scraping web, las pruebas, la investigaci\u00f3n de SEO o el seguimiento de precios a trav\u00e9s de los navegadores Chrome o Chromium. Si alguna vez has trabajado con un flujo de trabajo automatizado a gran escala, ya sabes lo molesto que resulta: los sitios web limitan la velocidad y restringen tu conexi\u00f3n, bloquean las solicitudes al instante o incluso a\u00f1aden tu IP a una lista negra por completo.<\/p>\n<p>Estas complicaciones no solo acaban cost\u00e1ndote un tiempo y un dinero muy valiosos, sino que pueden afectar en gran medida a la puntuaci\u00f3n de confianza de tu direcci\u00f3n personal y, a su vez, a cualquier iniciativa online futura. Por suerte, existe un m\u00e9todo que resuelve estos problemas sin esfuerzo, al tiempo que ayuda a eludir las restricciones geogr\u00e1ficas y a distribuir solicitudes automatizadas para conseguir una mayor tasa de \u00e9xito y una mayor velocidad de conexi\u00f3n. Me refiero, obviamente, a los proxies.<\/p>\n<p>En este art\u00edculo, veremos exactamente por qu\u00e9 necesitas proxies y qu\u00e9 tipo requiere tu tarea, repasaremos la configuraci\u00f3n b\u00e1sica, la autenticaci\u00f3n y la importancia de los protocolos. Adem\u00e1s, te recomendar\u00e9 un proveedor excelente que me ha funcionado especialmente bien en mis propios procesos de automatizaci\u00f3n.<\/p>\n<h2>\u00bfQu\u00e9 es un titiritero proxy y por qu\u00e9 necesitas uno?<\/h2>\n<p> Un proxy de Puppeteer act\u00faa como intermediario entre tu script automatizado y el sitio web al que te diriges. Al enrutar tus solicitudes a trav\u00e9s del servidor dedicado del proveedor, el proxy oculta tu direcci\u00f3n IP real, de modo que el sitio de destino ve la IP del proxy, no la tuya.<\/p>\n<p>Aun as\u00ed, el enmascaramiento de la direcci\u00f3n IP es solo la punta del iceberg. A continuaci\u00f3n te ofrecemos una lista completa de las ventajas que un proxy aporta a tu flujo de trabajo con Puppeteer:<\/p>\n<ul>\n<li><strong>C\u00f3mo evitar los bloqueos de IP, la limitaci\u00f3n de velocidad y la restricci\u00f3n de tr\u00e1fico<\/strong>: los sitios web suelen restringir el acceso a las direcciones IP que realizan un gran n\u00famero de solicitudes consecutivas. Si no se bloquea directamente, tu conexi\u00f3n puede ralentizarse considerablemente o verse inundada de CAPTCHAs. Un conjunto bien configurado de <a href=\"https:\/\/floppydata.com\/proxy-type\/rotating-proxy\/\">proxies rotativos<\/a> resuelve este problema: incluso si se bloquea una de tus direcciones IP, otra ocupa su lugar para garantizar un flujo de trabajo ininterrumpido.<\/li>\n<li><strong>C\u00f3mo eludir las restricciones geogr\u00e1ficas<\/strong>: Una gran parte del contenido de Internet est\u00e1 oculto tras restricciones geogr\u00e1ficas o se modifica en funci\u00f3n de la ubicaci\u00f3n desde la que se realiza la solicitud. <a href=\"https:\/\/floppydata.com\/proxy-type\/residential-proxy\/\">Los proxies residenciales<\/a> te permiten obtener una direcci\u00f3n de cualquier parte del mundo con precisi\u00f3n milim\u00e9trica (estados, ciudades o c\u00f3digos postales concretos) y navegar como si estuvieras f\u00edsicamente en esa regi\u00f3n.<\/li>\n<li><strong>Mejora de las tasas de \u00e9xito de las solicitudes<\/strong>: distribuir las solicitudes entre un conjunto de proxies reduce dr\u00e1sticamente las conexiones fallidas y los tiempos de espera, especialmente en tareas de scraping intensivas.<\/li>\n<\/ul>\n<p>Esto resulta extremadamente \u00fatil, por no decir fundamental, en:<\/p>\n<ul>\n<li><strong>El web scraping a gran escala<\/strong><\/li>\n<li><strong>Verificaci\u00f3n de anuncios<\/strong><\/li>\n<li><strong>Supervisi\u00f3n de SEO<\/strong><\/li>\n<li><strong>Control de calidad y pruebas<\/strong><\/li>\n<li><strong>Localizaci\u00f3n<\/strong><\/li>\n<\/ul>\n<p>En resumen, si utilizas Puppeteer para algo m\u00e1s que una simple prueba puntual, los proxies son imprescindibles: una red de proxies de alta calidad suele marcar la diferencia entre un script fr\u00e1gil y un flujo de datos fiable.<\/p>\n<h2>Puppeteer: \u00bfUsar VPN o proxy? \u00bfCu\u00e1l elegir?<\/h2>\n<p> Al hablar de herramientas para eludir restricciones, siempre surge la misma pregunta: \u00bfqu\u00e9 es mejor, un proxy o una VPN? Ambas tienen sus ventajas y desventajas, y ambas ofrecen resultados sorprendentes si se usan correctamente y para el caso de uso adecuado. Dado que en este art\u00edculo nos centramos espec\u00edficamente en la automatizaci\u00f3n con Puppeteer, analicemos qu\u00e9 herramienta se adapta mejor a los flujos de trabajo de Puppeteer.<\/p>\n<p>Desde el punto de vista del usuario, las VPN y los proxies son bastante similares: ambos ocultan tu direcci\u00f3n IP asign\u00e1ndote una nueva. Sin embargo, ah\u00ed es donde terminan las similitudes. Una VPN desv\u00eda todo el tr\u00e1fico de tu dispositivo a trav\u00e9s de un t\u00fanel cifrado para conectarte al servidor del proveedor. Desde all\u00ed, puedes navegar por toda la web a tu antojo.<\/p>\n<p>Los servidores proxy, por su parte, ocultan tu direcci\u00f3n IP solo ante una p\u00e1gina web o aplicaci\u00f3n (aquella a la que te est\u00e1s conectando) cada vez, mientras que el cifrado viene determinado por el protocolo elegido: HTTP no ofrece cifrado alguno, HTTPS se utiliza para un cifrado b\u00e1sico y SOCKS5 para un cifrado m\u00e1ximo.<\/p>\n<h3>\u00bfPor qu\u00e9 es importante?<\/h3>\n<p>Estas dos diferencias principales son las que m\u00e1s distinguen a las herramientas de elusi\u00f3n a la hora de utilizarlas. El cifrado de las VPN las convierte en una opci\u00f3n ideal para la privacidad y el anonimato personales en Internet, mientras que la menor carga de los proxies les permite mantener altas velocidades y gestionar grandes cantidades de tr\u00e1fico de usuarios de forma simult\u00e1nea. Adem\u00e1s, al redirigir todo tu tr\u00e1fico, una VPN solo puede proporcionarte una direcci\u00f3n IP a la vez, mientras que los proxies ofrecen tantas conexiones simult\u00e1neas como desees.<\/p>\n<p>Aqu\u00ed tienes una tabla comparativa para que te hagas una idea m\u00e1s clara:<\/p>\n<table class=\"fldt-blog-table\">\n<tbody>\n<tr>\n<td><\/td>\n<td><strong>VPN<\/strong><\/td>\n<td><strong>Proxy<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>Enmascaramiento de direcciones IP<\/strong><\/td>\n<td>S\u00ed<\/td>\n<td>S\u00ed<\/td>\n<\/tr>\n<tr>\n<td><strong>Cifrado<\/strong><\/td>\n<td>S\u00ed, todo el tr\u00e1fico del dispositivo<\/td>\n<td>Solo con el protocolo SOCKS5, por sitio web o por aplicaci\u00f3n<\/td>\n<\/tr>\n<tr>\n<td><strong>Velocidad<\/strong><\/td>\n<td>Media<\/td>\n<td>Alta<\/td>\n<\/tr>\n<tr>\n<td><strong>Conexiones simult\u00e1neas<\/strong><\/td>\n<td>Una direcci\u00f3n IP a la vez<\/td>\n<td>Varias direcciones IP simult\u00e1neas<\/td>\n<\/tr>\n<tr>\n<td><strong>Control de rotaci\u00f3n<\/strong><\/td>\n<td>Limitado<\/td>\n<td>Integrado<\/td>\n<\/tr>\n<tr>\n<td><strong>Precisi\u00f3n de la segmentaci\u00f3n geogr\u00e1fica<\/strong><\/td>\n<td>Limitada (a nivel de pa\u00eds)<\/td>\n<td>Ciudad, provincia, c\u00f3digo postal, a nivel de ASN (dependiendo del proveedor)<\/td>\n<\/tr>\n<tr>\n<td><strong>Gesti\u00f3n de CAPTCHA\/bloqueos<\/strong><\/td>\n<td>Se requiere intervenci\u00f3n manual<\/td>\n<td>Se gestiona mediante rotaci\u00f3n autom\u00e1tica<\/td>\n<\/tr>\n<tr>\n<td><strong>Escalabilidad<\/strong><\/td>\n<td>Limitada<\/td>\n<td>Altamente escalable<\/td>\n<\/tr>\n<tr>\n<td><strong>Ideal para<\/strong><\/td>\n<td>Uso personal<\/td>\n<td>Automatizaci\u00f3n a gran escala<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Aunque las VPN pueden integrarse, en principio, en tu script de Puppeteer, el resultado de esta iniciativa dista mucho de ser el ideal. En otras palabras, las VPN son m\u00e1s adecuadas para la navegaci\u00f3n individual, mientras que los proxies est\u00e1n dise\u00f1ados espec\u00edficamente para la automatizaci\u00f3n, el scraping, las pruebas y la recopilaci\u00f3n de datos a gran escala.<\/p>\n<h2>C\u00f3mo utilizar un proxy en Puppeteer: configuraci\u00f3n b\u00e1sica con Floppydata<\/h2>\n<p>Ahora, pasemos a la secci\u00f3n del art\u00edculo dedicada a la configuraci\u00f3n del proxy y a la integraci\u00f3n con Puppeteer. Para facilitar la configuraci\u00f3n y la demostraci\u00f3n del proxy, utilizar\u00e9 Floppydata.<\/p>\n<p>Floppydata lleva ya un tiempo siendo mi proveedor de proxies de referencia. El servicio garantiza un tiempo de actividad constante del 99,99 % y altos \u00edndices de fiabilidad, lo que permite una conexi\u00f3n ininterrumpida para cualquier flujo de trabajo automatizado. Adem\u00e1s de un rendimiento extraordinario, Floppydata ofrece uno de los mejores precios del mercado: solo 1 $\/GB para direcciones IP rotativas y 5 $\/IP para proxies de ISP. Esto hace que el servicio sea ideal para usuarios que realizan operaciones a gran escala o con gran volumen de datos, sin dejar de lado su presupuesto.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-47251\" src=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image2-1.png\" alt=\"P\u00e1gina de inicio del servicio de acceso a datos web\" width=\"1999\" height=\"1132\" srcset=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image2-1.png 1999w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image2-1-300x170.png 300w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image2-1-1024x580.png 1024w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image2-1-768x435.png 768w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image2-1-1536x870.png 1536w\" sizes=\"(max-width: 1999px) 100vw, 1999px\" \/><\/p>\n<p>El primer paso para integrar proxies en tu script de Puppeteer es conseguir un proxy. Con Floppydata solo hace falta un par de clics.<\/p>\n<p>Una vez que hayas iniciado sesi\u00f3n, acceder\u00e1s al panel de control de Floppydata. En primer lugar, elige un plan adecuado y procede al pago. Para los flujos de trabajo automatizados, te recomiendo el plan \u00abRotating proxy\u00bb, que incluye tres tipos de direcciones IP (residenciales, m\u00f3viles y de centro de datos) entre las que puedes cambiar cuando te convenga.<\/p>\n<p>Los siguientes pasos no pueden ser m\u00e1s sencillos; aunque no est\u00e9s muy familiarizado con los servicios de proxy, la interfaz intuitiva de Floppydata te garantiza que no te perder\u00e1s.<\/p>\n<p>Ve a la pesta\u00f1a \u00abObtener credenciales de proxy\u00bb en la barra lateral izquierda. All\u00ed se te proporcionar\u00e1n un nombre de usuario y una contrase\u00f1a asociados a tu cuenta, pero, a efectos de esta demostraci\u00f3n, vamos a crear un perfil espec\u00edfico para Puppeteer; esto generar\u00e1 un nuevo proxy con la autenticaci\u00f3n ya integrada. Como puedes ver, puedes crear tantos subusuarios independientes como desees, lo que simplifica enormemente los procesos de gesti\u00f3n posteriores.<\/p>\n<p>A continuaci\u00f3n, solo tienes que seleccionar los par\u00e1metros necesarios de las listas desplegables que aparecen. A medida que vas introduciendo los datos, estos se van incorporando simult\u00e1neamente a la cadena de proxy. Cuando est\u00e9s satisfecho con los par\u00e1metros, solo tienes que copiar un fragmento de c\u00f3digo o la cadena de proxy.<\/p>\n<p><video style=\"max-width: 100%; height: auto; display: block; margin: 0 auto;\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"300\" height=\"150\"><source src=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/Floppydata-Puppeteer.mp4\" type=\"video\/mp4\"\/>Tu navegador no admite la etiqueta \u00abvideo\u00bb.<\/video><\/p>\n<p> Para esta demostraci\u00f3n, centr\u00e9monos en c\u00f3mo funciona la configuraci\u00f3n b\u00e1sica con una cadena de proxy. Aqu\u00ed tienes un fragmento de c\u00f3digo para una integraci\u00f3n de proxy:<\/p>\n<h3>Proxy de Puppeteer con autenticaci\u00f3n: m\u00e9todo \u00abpage.authenticate\u00bb<\/h3>\n<p><strong>Instalaci\u00f3n:<\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">bash<\/span><\/div>\n<pre style=\"margin: 0; padding: 16px 22px; overflow-x: auto;\"><code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; font-size: 14px; line-height: 1.6; color: #50fa7b;\">npm install puppeteer<\/code><\/pre>\n<\/div>\n<p><strong>Configuraci\u00f3n b\u00e1sica:  <\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">javascript<\/span><\/div>\n<pre style=\"margin: 0; padding: 18px 24px; overflow-x: auto; font-family: 'Fira Code',Consolas,monospace; font-size: 14px; line-height: 1.65; color: #f8f8f2;\"><code><span style=\"color: #ff79c6;\">const<\/span> puppeteer = <span style=\"color: #8be9fd;\">require<\/span>(<span style=\"color: #f1fa8c;\">'puppeteer'<\/span>);\n\n(<span style=\"color: #ff79c6;\">async<\/span> () =&gt; {\n    <span style=\"color: #ff79c6;\">const<\/span> PROXY_USER = <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup01'<\/span>;\n    <span style=\"color: #ff79c6;\">const<\/span> PROXY_PASS = <span style=\"color: #f1fa8c;\">'your_password'<\/span>;\n    <span style=\"color: #ff79c6;\">const<\/span> PROXY_SERVER = <span style=\"color: #f1fa8c;\">'geo.g-w.info:10080'<\/span>;\n\n    <span style=\"color: #ff79c6;\">const<\/span> browser = <span style=\"color: #ff79c6;\">await<\/span> puppeteer.<span style=\"color: #50fa7b;\">launch<\/span>({\n        args: [<span style=\"color: #f1fa8c;\">`--proxy-server=${<\/span>PROXY_SERVER<span style=\"color: #f1fa8c;\">}`<\/span>]\n    });\n\n    <span style=\"color: #ff79c6;\">const<\/span> page = <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">newPage<\/span>();\n\n    <span style=\"color: #6272a4;\">\/\/ Authenticate<\/span>\n    <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">authenticate<\/span>({\n        username: PROXY_USER,\n        password: PROXY_PASS\n    });\n\n    <span style=\"color: #6272a4;\">\/\/ Navigate<\/span>\n    <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">goto<\/span>(<span style=\"color: #f1fa8c;\">'https:\/\/httpbin.org\/ip'<\/span>);\n\n    <span style=\"color: #ff79c6;\">const<\/span> content = <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">content<\/span>();\n    console.<span style=\"color: #50fa7b;\">log<\/span>(content);\n\n    <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">close<\/span>();\n})();<\/code><\/pre>\n<\/div>\n<p>Una vez configurado el c\u00f3digo, solo tienes que copiar y pegar tus credenciales de proxy desde el panel de control de Floppydata en los lugares correspondientes: tu nombre de usuario (la cadena completa que hemos copiado en el GIF anterior) en <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">PROXY_USER<\/code> y la contrase\u00f1a en <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">PROXY_PASS<\/code>. <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">PROXY_SERVER<\/code> sigue un sencillo  <code style=\"font-family: 'Fira Code',Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">hostname:port<\/code>  formato, en el que el nombre de host es <a href=\"http:\/\/geo.g-w.info\" target=\"_blank\" rel=\"noopener\">geo.g-w.info<\/a> y los rangos de puertos vienen definidos por el protocolo elegido: 10080 para HTTP, 10443 para HTTPS y 10800 para SOCKS5.<\/p>\n<p>Este m\u00e9todo tambi\u00e9n incluye autenticaci\u00f3n nativa, compatible tanto con HTTP como con HTTPS: introduce tu nombre de usuario y contrase\u00f1a en <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #7c3aed; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">page.authenticate<\/code> para integrar tu proxy con la autenticaci\u00f3n de forma inmediata, sin necesidad de configuraciones adicionales ni de nuevas p\u00e1ginas.<\/p>\n<h3>Autenticaci\u00f3n mediante cadena de proxies<\/h3>\n<p>Otro m\u00e9todo de autenticaci\u00f3n mediante proxy, utilizado principalmente para mensajes de error personalizados, respuestas personalizadas y la medici\u00f3n de estad\u00edsticas de tr\u00e1fico, o si necesitas integrar credenciales directamente en la URL del proxy, es el paquete npm <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">proxy-chain<\/code>. La parte fundamental de este m\u00e9todo es <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #7c3aed; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">anonymizeProxy(proxy)<\/code>, que inicia un servidor proxy local.<\/p>\n<p><strong>Instalaci\u00f3n:<\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">bash<\/span><\/div>\n<pre style=\"margin: 0; padding: 16px 22px; overflow-x: auto;\"><code style=\"font-family: 'Fira Code',Consolas,monospace; font-size: 14px; line-height: 1.6; color: #50fa7b;\">npm install proxy-chain<\/code><\/pre>\n<\/div>\n<p><strong>Configuraci\u00f3n:  <\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">javascript<\/span><\/div>\n<pre style=\"margin: 0; padding: 18px 24px; overflow-x: auto; font-family: 'Fira Code',Consolas,monospace; font-size: 14px; line-height: 1.65; color: #f8f8f2;\"><code><span style=\"color: #ff79c6;\">const<\/span> puppeteer = <span style=\"color: #8be9fd;\">require<\/span>(<span style=\"color: #f1fa8c;\">'puppeteer'<\/span>);\n<span style=\"color: #ff79c6;\">const<\/span> proxyChain = <span style=\"color: #8be9fd;\">require<\/span>(<span style=\"color: #f1fa8c;\">'proxy-chain'<\/span>);\n\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_SERVER = <span style=\"color: #f1fa8c;\">'geo.g-w.info:10080'<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_USER = <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup01'<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_PASS = <span style=\"color: #f1fa8c;\">'your_password'<\/span>;\n\n(<span style=\"color: #ff79c6;\">async<\/span> () =&gt; {\n    <span style=\"color: #ff79c6;\">const<\/span> proxy = <span style=\"color: #f1fa8c;\">`http:\/\/${<\/span>PROXY_USER<span style=\"color: #f1fa8c;\">}:${<\/span>PROXY_PASS<span style=\"color: #f1fa8c;\">}@${<\/span>PROXY_SERVER<span style=\"color: #f1fa8c;\">}`<\/span>;\n\n    <span style=\"color: #ff79c6;\">const<\/span> anonymizedProxy = <span style=\"color: #ff79c6;\">await<\/span> proxyChain.<span style=\"color: #50fa7b;\">anonymizeProxy<\/span>(proxy);\n\n    <span style=\"color: #ff79c6;\">const<\/span> browser = <span style=\"color: #ff79c6;\">await<\/span> puppeteer.<span style=\"color: #50fa7b;\">launch<\/span>({\n        args: [<span style=\"color: #f1fa8c;\">`--proxy-server=${<\/span>anonymizedProxy<span style=\"color: #f1fa8c;\">}`<\/span>],\n    });\n\n    <span style=\"color: #ff79c6;\">const<\/span> page = <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">newPage<\/span>();\n    <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">goto<\/span>(<span style=\"color: #f1fa8c;\">'https:\/\/httpbin.org\/ip'<\/span>);\n    <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">screenshot<\/span>({ path: <span style=\"color: #f1fa8c;\">'example2.png'<\/span> });\n\n    <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">close<\/span>();\n    <span style=\"color: #ff79c6;\">await<\/span> proxyChain.<span style=\"color: #50fa7b;\">closeAnonymizedProxy<\/span>(anonymizedProxy, <span style=\"color: #bd93f9;\">true<\/span>);\n})();<\/code><\/pre>\n<\/div>\n<p>Para este m\u00e9todo necesitar\u00e1s las mismas credenciales que antes, adem\u00e1s de la URL de tu proxy con el siguiente formato: <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">Protocol:\/\/Username:Password@Hostname:Port<\/code>. Puedes encontrar una cadena lista para usar en el panel de control de Floppydata, justo debajo de la configuraci\u00f3n del proxy: haz clic en \u00abCadenas de proxy\u00bb, luego en \u00abComo lista\u00bb y elige el formato que prefieras de entre los que aparecen en la lista desplegable.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-47263\" src=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image1.png\" alt=\"Interfaz para la configuraci\u00f3n de los ajustes del proxy\" width=\"1816\" height=\"788\" srcset=\"https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image1.png 1816w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image1-300x130.png 300w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image1-1024x444.png 1024w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image1-768x333.png 768w, https:\/\/floppydata.com\/wp-content\/uploads\/2026\/08\/image1-1536x667.png 1536w\" sizes=\"(max-width: 1816px) 100vw, 1816px\" \/><\/p>\n<h2>Uso de un proxy con Puppeteer a gran escala: pr\u00e1cticas recomendadas para la integraci\u00f3n de un proxy con Puppeteer<\/h2>\n<p>Una vez que la configuraci\u00f3n b\u00e1sica del proxy funcione, puedes pasar a ampliar tu flujo de trabajo para la producci\u00f3n. En este caso, un \u00fanico proxy est\u00e1tico no ser\u00e1 suficiente; veamos c\u00f3mo configurar un grupo de proxies rotativos en Puppeteer.<\/p>\n<h3>Rotaci\u00f3n aleatoria<\/h3>\n<p><strong>Instalaci\u00f3n:<\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">bash<\/span><\/div>\n<pre style=\"margin: 0; padding: 16px 22px; overflow-x: auto;\"><code style=\"font-family: 'Fira Code',Consolas,monospace; font-size: 14px; line-height: 1.6; color: #50fa7b;\">npm install puppeteer<\/code><\/pre>\n<\/div>\n<p><strong>Configuraci\u00f3n:  <\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">javascript<\/span><\/div>\n<pre style=\"margin: 0; padding: 18px 24px; overflow-x: auto; font-family: 'Fira Code',Consolas,monospace; font-size: 14px; line-height: 1.65; color: #f8f8f2;\"><code><span style=\"color: #ff79c6;\">const<\/span> puppeteer = <span style=\"color: #8be9fd;\">require<\/span>(<span style=\"color: #f1fa8c;\">'puppeteer'<\/span>);\n\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_PASS = <span style=\"color: #f1fa8c;\">'your_password'<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_SERVER = <span style=\"color: #f1fa8c;\">'geo.g-w.info:10080'<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_POOL = [\n    <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup01'<\/span>,\n    <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup02'<\/span>,\n    <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup03'<\/span>,\n    <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup04'<\/span>,\n];\n<span style=\"color: #ff79c6;\">const<\/span> getRandomProxy = () =&gt; PROXY_POOL[Math.<span style=\"color: #50fa7b;\">floor<\/span>(Math.<span style=\"color: #50fa7b;\">random<\/span>() * PROXY_POOL.length)];\n\n<span style=\"color: #ff79c6;\">const<\/span> urls = [\n    <span style=\"color: #f1fa8c;\">'https:\/\/httpbin.org\/ip'<\/span>,\n    <span style=\"color: #f1fa8c;\">'https:\/\/httpbin.org\/ip'<\/span>,\n    <span style=\"color: #f1fa8c;\">'https:\/\/httpbin.org\/ip'<\/span>,\n];\n\n(<span style=\"color: #ff79c6;\">async<\/span> () =&gt; {\n    <span style=\"color: #ff79c6;\">for<\/span> (<span style=\"color: #ff79c6;\">const<\/span> url <span style=\"color: #ff79c6;\">of<\/span> urls) {\n        <span style=\"color: #ff79c6;\">const<\/span> PROXY_USER = <span style=\"color: #50fa7b;\">getRandomProxy<\/span>();\n\n        <span style=\"color: #ff79c6;\">const<\/span> browser = <span style=\"color: #ff79c6;\">await<\/span> puppeteer.<span style=\"color: #50fa7b;\">launch<\/span>({\n            args: [<span style=\"color: #f1fa8c;\">`--proxy-server=${<\/span>PROXY_SERVER<span style=\"color: #f1fa8c;\">}`<\/span>]\n        });\n\n        <span style=\"color: #ff79c6;\">const<\/span> page = <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">newPage<\/span>();\n\n        <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">authenticate<\/span>({\n            username: PROXY_USER,\n            password: PROXY_PASS\n        });\n\n        <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">goto<\/span>(url);\n        <span style=\"color: #ff79c6;\">const<\/span> content = <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">content<\/span>();\n        console.<span style=\"color: #50fa7b;\">log<\/span>(<span style=\"color: #f1fa8c;\">`Request via ${<\/span>PROXY_USER<span style=\"color: #f1fa8c;\">}:`<\/span>, content);\n\n        <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">close<\/span>();\n    }\n})();<\/code><\/pre>\n<\/div>\n<p>Como puedes ver, la principal diferencia aqu\u00ed es que, en lugar de \u00ab <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">PROXY_USER<\/code> \u00bb, estamos utilizando \u00ab <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">PROXY_POOL<\/code> \u00bb. Al mismo tiempo, estamos a\u00f1adiendo una l\u00f3gica de rotaci\u00f3n aleatoria mediante \u00ab <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #7c3aed; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">Math.floor(Math.random() * PROXY_POOL.length)<\/code> \u00bb.<\/p>\n<h3>Rotaci\u00f3n secuencial<\/h3>\n<p><strong>Instalaci\u00f3n:<\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">bash<\/span><\/div>\n<pre style=\"margin: 0; padding: 16px 22px; overflow-x: auto;\"><code style=\"font-family: 'Fira Code',Consolas,monospace; font-size: 14px; line-height: 1.6; color: #50fa7b;\">npm install puppeteer<\/code><\/pre>\n<\/div>\n<p><strong>Configuraci\u00f3n:  <\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">javascript<\/span><\/div>\n<pre style=\"margin: 0; padding: 18px 24px; overflow-x: auto; font-family: 'Fira Code',Consolas,monospace; font-size: 14px; line-height: 1.65; color: #f8f8f2;\"><code><span style=\"color: #ff79c6;\">const<\/span> puppeteer = <span style=\"color: #8be9fd;\">require<\/span>(<span style=\"color: #f1fa8c;\">'puppeteer'<\/span>);\n\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_PASS = <span style=\"color: #f1fa8c;\">'your_password'<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_SERVER = <span style=\"color: #f1fa8c;\">'geo.g-w.info:10080'<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_POOL = [\n    <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup01'<\/span>,\n    <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup02'<\/span>,\n    <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup03'<\/span>,\n    <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup04'<\/span>,\n];\n\n<span style=\"color: #ff79c6;\">let<\/span> proxyIndex = <span style=\"color: #bd93f9;\">0<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> getNextProxy = () =&gt; {\n    <span style=\"color: #ff79c6;\">const<\/span> proxy = PROXY_POOL[proxyIndex % PROXY_POOL.length];\n    proxyIndex++;\n    <span style=\"color: #ff79c6;\">return<\/span> proxy;\n};\n\n<span style=\"color: #ff79c6;\">const<\/span> urls = [\n    <span style=\"color: #f1fa8c;\">'https:\/\/httpbin.org\/ip'<\/span>,\n    <span style=\"color: #f1fa8c;\">'https:\/\/httpbin.org\/ip'<\/span>,\n    <span style=\"color: #f1fa8c;\">'https:\/\/httpbin.org\/ip'<\/span>,\n];\n\n(<span style=\"color: #ff79c6;\">async<\/span> () =&gt; {\n    <span style=\"color: #ff79c6;\">for<\/span> (<span style=\"color: #ff79c6;\">const<\/span> url <span style=\"color: #ff79c6;\">of<\/span> urls) {\n        <span style=\"color: #ff79c6;\">const<\/span> PROXY_USER = <span style=\"color: #50fa7b;\">getNextProxy<\/span>();\n\n        <span style=\"color: #ff79c6;\">const<\/span> browser = <span style=\"color: #ff79c6;\">await<\/span> puppeteer.<span style=\"color: #50fa7b;\">launch<\/span>({\n            args: [<span style=\"color: #f1fa8c;\">`--proxy-server=${<\/span>PROXY_SERVER<span style=\"color: #f1fa8c;\">}`<\/span>]\n        });\n\n        <span style=\"color: #ff79c6;\">const<\/span> page = <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">newPage<\/span>();\n\n        <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">authenticate<\/span>({\n            username: PROXY_USER,\n            password: PROXY_PASS\n        });\n\n        <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">goto<\/span>(url);\n        <span style=\"color: #ff79c6;\">const<\/span> content = <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">content<\/span>();\n        console.<span style=\"color: #50fa7b;\">log<\/span>(<span style=\"color: #f1fa8c;\">`Request via ${<\/span>PROXY_USER<span style=\"color: #f1fa8c;\">}:`<\/span>, content);\n\n        <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">close<\/span>();\n    }\n})();<\/code><\/pre>\n<\/div>\n<p>Aqu\u00ed estamos utilizando una funci\u00f3n \u00ab <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #7c3aed; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">getNextProxy()<\/code> \u00bb que emplea un contador \u00ab <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">proxyIndex<\/code> \u00bb con un operador m\u00f3dulo (<code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #7c3aed; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">%<\/code>) para recorrer el conjunto de forma ordenada.<\/p>\n<h2>Proxy SOCKS de Puppeteer: lo que debes saber<\/h2>\n<p>el protocolo Socket Secure (SOCKS), y  <a href=\"https:\/\/floppydata.com\/proxy-type\/socks5-proxy\/\">Proxies SOCKS5<\/a>  En concreto, funcionan a un nivel de red inferior al de los proxies HTTP\/HTTPS. Lo que los distingue de otros protocolos es su capacidad para gestionar cualquier tipo de tr\u00e1fico, desde la navegaci\u00f3n web est\u00e1ndar hasta el correo electr\u00f3nico, las transferencias de archivos, las conexiones P2P y los flujos de datos en tiempo real. Esto es posible porque el protocolo SOCKS no interpreta ni filtra el tr\u00e1fico como lo hacen los proxies HTTP, sino que simplemente transmite paquetes TCP y UDP sin modificar. Adem\u00e1s, los proxies SOCKS5 ofrecen el m\u00e1ximo nivel de cifrado que la propia capa de proxy puede proporcionar.<\/p>\n<p>En el contexto de Puppeteer, los proxies SOCKS5 presentan un par de ventajas claras. Su reenv\u00edo de paquetes a bajo nivel se traduce en menos errores y una menor latencia bajo cargas intensas, lo que resulta de gran ayuda a la hora de ejecutar procesos de scraping a gran escala. Dado que Puppeteer puede interactuar con una amplia gama de tareas m\u00e1s all\u00e1 de la navegaci\u00f3n web est\u00e1ndar, incluyendo el manejo de archivos multimedia, conexiones WebSocket y tr\u00e1fico no HTTP, los proxies SOCKS5 son la opci\u00f3n ideal, gracias a su capacidad para gestionar m\u00faltiples protocolos en lugar de limitarse \u00fanicamente al tr\u00e1fico web.<\/p>\n<p>Sin embargo, hay un inconveniente. El motor de Puppeteer, Chromium, no admite de forma nativa la autenticaci\u00f3n de proxy SOCKS5 que requieren la mayor\u00eda de los proxies comerciales, incluido Floppydata. Si intentas utilizar el m\u00e9todo habitual \u00ab <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #7c3aed; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">page.authenticate<\/code> \u00bb, lo m\u00e1s probable es que aparezca el mensaje \u00ab <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">ERR_NO_SUPPORTED_PROXIES<\/code> \u00bb o que el navegador recurra a una conexi\u00f3n directa, lo que dejar\u00eda al descubierto tu IP real.<\/p>\n<p>Aun as\u00ed, las direcciones IP SOCKS5 se pueden integrar en tu script de Puppeteer y autenticarse mediante el m\u00e9todo <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">proxy-chain<\/code>. <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">proxy-chain<\/code> funciona en este caso porque crea un t\u00fanel HTTP local que se encarga de la autenticaci\u00f3n SOCKS5 por ti; Chromium nunca tiene que gestionarla directamente. La configuraci\u00f3n en este caso es un poco diferente:<\/p>\n<p><strong>Instalaci\u00f3n:<\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">bash<\/span><\/div>\n<pre style=\"margin: 0; padding: 16px 22px; overflow-x: auto;\"><code style=\"font-family: 'Fira Code',Consolas,monospace; font-size: 14px; line-height: 1.6; color: #50fa7b;\">npm install proxy-chain<\/code><\/pre>\n<\/div>\n<p><strong>Configuraci\u00f3n:  <\/strong><\/p>\n<div style=\"background: #282a36; border-radius: 10px; overflow: hidden; margin: 16px 0 24px; box-shadow: 0 4px 14px rgba(0,0,0,0.18);\">\n<div style=\"background: #1e1f29; padding: 10px 18px; display: flex; align-items: center; gap: 7px;\"><span style=\"color: #6272a4; font-family: 'Fira Code',Consolas,monospace; font-size: 12px; margin-left: 10px;\">JavaScript<\/span><\/div>\n<pre style=\"margin: 0; padding: 18px 24px; overflow-x: auto; font-family: 'Fira Code',Consolas,monospace; font-size: 14px; line-height: 1.65; color: #f8f8f2;\"><code><span style=\"color: #ff79c6;\">const<\/span> puppeteer = <span style=\"color: #8be9fd;\">require<\/span>(<span style=\"color: #f1fa8c;\">'puppeteer'<\/span>);\n<span style=\"color: #ff79c6;\">const<\/span> proxyChain = <span style=\"color: #8be9fd;\">require<\/span>(<span style=\"color: #f1fa8c;\">'proxy-chain'<\/span>);\n\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_USER = <span style=\"color: #f1fa8c;\">'user123-type-residential-country-US-session-pup01'<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_PASS = <span style=\"color: #f1fa8c;\">'your_password'<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_HOST = <span style=\"color: #f1fa8c;\">'geo.g-w.info'<\/span>;\n<span style=\"color: #ff79c6;\">const<\/span> PROXY_PORT = <span style=\"color: #f1fa8c;\">'10800'<\/span>;\n\n(<span style=\"color: #ff79c6;\">async<\/span> () =&gt; {\n    <span style=\"color: #ff79c6;\">const<\/span> proxy = <span style=\"color: #f1fa8c;\">`socks5:\/\/${<\/span>PROXY_USER<span style=\"color: #f1fa8c;\">}:${<\/span>PROXY_PASS<span style=\"color: #f1fa8c;\">}@${<\/span>PROXY_HOST<span style=\"color: #f1fa8c;\">}:${<\/span>PROXY_PORT<span style=\"color: #f1fa8c;\">}`<\/span>;\n\n    <span style=\"color: #ff79c6;\">const<\/span> anonymizedProxy = <span style=\"color: #ff79c6;\">await<\/span> proxyChain.<span style=\"color: #50fa7b;\">anonymizeProxy<\/span>(proxy);\n\n    <span style=\"color: #ff79c6;\">const<\/span> browser = <span style=\"color: #ff79c6;\">await<\/span> puppeteer.<span style=\"color: #50fa7b;\">launch<\/span>({\n        args: [<span style=\"color: #f1fa8c;\">`--proxy-server=${<\/span>anonymizedProxy<span style=\"color: #f1fa8c;\">}`<\/span>],\n    });\n\n    <span style=\"color: #ff79c6;\">const<\/span> page = <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">newPage<\/span>();\n    <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">goto<\/span>(<span style=\"color: #f1fa8c;\">'https:\/\/httpbin.org\/ip'<\/span>);\n    <span style=\"color: #ff79c6;\">const<\/span> content = <span style=\"color: #ff79c6;\">await<\/span> page.<span style=\"color: #50fa7b;\">content<\/span>();\n    console.<span style=\"color: #50fa7b;\">log<\/span>(content);\n\n    <span style=\"color: #ff79c6;\">await<\/span> browser.<span style=\"color: #50fa7b;\">close<\/span>();\n    <span style=\"color: #ff79c6;\">await<\/span> proxyChain.<span style=\"color: #50fa7b;\">closeAnonymizedProxy<\/span>(anonymizedProxy, <span style=\"color: #bd93f9;\">true<\/span>);\n})();<\/code><\/pre>\n<\/div>\n<p>Es importante tener en cuenta que, en este caso, <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">PROXY_PORT<\/code> cambia a 10800 para el protocolo SOCKS5 y que la propia direcci\u00f3n del proxy comienza por <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">socks5:\/\/<\/code>, no por <code style=\"font-family: &#39;Fira Code&#39;,Consolas,monospace; background: #f4f4f5; color: #b45309; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">http:\/\/<\/code>.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Los proxies son una parte esencial de cualquier configuraci\u00f3n seria de automatizaci\u00f3n con Puppeteer. En esta gu\u00eda, hemos abordado las razones fundamentales para utilizarlos, c\u00f3mo se comparan con las VPN y hemos repasado todos los m\u00e9todos de integraci\u00f3n principales, desde la autenticaci\u00f3n b\u00e1sica hasta los grupos rotativos y la configuraci\u00f3n de SOCKS5 con proxy-chain. Con un proveedor fiable como Floppydata y la configuraci\u00f3n adecuada para tu caso de uso, dispondr\u00e1s de un flujo de trabajo resistente y escalable capaz de gestionar cualquier exigencia de tu flujo de trabajo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Puppeteer es una de las bibliotecas de Node.js m\u00e1s populares y una potente herramienta para automatizar tareas como el scraping web, las pruebas, la investigaci\u00f3n de SEO o el seguimiento de precios a trav\u00e9s de los navegadores Chrome o Chromium. Si alguna vez has trabajado con un flujo de trabajo automatizado a gran escala, ya [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":47298,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[149,545],"tags":[],"class_list":["post-47425","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-how-to"],"acf":[],"_links":{"self":[{"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/posts\/47425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/comments?post=47425"}],"version-history":[{"count":0,"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/posts\/47425\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/media\/47298"}],"wp:attachment":[{"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/media?parent=47425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/categories?post=47425"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/floppydata.com\/es\/wp-json\/wp\/v2\/tags?post=47425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}