Bạn đã khởi động trình phân tích trên Wildberries hoặc Ozon, thiết lập proxy, nhưng sau một giờ lại gặp giới hạn và nhận được hàng loạt IP bị cấm — trong khi chỉ thu thập được vài nghìn thẻ hàng? Vấn đề gần như luôn là một: các tham số URL. Các bộ lọc, phân loại, phân trang và nhãn UTM biến một danh mục thành hàng chục nghìn bản sao kỹ thuật, và trình phân tích sẽ đi qua tất cả chúng thay vì thu thập dữ liệu duy nhất.
Các trang trùng lặp do tham số URL là gì
Trang trùng lặp là một URL mà về mặt kỹ thuật khác với một URL khác, nhưng nội dung trả về giống hoặc gần giống nhau. Ví dụ cổ điển: danh mục váy trên Wildberries có thể truy cập qua địa chỉ /catalog/zhenshchinam/odezhda/platya, nhưng kết quả tương tự, được phân loại theo giá, đã trở thành /catalog/zhenshchinam/odezhda/platya?sort=price. Thêm bộ lọc theo kích thước, thương hiệu, màu sắc, khoảng giá — và bạn sẽ có hàng trăm tổ hợp tham số, mỗi cái đều là một URL chính thức duy nhất.
Đối với người dùng thực, điều này rất tiện lợi: chọn bộ lọc — thấy sản phẩm cần thiết. Nhưng đối với trình phân tích, người đi qua các liên kết theo mẫu hoặc theo phân trang, mỗi tổ hợp như vậy là một trang riêng biệt cần tải, phân tích và lưu trữ. Nếu không đặt ra quy tắc, robot sẽ "rơi vào" một vòng lặp vô tận của các bộ lọc: phân loại theo giá → bộ lọc theo thương hiệu → bộ lọc theo kích thước → lại phân loại, nhưng theo thứ tự khác. Số lượng URL duy nhất tăng lên theo cấp số nhân, trong khi dữ liệu hữu ích trong đó không tăng — đó là những thẻ hàng giống nhau, chỉ khác thứ tự hoặc bộ dữ liệu bị cắt giảm.
Một loại bản sao riêng biệt là các nhãn UTM và tham số phiên (utm_source, clid, _openstat). Chúng hoàn toàn không ảnh hưởng đến nội dung của trang, nhưng nếu trình phân tích thu thập liên kết từ các trang khác của trang web như chúng là, nó sẽ kéo một thẻ hàng giống nhau hàng chục lần với các đuôi khác nhau trong địa chỉ.
Tại sao điều này lại quan trọng đối với trình phân tích
Đối với chuyên gia SEO, các trang trùng lặp là vấn đề về lập chỉ mục và làm mờ trọng số. Đối với những người phân tích thị trường để theo dõi giá cả hoặc thu thập danh mục, các bản sao là một sự mất mát trực tiếp về tiền bạc và thời gian, và điều này xảy ra theo ba hướng cùng một lúc.
Thứ nhất, mỗi lần tải một trang trùng lặp là một yêu cầu qua proxy. Nếu bạn sử dụng proxy xoay vòng trả phí (và để vượt qua bảo vệ của Wildberries và Ozon thì không thể thiếu chúng), bạn sẽ phải trả tiền cho lưu lượng truy cập, kể cả cho các yêu cầu vô ích. Khi quy mô lên đến hàng chục nghìn thẻ hàng, 30-40% yêu cầu cho các bản sao sẽ làm tăng chi phí một cách đáng kể.
Thứ hai, tốc độ thu thập giảm đi nhiều lần. Nếu trình phân tích của bạn có khả năng thực hiện 10 yêu cầu mỗi giây, và một phần ba trong số đó là cho các trang có cùng dữ liệu, thì tốc độ thực tế thu thập nội dung duy nhất giảm xuống còn 6-7 thẻ mỗi giây. Trên các danh mục lớn, đây là sự khác biệt giữa việc thu thập trong một giờ và nửa ngày.
Thứ ba, và đây là điều đau đớn nhất — nguy cơ bị cấm IP tăng lên tỷ lệ thuận với số lượng yêu cầu. Hệ thống chống bot của các thị trường tính toán tần suất truy cập từ một địa chỉ. Nếu bạn thực hiện gấp ba lần số yêu cầu cần thiết để thu thập dữ liệu mục tiêu, bạn sẽ nhanh chóng cạn kiệt "tín dụng tin cậy" của proxy và bị captcha hoặc chặn.
Các ví dụ thực tế: Wildberries, Ozon, Avito
Trên Wildberries, cùng một danh mục có thể được trả về với các tham số ?sort=popular, ?sort=rate, ?sort=newly, cộng với các bộ lọc fbrand, fsize, priceU. Nếu trình phân tích thu thập các liên kết "thẻ hàng → sản phẩm tương tự → lại thẻ hàng", nó dễ dàng tạo ra URL với các tổ hợp của tất cả các tham số này, mặc dù tập hợp hàng hóa bên trong giao nhau đến 90%.
Trên Ozon, có một câu chuyện tương tự với tham số ?sorting= và các bộ lọc theo đặc điểm của sản phẩm — ở đó có nhiều tổ hợp hơn nữa, vì mỗi danh mục có bộ lọc riêng của mình (vật liệu, thể tích, màu sắc, v.v.).
Trên Avito, một nỗi đau riêng biệt là các tham số định vị địa lý và bán kính tìm kiếm (?radius=, ?district=). Cùng một thông báo có thể "nổi lên" trong kết quả với các tổ hợp khác nhau của các tham số này, và một trình phân tích ngây thơ sẽ coi đây là các phát hiện khác nhau, làm phình to cơ sở dữ liệu với các bản ghi trùng lặp.
Cách các bản sao tiêu tốn ngân sách cho proxy và thời gian
Hãy tính toán theo một ví dụ giả định. Giả sử, một danh mục có 500 sản phẩm duy nhất, nhưng do 8 tùy chọn phân loại và 12 tổ hợp bộ lọc phổ biến, trình phân tích không chuẩn hóa URL sẽ đi qua không phải 500, mà là 4000-5000 trang với danh sách cộng với các lần truy cập lại vào cùng một thẻ hàng. Nếu một yêu cầu qua proxy cư trú có giá trị đơn vị lưu lượng, thì với cách tiếp cận ngây thơ, bạn sẽ tiêu tốn gấp 8-10 lần so với mức cần thiết để thu thập cùng một khối lượng dữ liệu duy nhất.
Tệ hơn nữa, các yêu cầu lặp lại từ cùng một IP đến các URL tương tự — đây là một mẫu đặc trưng cho các hệ thống chống bot. Càng cao tần suất và tính đồng nhất của các yêu cầu, thì bảo vệ sẽ kích hoạt càng nhanh. Kết quả là một vòng lặp khép kín: các bản sao làm tăng số lượng yêu cầu → tải tăng lên trên nhóm proxy → IP bị cấm nhanh hơn → phải thay đổi proxy thường xuyên hơn và khởi động lại thu thập → thời gian và chi phí phân tích cuối cùng tăng lên còn mạnh mẽ hơn.
Trong thực tế, điều này diễn ra như sau: người bán muốn theo dõi giá của 200 đối thủ trên Wildberries một lần mỗi ngày, nhưng do các URL không được làm sạch, kịch bản của họ thực hiện 15.000 yêu cầu thay vì 2.000, gặp phải giới hạn của nhóm proxy và nhận được dữ liệu không đầy đủ vào buổi tối thay vì buổi sáng.
Cách phát hiện các bản sao trước khi khởi động trình phân tích
Trước khi mở rộng thu thập, bạn nên dành một giờ để phân tích cấu trúc URL của trang web mục tiêu. Đây là trình tự hành động thực tế:
- Mở danh mục mục tiêu trong trình duyệt và lần lượt kiểm tra các bộ lọc và phân loại — ghi lại các tham số xuất hiện trong thanh địa chỉ.
- Kiểm tra xem nội dung của trang có thay đổi khi thêm tham số không ảnh hưởng đến kết quả (ví dụ: nhãn UTM) — nếu nội dung giống nhau, tham số này cần được bỏ qua khi thu thập.
- Xem
rel="canonical"trong mã nguồn của trang — các trang web thường tự chỉ ra URL nào được coi là "chính" cho các phiên bản trùng lặp. - Tập hợp một mẫu thử nghiệm nhỏ từ 100-200 URL và chạy nó qua một quy trình loại bỏ đơn giản theo các tham số chính — xem danh sách sẽ giảm bao nhiêu.
- Kiểm tra robots.txt — đôi khi đã có các chỉ thị Disallow cho các URL có tham số, đây cũng là một gợi ý về các tham số nào được coi là "rác".
Chuẩn hóa URL: quy tắc và ví dụ
Chuẩn hóa là việc đưa URL về một dạng chuẩn duy nhất trước khi quyết định xem có cần đi qua nó hay không. Nguyên tắc cơ bản: xác định các tham số "quan trọng" (ví dụ: số trang phân trang hoặc danh mục) và loại bỏ các tham số "không quan trọng" (phân loại, UTM, mã định danh phiên).
Ví dụ thực tế về quy tắc chuẩn hóa cho một danh mục giống Wildberries:
import urllib.parse as up
IGNORED_PARAMS = {"sort", "utm_source", "utm_medium", "utm_campaign", "clid", "_openstat"}
def normalize_url(url: str) -> str:
parsed = up.urlparse(url)
query = up.parse_qsl(parsed.query)
# giữ lại chỉ các tham số quan trọng, các tham số khác sẽ bị loại bỏ
filtered = [(k, v) for k, v in query if k not in IGNORED_PARAMS]
filtered.sort() # chuẩn hóa thứ tự của các tham số
new_query = up.urlencode(filtered)
return up.urlunparse(parsed._replace(query=new_query))
Sau khi chuẩn hóa, tất cả các phiên bản của cùng một danh sách với các phân loại khác nhau sẽ được gộp lại thành một URL. Trước khi gửi yêu cầu qua proxy, trình phân tích kiểm tra xem địa chỉ đã được chuẩn hóa này đã xuất hiện chưa — nếu có, nó sẽ bỏ qua. Đây là cách tiết kiệm chi phí nhất để giảm số lượng yêu cầu mà không làm mất tính đầy đủ của dữ liệu.
Đối với các trường hợp không phức tạp, bạn có thể thực hiện cùng một logic mà không cần mã — thông qua cài đặt của công cụ phân tích: chỉ định "bỏ qua các tham số" và liệt kê danh sách, hoặc đặt biểu thức chính quy để cắt đuôi URL sau dấu hỏi, nếu các tham số không mang lại thông tin quan trọng cho nhiệm vụ của bạn.
Cài đặt trình phân tích để bỏ qua các tham số
Hầu hết các giải pháp sẵn có để thu thập dữ liệu từ các thị trường và các công cụ xây dựng trình phân tích hỗ trợ quy tắc loại trừ các tham số URL ở cấp độ cài đặt dự án. Đây là những gì bạn nên kiểm tra và thiết lập trước tiên:
- Danh sách các tham số bị bỏ qua. Thêm tất cả các tham số đã tìm thấy trong quá trình phân tích phân loại, nhãn UTM và mã định danh phiên.
- Loại bỏ theo băm của URL đã chuẩn hóa. Nhiều trình phân tích lưu trữ danh sách các địa chỉ đã truy cập — điều quan trọng là so sánh theo phiên bản đã chuẩn hóa, không phải theo chuỗi gốc.
- Giới hạn độ sâu của việc đi qua các bộ lọc. Nếu nhiệm vụ là thu thập danh mục, chỉ cần một lần "đi qua cơ bản" mà không có phân loại và bộ lọc là đủ, không cần đi qua tất cả các tổ hợp một cách đệ quy.
- Ưu tiên phân trang hơn các bộ lọc. Nếu trang web trả về danh sách đầy đủ các sản phẩm thông qua phân trang, điều này thường là đủ — đi qua cùng một danh sách với các bộ lọc áp dụng là thừa thãi.
Sau khi thiết lập như vậy, số lượng yêu cầu thường giảm từ 3-6 lần tùy thuộc vào mức độ "có tham số" của danh mục trang web nguồn.
Vai trò của proxy trong việc mở rộng phân tích
Ngay cả sau khi chuẩn hóa URL hoàn hảo, việc phân tích các danh mục lớn trên Wildberries hoặc Ozon yêu cầu phân phối các yêu cầu giữa nhiều địa chỉ IP — nếu không, bảo vệ chống bot sẽ nhanh chóng phát hiện hoạt động bất thường từ một nguồn. Ở đây, việc chọn đúng loại proxy cho nhiệm vụ là rất quan trọng.
Đối với việc thu thập hàng hóa quy mô lớn và theo dõi giá cả, nơi mà khối lượng và tốc độ với chi phí hợp lý là quan trọng, thường chỉ cần proxy trung tâm dữ liệu — chúng nhanh hơn và rẻ hơn so với proxy cư trú, điều này rất quan trọng khi có hàng triệu yêu cầu mỗi ngày. Nhưng nếu bảo vệ của trang web cấm mạnh mẽ các dải IP trung tâm dữ liệu, bạn nên chuyển sang proxy cư trú, trông giống như người dùng thông thường từ các nhà cung cấp thực và ít bị nghi ngờ hơn.
Đối với các nhiệm vụ cụ thể — ví dụ, kiểm tra cách giá của một sản phẩm cụ thể được hiển thị từ thiết bị di động ở một khu vực cụ thể — các proxy di động sẽ hữu ích, chúng mô phỏng kết nối qua nhà mạng di động và gần như không bao giờ bị chặn hàng loạt.
Quan trọng là phải hiểu: việc chọn đúng proxy không thay thế cho việc chuẩn hóa URL, mà bổ sung cho nó. Nếu không làm sạch các bản sao, bạn sẽ chỉ nhanh chóng tiêu thụ ngay cả nhóm IP chất lượng nhất. Trước tiên, giảm số lượng yêu cầu vô ích, sau đó mở rộng các yêu cầu còn lại thông qua xoay vòng proxy — chính theo thứ tự này sẽ mang lại tiết kiệm tối đa.
Danh sách kiểm tra trước khi khởi động thu thập dữ liệu
Trước khi khởi động trình phân tích ở quy mô thực tế, hãy đi qua danh sách kiểm tra ngắn gọn:
| Mục kiểm tra | Tại sao cần thiết |
|---|---|
| Danh sách các tham số phân loại và bộ lọc đã được xác định | Hiểu các URL nào có thể coi là bản sao |
| Quy tắc chuẩn hóa URL đã được thiết lập | Gộp các bản sao thành một địa chỉ chính |
| Loại bỏ theo băm đã được bật | Loại bỏ việc tải lại cùng một dữ liệu |
| Loại proxy đã được chọn phù hợp với khối lượng và tính quyết liệt của bảo vệ | Giảm nguy cơ bị cấm và tăng tốc độ thu thập |
| Giới hạn yêu cầu trên IP đã được thiết lập với một khoảng trống | Tránh việc cấm hàng loạt nhóm proxy |
Kết luận
Các bộ lọc, phân loại và tham số chức năng trong URL không chỉ là một chi tiết kỹ thuật, mà là một trong những nguồn chính của lưu lượng vô ích khi phân tích các thị trường. Nếu không chuẩn hóa URL, trình phân tích có thể thực hiện từ 5-10 lần nhiều yêu cầu hơn mức cần thiết để thu thập cùng một dữ liệu, điều này trực tiếp ảnh hưởng đến ngân sách cho proxy, tốc độ thu thập và nguy cơ bị chặn.
Giải pháp rất đơn giản trong cách diễn đạt, nhưng yêu cầu kỷ luật trong giai đoạn chuẩn bị: phân tích cấu trúc URL của trang web mục tiêu, xác định các tham số nào ảnh hưởng đến nội dung và tham số nào không, thiết lập loại bỏ theo địa chỉ đã chuẩn hóa và chỉ sau đó mở rộng thu thập thông qua xoay vòng proxy. Nếu nhiệm vụ của bạn là theo dõi ổn định giá cả và danh mục trên Wildberries, Ozon hoặc Avito với khối lượng lớn, bạn nên bắt đầu với proxy cư trú — chúng cung cấp sự cân bằng tốt nhất giữa độ tin cậy của hệ thống chống bot và tính linh hoạt trong việc thiết lập cho nhiệm vụ cụ thể.