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>
Ejen pengguna lalai Go Colly:
<code>"User-Agent": "colly - //m.sbmmt.com/link/953bd83cb0b9c9f9dc4b3ba0bfc1b236",</code>
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>
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>
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>
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!