🎉Все функции бесплатны и неограничены! Наслаждайтесь неограниченными профилями и командами за $0
Начато бесплатно
Назад к блогу
Web Scraping
Java
Лучший пользовательский агент для веб-скрапинга 2024 | Избегайте запрета UA при скрапинге
Вы наверняка много раз слышали о «User Agent». Знаете ли вы, что такое пользовательский агент? Как он влияет на нашу жизнь в Интернете? Получите ответ в этом блоге.
Jun 11, 2024Vasilisa Samsonova

Вы часто занимаетесь веб-скрейпингом? Вы очень заботитесь о своей конфиденциальности? Тогда вы наверняка много раз слышали о "User Agent". Знаете ли вы, что такое user agent? Как он влияет на нашу жизнь в интернете?

Начните читать, и вас заинтересует всё в этом блоге!

Что такое мой User Agent?

User Agent (UA) — это строка, которую браузер или другое клиентское программное обеспечение отправляет на веб-сервер. Она может предоставить информацию об устройстве пользователя и программной среде.

Эта строка включена в HTTP-заголовок веб-запроса и помогает серверу предоставить соответствующий контент в зависимости от конкретной конфигурации пользователя.

Другими словами, строка user agent помогает распознавать браузер, тип устройства и операционную систему, используемые пользователем.

Почему User Agent важен для веб-скрейпинга?

User agents критически важны для веб-скрейпинга, так как они помогают имитировать поведение человека в интернете. Они могут сделать ваши инструменты скрейпинга похожими на легитимные браузеры, что позволяет избегать обнаружения и блокировки со стороны веб-сайтов.

Используя соответствующие или случайно изменяемые строки user agent, скрейперы могут обойти ограничения на доступ, получить правильную версию веб-контента и снизить риск блокировки.

  • Примечание: Использование неправильного user agent может привести к блокировке скрипта для извлечения данных.

Ваш веб-скрейпер блокируется снова и снова?
Nstbrowser предлагает комплексные решения по разблокировке веб-страниц
Попробуйте бесплатно сейчас!

Какие лучшие User Agents для скрейпинга?

Если UA может имитировать популярные и часто используемые браузеры, их можно считать лучшими user agents для веб-скрейпинга. Вот некоторые из них:

User Agents для настольных ПК

  1. Google Chrome на 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 на Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
  1. Microsoft Edge на 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 на 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

User Agents для мобильных устройств

  1. Google Chrome на 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 на 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 на Android
Mozilla/5.0 (Android 11; Mobile; rv:89.0) Gecko/89.0 Firefox/89.0

Как установить User Agent для веб-скрейпинга?

1. Пример кода User Agent

Существует много способов настроить User Agent браузера, ниже приведен список примеров кода для настройки User Agent на основных языках разработки:

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
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 группа
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. Настройка с Nstbrowser

Независимо от того, какой язык программирования или инструмент используется в приведенных выше примерах, поле UserAgent в HTTP-заголовке запроса устанавливается или изменяется методами или конфигурациями в соответствующих библиотеках.

Некоторые браузеры с функциями защиты от обнаружения также поддерживают настройку User-Agent, и ниже приведен пример, показывающий, как настроить User-Agent через браузер с функциями защиты от отпечатков пальцев, используя Nstbrowser в качестве примера:

Приложение Nstbrowser

Настройте User Agent, нажав Create непосредственно на панели Profile в интерфейсе.

create UA

API Nstbrowser

Вы также можете настроить UserAgent через API методы, такие как LaunchBrowser, CreateProfile, Nstbrowser Puppeteer и другие. Код для использования метода Puppeteer приведен ниже:

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();

Как избежать блокировки вашего UA?

Если слишком много запросов отправляется от одного user agent, это вызовет срабатывание антибот-системы и в конечном итоге приведет к блокировке. Лучший способ избежать этого — ротировать список user agents и держать его в актуальном состоянии.

1. Ротация User-Agents

Ротация user agent при скрейпинге означает его замену при каждом новом веб-запросе. Это позволяет получить больше данных и увеличить эффективность скрейпера. Этот метод также помогает защитить ваш IP-адрес от блокировки и попадания в черные списки.

Как ротировать user agents?

Большинство браузеров поддерживают ротацию заголовка User-Agent. Например, в JS список доступных UserAgents определяется заранее, а затем из списка берется случайный или ротируемый UserAgent.

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();

Избегайте блокировки UA с интеллектуальной ротацией UA от Nstbrowser
Попробуйте бесплатно сейчас!

Вы также можете использовать функцию ротации UserAgent, которая поставляется с браузером с функциями защиты от обнаружения. Ротируя значение User-Agent, Nstbrowser может предотвратить обнаружение антиботами и избежать блокировки скрейпинговых действий.

Nstbrowser Web Scraping демонстрирует создание или редактирование отпечатка UserAgent в конфигурационном файле клиента Nstbrowser. Просто нажмите кнопку «Randomize UserAgent», как показано на следующем рисунке:

avoid ip ban

2. Случайные интервалы между запросами

Держите случайные интервалы между запросами, чтобы предотвратить обнаружение и блокировку ваших скрейперов.

3. Актуальные User Agents

Устаревший user agent может привести к блокировке вашего IP! Для поддержания плавного и бесперебойного процесса скрейпинга, убедитесь, что ваш user agent регулярно обновляется.

Завершение

Хотя строку user agent можно изменить на стороне клиента, она всё ещё недостаточно надежна для веб-администраторов для защиты своих серверов от бот-трафика. Чтобы избежать неопределенности и хлопот, браузер с функциями защиты от обнаружения является идеальным решением для плавного скрейпинга.

Nstbrowser помогает обходить обнаружение антиботов и разблокировать 99,9% веб-сайтов с его реальным отпечатком браузера, решателем CAPTCHA, разблокировщиком веб-страниц и функцией без браузера. О, попробуйте бесплатную версию и наслаждайтесь беспрепятственным доступом к веб-скрейпингу!

Больше