Maison > développement back-end > Golang > Golang avec Colly : utilisez de faux agents utilisateurs aléatoires lors du scraping

Golang avec Colly : utilisez de faux agents utilisateurs aléatoires lors du scraping

Barbara Streisand
Libérer: 2025-01-11 07:57:49
original
531 Les gens l'ont consulté

Golang with Colly: Use Random Fake User-Agents When Scraping

Le scraping de sites Web entraîne souvent des blocages en raison de l'utilisation d'agents utilisateurs standards ou inappropriés. Cet article présente une méthode simple pour atténuer ce problème en utilisant de faux agents utilisateurs randomisés dans vos scrapers Go Colly.

Comprendre les faux agents utilisateurs

Les agents utilisateurs sont des chaînes identifiant le client effectuant une requête Web. Ils transmettent des informations sur l'application, le système d'exploitation (Windows, macOS, Linux) et le navigateur (Chrome, Firefox, Safari). Les sites Web utilisent ces informations à diverses fins, notamment pour la sécurité et l'analyse.

Une chaîne d'agent utilisateur typique pourrait ressembler à ceci (Chrome sur Android) :

<code>'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36'</code>
Copier après la connexion

L'agent utilisateur par défaut de Go Colly :

<code>"User-Agent": "colly - //m.sbmmt.com/link/953bd83cb0b9c9f9dc4b3ba0bfc1b236",</code>
Copier après la connexion

identifie facilement votre grattoir, augmentant ainsi le risque d'être bloqué. Par conséquent, il est crucial d’employer un agent utilisateur personnalisé et randomisé.

Implémentation d'un faux agent utilisateur avec Go Colly

La modification des en-têtes de requête pour inclure un agent utilisateur personnalisé est réalisée à l'aide du rappel OnRequest(). Cela garantit que chaque requête utilise une chaîne d'agent utilisateur différente.

<code class="language-go">package main

import (
    "bytes"
    "log"
    "github.com/gocolly/colly"
)

func main() {
    c := colly.NewCollector(colly.AllowURLRevisit())

    c.OnRequest(func(r *colly.Request) {
        r.Headers.Set("User-Agent", "Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148")
    })

    c.OnResponse(func(r *colly.Response) {
        log.Printf("%s\n", bytes.Replace(r.Body, []byte("\n"), nil, -1))
    })

    for i := 0; i < 5; i++ {
        c.Visit("httpbin.org/headers")
    }
}</code>
Copier après la connexion

Cela définit un seul agent utilisateur pour toutes les demandes. Pour un grattage plus robuste, utilisez une approche aléatoire.

Rotation via des agents utilisateurs aléatoires

Le package github.com/lib4u/fake-useragent simplifie la sélection aléatoire des agents utilisateurs.

<code class="language-go">package main

import (
    "bytes"
    "fmt"
    "log"
    "github.com/gocolly/colly"
    uaFake "github.com/lib4u/fake-useragent"
)

func main() {
    ua, err := uaFake.New()
    if err != nil {
        fmt.Println(err)
    }
    c := colly.NewCollector(colly.AllowURLRevisit())

    c.OnRequest(func(r *colly.Request) {
        r.Headers.Set("User-Agent", ua.Filter().GetRandom())
    })

    c.OnResponse(func(r *colly.Response) {
        log.Printf("%s\n", bytes.Replace(r.Body, []byte("\n"), nil, -1))
    })

    for i := 0; i < 5; i++ {
        c.Visit("httpbin.org/headers")
    }
}</code>
Copier après la connexion

Cet extrait de code récupère un agent utilisateur aléatoire pour chaque requête.

Utilisation de faux agents utilisateurs spécifiques

github.com/lib4u/fake-useragent fournit des options de filtrage. Par exemple, pour utiliser un agent utilisateur Chrome aléatoire sur un ordinateur de bureau :

<code class="language-go">r.Headers.Set("User-Agent", ua.Filter().Chrome().Platform(uaFake.Desktop).Get())</code>
Copier après la connexion

N'oubliez pas de toujours respecter les robots.txt et les conditions d'utilisation d'un site Web lors du scraping. L’utilisation d’agents utilisateurs aléatoires est une technique parmi tant d’autres pour un web scraping responsable ; envisagez également d'utiliser des proxys et d'autres stratégies de gestion d'en-tête.

Références :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal