Вы часто занимаетесь веб-скрейпингом? Вы очень заботитесь о своей конфиденциальности? Тогда вы наверняка много раз слышали о "User Agent". Знаете ли вы, что такое user agent? Как он влияет на нашу жизнь в интернете?
Начните читать, и вас заинтересует всё в этом блоге!
User Agent (UA) — это строка, которую браузер или другое клиентское программное обеспечение отправляет на веб-сервер. Она может предоставить информацию об устройстве пользователя и программной среде.
Эта строка включена в HTTP-заголовок веб-запроса и помогает серверу предоставить соответствующий контент в зависимости от конкретной конфигурации пользователя.
Другими словами, строка user agent помогает распознавать браузер, тип устройства и операционную систему, используемые пользователем.
User agents критически важны для веб-скрейпинга, так как они помогают имитировать поведение человека в интернете. Они могут сделать ваши инструменты скрейпинга похожими на легитимные браузеры, что позволяет избегать обнаружения и блокировки со стороны веб-сайтов.
Используя соответствующие или случайно изменяемые строки user agent, скрейперы могут обойти ограничения на доступ, получить правильную версию веб-контента и снизить риск блокировки.
Ваш веб-скрейпер блокируется снова и снова?
Nstbrowser предлагает комплексные решения по разблокировке веб-страниц
Попробуйте бесплатно сейчас!
Если UA может имитировать популярные и часто используемые браузеры, их можно считать лучшими user agents для веб-скрейпинга. Вот некоторые из них:
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
Существует много способов настроить User Agent браузера, ниже приведен список примеров кода для настройки User Agent на основных языках разработки:
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))
}
Независимо от того, какой язык программирования или инструмент используется в приведенных выше примерах, поле UserAgent в HTTP-заголовке запроса устанавливается или изменяется методами или конфигурациями в соответствующих библиотеках.
Некоторые браузеры с функциями защиты от обнаружения также поддерживают настройку User-Agent, и ниже приведен пример, показывающий, как настроить User-Agent через браузер с функциями защиты от отпечатков пальцев, используя Nstbrowser в качестве примера:
Настройте User Agent, нажав Create непосредственно на панели Profile в интерфейсе.
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();
Если слишком много запросов отправляется от одного user agent, это вызовет срабатывание антибот-системы и в конечном итоге приведет к блокировке. Лучший способ избежать этого — ротировать список 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», как показано на следующем рисунке:
Держите случайные интервалы между запросами, чтобы предотвратить обнаружение и блокировку ваших скрейперов.
Устаревший user agent может привести к блокировке вашего IP! Для поддержания плавного и бесперебойного процесса скрейпинга, убедитесь, что ваш user agent регулярно обновляется.
Хотя строку user agent можно изменить на стороне клиента, она всё ещё недостаточно надежна для веб-администраторов для защиты своих серверов от бот-трафика. Чтобы избежать неопределенности и хлопот, браузер с функциями защиты от обнаружения является идеальным решением для плавного скрейпинга.
Nstbrowser помогает обходить обнаружение антиботов и разблокировать 99,9% веб-сайтов с его реальным отпечатком браузера, решателем CAPTCHA, разблокировщиком веб-страниц и функцией без браузера. О, попробуйте бесплатную версию и наслаждайтесь беспрепятственным доступом к веб-скрейпингу!