¿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!
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.
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.
¿Tu raspador web se bloquea una y otra vez?
Nstbrowser maneja soluciones integrales de desbloqueo web
¡Pruébalo GRATIS ahora!
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:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
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
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
Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Mobile Safari/537.36
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
Mozilla/5.0 (Android 11; Mobile; rv:89.0) Gecko/89.0 Firefox/89.0
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
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();
})();
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
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)
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
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();
}
}
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
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))
}
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:
Personaliza el User Agent haciendo clic directamente en "Crear" desde el panel "Perfil" en la interfaz de usuario.
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();
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.
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:
Mantén intervalos aleatorios entre solicitudes para evitar que tus raspadores sean detectados y bloqueados.
¡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.
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!