Rumah > pembangunan bahagian belakang > Golang > Golang dengan Colly: Gunakan Ejen Pengguna Palsu Rawak Semasa Mengikis

Golang dengan Colly: Gunakan Ejen Pengguna Palsu Rawak Semasa Mengikis

Barbara Streisand
Lepaskan: 2025-01-11 07:57:49
asal
532 orang telah melayarinya

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

Pengikisan tapak web selalunya membawa kepada sekatan kerana penggunaan ejen pengguna yang standard atau tidak sesuai. Artikel ini menunjukkan kaedah mudah untuk mengurangkan perkara ini dengan menggunakan ejen pengguna palsu rawak dalam pengikis Go Colly anda.

Memahami Ejen Pengguna Palsu

Ejen pengguna ialah rentetan yang mengenal pasti pelanggan yang membuat permintaan web. Mereka menyampaikan maklumat tentang aplikasi, sistem pengendalian (Windows, macOS, Linux) dan penyemak imbas (Chrome, Firefox, Safari). Tapak web menggunakan maklumat ini untuk pelbagai tujuan, termasuk keselamatan dan analitis.

Rentetan ejen pengguna biasa mungkin kelihatan seperti ini (Chrome pada 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>
Salin selepas log masuk

Ejen pengguna lalai Go Colly:

<code>"User-Agent": "colly - //m.sbmmt.com/link/953bd83cb0b9c9f9dc4b3ba0bfc1b236",</code>
Salin selepas log masuk

dengan mudah mengenal pasti pengikis anda, meningkatkan risiko disekat. Oleh itu, menggunakan ejen pengguna rawak tersuai adalah penting.

Melaksanakan Ejen Pengguna Palsu dengan Go Colly

Mengubah suai pengepala permintaan untuk memasukkan ejen pengguna tersuai dicapai menggunakan panggilan balik OnRequest(). Ini memastikan setiap permintaan menggunakan rentetan ejen pengguna yang berbeza.

<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>
Salin selepas log masuk

Ini menetapkan ejen pengguna tunggal untuk semua permintaan. Untuk pengikisan yang lebih mantap, gunakan pendekatan rawak.

Berputar Melalui Ejen Pengguna Rawak

Pakej github.com/lib4u/fake-useragent memudahkan pemilihan ejen pengguna rawak.

<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>
Salin selepas log masuk

Coretan kod ini mendapatkan semula ejen pengguna rawak untuk setiap permintaan.

Menggunakan Ejen Pengguna Palsu Tertentu

github.com/lib4u/fake-useragent menyediakan pilihan penapisan. Contohnya, untuk menggunakan ejen pengguna Chrome desktop rawak:

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

Ingat untuk sentiasa menghormati robots.txt tapak web dan syarat perkhidmatan apabila mengikis. Menggunakan ejen pengguna rawak adalah salah satu teknik untuk mengikis web yang bertanggungjawab; pertimbangkan untuk menggunakan proksi dan strategi pengurusan pengepala lain juga.

Rujukan:

Atas ialah kandungan terperinci Golang dengan Colly: Gunakan Ejen Pengguna Palsu Rawak Semasa Mengikis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan