🎉¡Todas las funciones son gratuitas e ilimitadas! Disfruta de perfiles y equipos ilimitados por $0
Empezó gratis
Volver a Blog
Web Scraping
Java
El Mejor Agente de Usuario para Web Scraping 2024 | Evita que te baneen UA al hacer Scraping
Seguro que has oído hablar muchas veces del «User Agent». ¿Sabes lo que es un agente de usuario? ¿Cómo afecta a nuestras vidas en línea? Obtén la respuesta en este blog.
Jun 11, 2024Carlos Rivera

¿Eres un raspador web frecuente? ¿Eres muy cuidadoso con tu privacidad? Entonces debes haber escuchado sobre el "Agente de usuario" muchas veces. ¿Sabes qué es un agente de usuario? ¿Cómo afecta a nuestra vida en línea?

¡Comienza a leer y te interesarás por todo lo que hay en este blog!

¿Cuál es mi agente de usuario?

Un Agente de usuario (UA) es una cadena que un navegador u otro software cliente envía a un servidor web. Puede proporcionar información sobre el dispositivo del usuario y el entorno de software.

Esta cadena se incluye en la cabecera HTTP de la solicitud web y ayuda al servidor a proporcionar el contenido apropiado en función de la configuración específica del usuario.

En otras palabras, la cadena del agente de usuario ayuda a reconocer el navegador, el tipo de dispositivo y el sistema operativo que está utilizando el usuario.

¿Por qué es importante el agente de usuario para el raspado web?

Los agentes de usuario son fundamentales para el raspado web porque ayudan a simular el comportamiento de navegación humana. Y pueden hacer que tus herramientas de rastreo parezcan navegadores legítimos y así evitar la detección y el bloqueo por parte de los sitios web.

Mediante el uso de cadenas de agente de usuario apropiadas o que varían aleatoriamente, los raspadores pueden eludir las restricciones de acceso, obtener la versión correcta del contenido web y reducir el riesgo de ser bloqueados.

  • Nota: el uso del agente de usuario incorrecto puede hacer que el script de extracción de datos se bloquee.

¿Tu raspador web se bloquea una y otra vez?
Nstbrowser maneja soluciones integrales de desbloqueo web
¡Pruébalo GRATIS ahora!

¿Cuáles son los mejores agentes de usuario para el raspado?

Si el UA puede imitar a los navegadores populares y de uso común, serían considerados los mejores agentes de usuario para el raspado web. Aquí hay algunos de ellos:

Agentes de usuario de escritorio

  1. Google Chrome en Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
  1. Mozilla Firefox en Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
  1. Microsoft Edge en Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59
  1. Safari en macOS
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15

Agentes de usuario móviles

  1. Google Chrome en Android
Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Mobile Safari/537.36
  1. Safari en iPhone
Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1
  1. Mozilla Firefox en Android
Mozilla/5.0 (Android 11; Mobile; rv:89.0) Gecko/89.0 Firefox/89.0

Cómo establecer un agente de usuario para el raspado web?

1. Código de muestra del agente de usuario

Hay muchas formas de personalizar el agente de usuario del navegador, la siguiente es una lista de códigos de muestra de agente de usuario personalizados comunes en los lenguajes de desarrollo principales:

Javascript

  • Puppeteer
const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36');
  await page.goto('https://example.com');
  const content = await page.content();
  console.log(content);
  await browser.close();
})();
  • Axios
const axios = require('axios');
const fetchData = async () => {
  try {
    const response = await axios.get('https://example.com', {
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'
      }
    });
    console.log(response.data);
  } catch (error) {
    console.error(error);
  }
};

Python

  • Puppeteer
import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'
}
response = requests.get('https://example.com', headers=headers)
print(response.content)
  • Selenium library
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36')
driver = webdriver.Chrome(options=options)
driver.get('https://example.com')

Java

  • HttpClient
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

public class WebScraping {
    public static void main(String[] args) throws Exception {
        String url = "https://example.com";
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet request = new HttpGet(url);
        request.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36");
        CloseableHttpResponse response = httpClient.execute(request);
        Document doc = Jsoup.parse(response.getEntity().getContent(), "UTF-8", url);
        System.out.println(doc.html());        
        response.close();
        httpClient.close();
    }
}
  • Selenium
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class WebScrapingWithChrome {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36");
        WebDriver driver = new ChromeDriver(options);
        driver.get("https://example.com");
        String pageSource = driver.getPageSource();
        System.out.println(pageSource);
        driver.quit();
    }
}

Go

  • net/http group
package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    client := &http.Client{}
    req, _ := http.NewRequest("GET", "https://example.com", nil)
    req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")
    resp, _ := client.Do(req)
    defer resp.Body.Close()
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}

2. Configurar con Nstbrowser

Independientemente del lenguaje de programación o la herramienta utilizada en el ejemplo anterior, el campo UserAgent en el encabezado de la solicitud HTTP se establece o modifica mediante métodos o configuraciones en las bibliotecas correspondientes.

Algunos navegadores anti-detección también admiten la personalización del User-Agent, y lo siguiente es un ejemplo para mostrar cómo personalizar el User-Agent a través del navegador de huella digital Nstbrowser se usa como ejemplo para mostrar cómo personalizar UserAgent mediante el navegador de huella digital:

Aplicación Nstbrowser

Personaliza el User Agent haciendo clic directamente en "Crear" desde el panel "Perfil" en la interfaz de usuario.

crear perfiles

API de Nstbrowser

También puedes personalizar UserAgent a través de métodos de API como LaunchBrowser, CreateProfile, Nstbrowser Puppeteer, etc., donde el código para usar el método Puppeteer es el siguiente:

import puppeteer from 'puppeteer-core';

// LaunchExistBrowser: Connect to or start an existing browser
// You need to create the corresponding profile in advance
// Support custom config
async function launchAndConnectToBrowser(profileId) {
  const host = 'localhost:8848';
  const apiKey = 'your api key';
  const config = {
    headless: true,
    autoClose: true,
    fingerprint: {
      name: 'browser113',
      platform: 'windows',
      kernel: 'chromium',
      kernelMilestone: '120',
      hardwareConcurrency: 4,
      deviceMemory: 8,
      proxy: '',
      userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.56 Safari/537.36',
    }
  };
  const query = new URLSearchParams({
    'x-api-key': apiKey, // required
    config: encodeURIComponent(JSON.stringify((config))),
  });
  const browserWSEndpoint = `ws://${host}/devtool/launch/${profileId}?${query.toString()}`;
  console.log('browserWSEndpoint: ', browserWSEndpoint);
  await execPuppeteer(browserWSEndpoint);
}

launchAndConnectToBrowser('your profileId').then();

¿Cómo evitar que tu UA sea bloqueado?

Si se envían demasiadas solicitudes con el mismo agente de usuario, activará el sistema anti-bot y eventualmente provocará el bloqueo. La mejor manera de evitar esto es rotar la lista de agentes de usuario para buscar y mantenerla actualizada.

1. Rotación de agentes de usuario

Rotar un agente de usuario de raspado significa reemplazarlo al hacer una solicitud web. Esto te permite acceder a más datos y aumentar la eficiencia de tu raspador. Este método también ayuda a proteger tu dirección IP de ser bloqueada y incluida en una lista negra.

¿Cómo rotar los agentes de usuario?

La mayoría de los navegadores admiten rotar el encabezado User-Agent. En JS, por ejemplo, se define una lista de AgentesDeUsuario disponibles de antemano, y luego se toma un AgentDeUsuario aleatorizado o rotado de la lista y se utiliza.

const axios = require('axios');

// define rotate UserAgent list
const userAgents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0',
    // more UerAgent
];
let currentIndex = 0;
async function fetchData() {
    try {
        const response = await axios.get('https://example.com', {
            headers: {
                'User-Agent': userAgents[currentIndex]
            }
        });
        console.log(response.data);
        currentIndex = (currentIndex + 1) % userAgents.length;
    } catch (error) {
        console.error(error);
    }
}
fetchData();

Evitar el bloqueo de UA con rotación inteligente de UA de Nstbrowser
¡Prueba gratis ahora!

También puedes usar la función Rotación de agentes de usuario que viene con un navegador anti-detección. Al rotar el valor del User-Agent, Nstbrowser puede evitar la detección anti-bot y evitar que se bloqueen las actividades de raspado.

El raspado web de Nstbrowser es una demostración de crear o editar una huella digital de UserAgent en el archivo de configuración de un cliente de Nstbrowser. Simplemente haz clic en el botón Aleatorizar UserAgent como se muestra en la siguiente figura:

evitar el bloqueo de ip

2. Intervalos aleatorios entre solicitudes

Mantén intervalos aleatorios entre solicitudes para evitar que tus raspadores sean detectados y bloqueados.

3. Agentes de usuario actualizados

¡Un agente de usuario desactualizado puede hacer que tu IP se bloquee! Para mantener una experiencia de raspado fluida y sin problemas, asegúrate de actualizar tu agente de usuario regularmente.

Eso es todo

Aunque la cadena de agente de usuario se puede modificar desde el cliente, aún no es lo suficientemente confiable para que los administradores de servidores web protejan sus servidores del tráfico de bots. Para evitar la incertidumbre y las molestias, un navegador anti-detección es una solución ideal para raspar sin problemas.

Nstbrowser ayuda a eludir la detección anti-bot y desbloquear el 99.9% de los sitios web con su huella digital de navegador real, solucionador de CAPTCHA, desbloqueador web y sin navegador. ¡Ah! ¡Prueba la versión gratuita y disfruta de tu acceso sin problemas al raspado web!

Más