Heim >Backend-Entwicklung >Golang >Golang mit Colly: Verwenden Sie beim Scrapen zufällige gefälschte Benutzeragenten
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!