Thay đổi User Agents cho Web Scraping với Go Colly

Anh Tuan
Data Science Expert
27-Sep-2024

Khi bạn đang làm việc trên các dự án web scraping, thay đổi chuỗi User-Agent là một trong những cách hiệu quả nhất để ngăn chặn trình thu thập dữ liệu của bạn bị chặn hoặc bị gắn cờ là bot. Các máy chủ web thường sử dụng chuỗi User-Agent để xác định loại máy khách (ví dụ: trình duyệt, bot hoặc trình thu thập dữ liệu) đang truy cập tài nguyên của họ. Nếu trình thu thập dữ liệu của bạn gửi cùng một User-Agent cho mỗi yêu cầu, bạn có nguy cơ bị phát hiện và có khả năng bị chặn. Trong bài viết này, chúng ta sẽ khám phá cách thay đổi User-Agent trong Go Colly, một khung web scraping phổ biến trong Go, để giúp nỗ lực thu thập dữ liệu của bạn hiệu quả và linh hoạt hơn.
Colly là gì?
Colly là một khung Gophers thu thập dữ liệu nhanh chóng và thanh lịch. Colly cung cấp một giao diện rõ ràng để viết bất kỳ loại trình thu thập dữ liệu/trình thu thập dữ liệu/nhện nào. Với Colly, bạn có thể dễ dàng trích xuất dữ liệu có cấu trúc từ các trang web, có thể được sử dụng cho nhiều ứng dụng khác nhau, như khai thác dữ liệu, xử lý dữ liệu hoặc lưu trữ.
User Agent của Colly là gì?
User Agent là một chuỗi đặc biệt được tìm thấy trong tiêu đề yêu cầu cho phép máy chủ xác định hệ điều hành và phiên bản của máy khách, loại và phiên bản trình duyệt và các chi tiết khác.
Đối với trình duyệt thông thường, các chuỗi User Agent trông như thế này:
-
Google Chrome phiên bản 128 trên hệ điều hành Windows:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 -
Firefox:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0
Tuy nhiên, trong Colly (một khung web scraping), User Agent mặc định là:
colly - https://github.com/gocolly/colly
Trong bối cảnh thu thập dữ liệu, một trong những biện pháp chống thu thập dữ liệu phổ biến nhất là xác định xem yêu cầu có đến từ trình duyệt thông thường hay không bằng cách kiểm tra User Agent. Điều này giúp xác định bot.
User Agent mặc định của Colly rõ ràng tương đương với việc trực tiếp nói với trang web mục tiêu: "Tôi là một bot." Điều này khiến các trang web dễ dàng phát hiện và có khả năng chặn các nỗ lực thu thập dữ liệu sử dụng Colly với cài đặt mặc định của nó.
Mã bổ sung
Nhận Mã bổ sung của bạn cho các giải pháp captcha hàng đầu; CapSolver: WEBS. Sau khi đổi, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, không giới hạn
Tại sao phải thay đổi User-Agent?
Trước khi đi sâu vào mã, hãy xem nhanh lý do tại sao thay đổi User-Agent lại rất quan trọng:
- Tránh bị phát hiện: Nhiều trang web sử dụng các cơ chế chống bot phân tích các chuỗi User-Agent đến để phát hiện các mẫu đáng ngờ hoặc lặp đi lặp lại. Nếu trình thu thập dữ liệu của bạn gửi cùng một User-Agent trong mọi yêu cầu, nó sẽ trở thành mục tiêu dễ dàng để phát hiện.
- Bắt chước trình duyệt thực: Bằng cách thay đổi chuỗi User-Agent, trình thu thập dữ liệu của bạn có thể bắt chước các trình duyệt thực như Chrome, Firefox hoặc Safari, khiến nó ít có khả năng bị gắn cờ là bot.
- Nâng cao trải nghiệm người dùng và giải quyết CAPTCHA: Nhiều trang web sử dụng các thử thách CAPTCHA để xác minh rằng người dùng không phải là bot, đảm bảo trải nghiệm duyệt web an toàn hơn. Tuy nhiên, đối với các tác vụ tự động hóa, những thử thách này có thể làm gián đoạn quy trình làm việc. Nếu trình thu thập dữ liệu của bạn gặp phải các thử thách CAPTCHA như vậy, bạn có thể tích hợp các công cụ như CapSolver để tự động giải quyết chúng, cho phép tự động hóa của bạn tiếp tục trơn tru mà không bị gián đoạn.
Cách thiết lập User Agent tùy chỉnh trong Colly
Chắc chắn rồi! Tôi sẽ dịch văn bản sang tiếng Anh và định dạng nó cho phù hợp. Đây là phiên bản đã được dịch và định dạng:
Xử lý User Agent trong Colly
Chúng ta có thể kiểm tra giá trị của User Agent của mình bằng cách truy cập https://httpbin.org/user-agent. Colly chủ yếu cung cấp ba phương thức để xử lý yêu cầu:
- Visit: Truy cập trang web mục tiêu
- OnResponse: Xử lý nội dung phản hồi
- OnError: Xử lý lỗi yêu cầu
Dưới đây là một ví dụ mã đầy đủ để truy cập httpbin và in User Agent:
go
package main
import (
"github.com/gocolly/colly"
"log"
)
func main() {
// Tạo một bộ thu thập mới
c := colly.NewCollector()
// Gọi hàm gọi lại onResponse và in nội dung HTML
c.OnResponse(func(r *colly.Response) {
log.Println(string(r.Body))
})
// Xử lý lỗi yêu cầu
c.OnError(func(e *colly.Response, err error) {
log.Println("Yêu cầu thất bại, lỗi:", err)
})
// Bắt đầu thu thập dữ liệu
err := c.Visit("https://httpbin.org/user-agent")
if err != nil {
log.Fatal(err)
}
}
Điều này sẽ xuất ra:
json
{
"user-agent": "colly - https://github.com/gocolly/colly"
}
Tùy chỉnh User Agent
Colly cung cấp phương thức colly.UserAgent để tùy chỉnh User Agent. Nếu bạn muốn sử dụng các User Agent khác nhau cho mỗi yêu cầu, bạn có thể định nghĩa một danh sách các User Agent và chọn ngẫu nhiên từ danh sách đó. Dưới đây là một ví dụ:
go
package main
import (
"github.com/gocolly/colly"
"log"
"math/rand"
)
var userAgents = []string{
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 OPR/113.0.0.0",
}
func main() {
// Tạo một bộ thu thập mới
c := colly.NewCollector(
// Đặt user agent
colly.UserAgent(userAgents[rand.Intn(len(userAgents))]),
)
// Gọi hàm gọi lại onResponse và in nội dung HTML
c.OnResponse(func(r *colly.Response) {
log.Println(string(r.Body))
})
// Xử lý lỗi yêu cầu
c.OnError(func(e *colly.Response, err error) {
log.Println("Yêu cầu thất bại, lỗi:", err)
})
// Bắt đầu thu thập dữ liệu
err := c.Visit("https://httpbin.org/user-agent")
if err != nil {
log.Fatal(err)
}
}
Sử dụng thư viện fake-useragent
Thay vì duy trì danh sách User Agent tùy chỉnh, chúng ta có thể sử dụng thư viện fake-useragent để tạo các User Agent ngẫu nhiên. Dưới đây là một ví dụ:
go
package main
import (
browser "github.com/EDDYCJY/fake-useragent"
"github.com/gocolly/colly"
"log"
)
func main() {
// Tạo một bộ thu thập mới
c := colly.NewCollector(
// Đặt user agent
colly.UserAgent(browser.Random()),
)
// Gọi hàm gọi lại onResponse và in nội dung HTML
c.OnResponse(func(r *colly.Response) {
log.Println(string(r.Body))
})
// Xử lý lỗi yêu cầu
c.OnError(func(e *colly.Response, err error) {
log.Println("Yêu cầu thất bại, lỗi:", err)
})
// Bắt đầu thu thập dữ liệu
err := c.Visit("https://httpbin.org/user-agent")
if err != nil {
log.Fatal(err)
}
}
Tích hợp CapSolver
Trong khi việc ngẫu nhiên hóa User Agent trong Colly có thể giúp tránh bị xác định là bot ở một mức độ nào đó, điều đó có thể không đủ khi phải đối mặt với các thử thách chống bot tinh vi hơn. Các ví dụ về những thử thách như vậy bao gồm reCAPTCHA, captcha, captcha, captcha WAF, captcha, Cloudflare Turnstile và những thử thách khác. Các hệ thống này kiểm tra tính hợp lệ của tiêu đề yêu cầu của bạn, xác minh dấu vân tay trình duyệt của bạn, đánh giá rủi ro của IP của bạn và có thể yêu cầu các tham số mã hóa JS phức tạp hoặc các tác vụ nhận dạng hình ảnh khó khăn.
Những thử thách này có thể cản trở đáng kể nỗ lực thu thập dữ liệu của bạn. Tuy nhiên, bạn không cần phải lo lắng - tất cả các thử thách bot đã đề cập ở trên có thể được xử lý bởi CapSolver. CapSolver sử dụng công nghệ Auto Web Unblock dựa trên AI để tự động giải quyết CAPTCHA. Tất cả các tác vụ phức tạp có thể được giải quyết thành công trong vòng vài giây.
Trang web chính thức cung cấp SDK trong nhiều ngôn ngữ, giúp dễ dàng tích hợp vào dự án của bạn. Bạn có thể tham khảo tài liệu CapSolver để biết thêm thông tin về cách triển khai giải pháp này trong các dự án thu thập dữ liệu của bạn.
Chắc chắn rồi! Dưới đây là kết luận cho bài viết về việc thay đổi User Agent trong Go Colly:
Kết luận
Thay đổi User-Agent trong Go Colly là một kỹ thuật quan trọng để thu thập dữ liệu web hiệu quả và linh hoạt. Bằng cách triển khai User-Agent tùy chỉnh, bạn có thể giảm đáng kể nguy cơ trình thu thập dữ liệu của bạn bị phát hiện và bị chặn bởi các trang web mục tiêu. Dưới đây là tóm tắt các điểm chính mà chúng ta đã đề cập:
-
Chúng ta đã biết lý do tại sao việc thay đổi User-Agent lại quan trọng đối với các dự án web scraping.
-
Chúng ta đã khám phá các phương thức khác nhau để thiết lập User-Agent tùy chỉnh trong Colly, bao gồm:
- Sử dụng danh sách User-Agent được xác định trước
- Triển khai lựa chọn ngẫu nhiên từ danh sách này
- Sử dụng thư viện fake-useragent để có nhiều tùy chọn hơn
-
Chúng ta đã thảo luận về cách những kỹ thuật này có thể giúp bắt chước hành vi trình duyệt thực và tránh bị phát hiện.
-
Đối với các thử thách chống bot nâng cao hơn, chúng ta đã giới thiệu khái niệm sử dụng các công cụ chuyên dụng như CapSolver để xử lý CAPTCHA và các hệ thống xác minh phức tạp khác.
Hãy nhớ rằng, trong khi việc thay đổi User-Agent là một chiến lược hiệu quả, nó chỉ là một phần của việc thu thập dữ liệu web có trách nhiệm và hiệu quả. Luôn tôn trọng các điều khoản dịch vụ của trang web và tệp robots.txt, triển khai giới hạn tốc độ và xem xét các tác động đạo đức của các hoạt động thu thập dữ liệu của bạn.
Bằng cách kết hợp những kỹ thuật này với các thực tiễn tốt nhất khác trong việc thu thập dữ liệu web, bạn có thể tạo ra các trình thu thập dữ liệu mạnh mẽ và đáng tin cậy hơn bằng cách sử dụng Go Colly. Khi công nghệ web tiếp tục phát triển, việc cập nhật những kỹ thuật và công cụ thu thập dữ liệu mới nhất sẽ rất quan trọng để duy trì hiệu quả của các dự án thu thập dữ liệu web của bạn.
Ghi chú về tuân thủ
Quan trọng: Khi tham gia vào việc thu thập dữ liệu web, điều quan trọng là phải tuân thủ các hướng dẫn pháp lý và đạo đức. Luôn đảm bảo rằng bạn có quyền thu thập dữ liệu từ trang web mục tiêu và tôn trọng tệp
robots.txtvà các điều khoản dịch vụ của trang web. CapSolver phản đối việc lạm dụng dịch vụ của chúng tôi cho bất kỳ hoạt động nào không tuân thủ. Việc lạm dụng các công cụ tự động để bỏ qua CAPTCHA mà không có sự cho phép thích hợp có thể dẫn đến hậu quả pháp lý. Hãy đảm bảo các hoạt động thu thập dữ liệu của bạn tuân thủ tất cả các luật và quy định hiện hành để tránh các vấn đề tiềm ẩn.
Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.
Thêm

Tiện ích tốt nhất để giải CAPTCHA 2026 là gì?
Trong thế giới an ninh trực tuyến không ngừng phát triển, các thách thức CAPTCHA đã trở thành rào cản phổ biến đối với người dùng internet...

Ethan Collins
12-Dec-2025

Genlogin: Đổi mới Trải nghiệm Tự động hóa Web
Trong bài viết này, chúng tôi sẽ giới thiệu cho bạn Genlogin là gì và các dịch vụ mà họ cung cấp.

Rajinder Singh
12-Dec-2025

Proxys.io: Proxy riêng lẻ cho bất kỳ nhiệm vụ nào
Trong bài viết này, chúng tôi sẽ giới thiệu cho bạn Proxys.io là gì và các dịch vụ mà họ cung cấp.

Lucas Mitchell
12-Dec-2025

Tabproxy: Dịch vụ proxy nhà ở giá trị tốt cho khu vực nước ngoài
Trong bài viết này, chúng tôi sẽ giới thiệu cho bạn Tabproxy là gì và các dịch vụ mà họ cung cấp.

Anh Tuan
12-Dec-2025

IP2World Proxy Nhà Ở: Giải pháp IP proxy toàn cầu hàng đầu
Trong bài viết này, chúng tôi sẽ giới thiệu cho bạn IP2World là gì và các dịch vụ mà họ cung cấp.

Ethan Collins
12-Dec-2025

Các lỗi 402, 403, 404 và 429 là gì trong việc quét web? Hướng dẫn toàn diện
Nắm vững xử lý lỗi quét web bằng cách hiểu các lỗi 402, 403, 404 và 429. Học cách sửa lỗi 403 Cấm, triển khai giải pháp xử lý lỗi 429 và xử lý mã trạng thái 402 Yêu cầu thanh toán mới xuất hiện.

Lucas Mitchell
12-Dec-2025


