
Anh Tuan
Data Science Expert

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à 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 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ó.
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
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:
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:
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:
Dưới đây là một ví dụ mã đầy đủ để truy cập httpbin và in User Agent:
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:
{
"user-agent": "colly - https://github.com/gocolly/colly"
}
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ụ:
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)
}
}
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ụ:
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)
}
}
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:
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:
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.
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.
Khám phá CapSolver, giải pháp hàng đầu không cần lập trình để giải CAPTCHA cho tự động hóa AI vào năm 2026, để tối ưu quy trình làm việc và nâng cao thu thập dữ liệu mà không cần lập trình. Tìm hiểu về các tính năng chính, lợi ích và sử dụng có đạo đức của nó.

Hướng dẫn đầy đủ về cơ sở hạ tầng giải CAPTCHA cung cấp năng lượng cho Trình duyệt Agentic. Học tại sao CAPTCHA là rào cản chính đối với các đại diện AI và cách CapSolver cung cấp giải pháp thiết yếu cho tự động hóa web mượt mà.
