Heim >Backend-Entwicklung >Golang >Golang mit Colly: Verwenden Sie beim Scrapen zufällige gefälschte Benutzeragenten

Golang mit Colly: Verwenden Sie beim Scrapen zufällige gefälschte Benutzeragenten

Barbara Streisand
Barbara StreisandOriginal
2025-01-11 07:57:49499Durchsuche

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

Website-Scraping führt häufig zu Blockaden aufgrund der Verwendung standardmäßiger oder ungeeigneter Benutzeragenten. Dieser Artikel zeigt eine einfache Methode, um dies zu mildern, indem Sie zufällig ausgewählte gefälschte Benutzeragenten in Ihren Go Colly-Scrapern verwenden.

Fake User-Agents verstehen

Benutzeragenten sind Zeichenfolgen, die den Client identifizieren, der eine Webanfrage stellt. Sie vermitteln Informationen über die Anwendung, das Betriebssystem (Windows, macOS, Linux) und den Browser (Chrome, Firefox, Safari). Websites nutzen diese Informationen für verschiedene Zwecke, einschließlich Sicherheit und Analyse.

Eine typische Benutzeragentenzeichenfolge könnte so aussehen (Chrome auf 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>

Go Collys Standard-Benutzeragent:

<code>"User-Agent": "colly - https://www.php.cn/link/953bd83cb0b9c9f9dc4b3ba0bfc1b236",</code>

Erkennt Ihren Schaber leicht und erhöht das Risiko einer Blockierung. Daher ist der Einsatz eines benutzerdefinierten, zufälligen Benutzeragenten von entscheidender Bedeutung.

Implementierung eines gefälschten Benutzeragenten mit Go Colly

Das Ändern von Anforderungsheadern, um einen benutzerdefinierten Benutzeragenten einzuschließen, wird mithilfe des OnRequest()-Rückrufs erreicht. Dadurch wird sichergestellt, dass jede Anfrage eine andere Benutzeragentenzeichenfolge verwendet.

<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>

Dadurch wird ein einziger Benutzeragent für alle Anfragen festgelegt. Für ein robusteres Scraping verwenden Sie einen randomisierten Ansatz.

Rotation durch zufällige Benutzeragenten

Das github.com/lib4u/fake-useragent-Paket vereinfacht die zufällige Auswahl von Benutzeragenten.

<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>

Dieses Code-Snippet ruft für jede Anfrage einen zufälligen Benutzeragenten ab.

Verwendung spezifischer gefälschter Benutzeragenten

github.com/lib4u/fake-useragent bietet Filteroptionen. Um beispielsweise einen zufälligen Desktop-Chrome-Benutzeragenten zu verwenden:

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

Denken Sie daran, beim Scrapen immer die robots.txt und Nutzungsbedingungen einer Website zu respektieren. Die Verwendung zufälliger Benutzeragenten ist eine Technik unter vielen für verantwortungsvolles Web-Scraping. Erwägen Sie auch die Verwendung von Proxys und anderen Header-Verwaltungsstrategien.

Referenzen:

Das obige ist der detaillierte Inhalt vonGolang mit Colly: Verwenden Sie beim Scrapen zufällige gefälschte Benutzeragenten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn