mua-traffic

Lọc fraud trước khi mua traffic: bot, click farm, headless

Phân biệt bot scraper, click farm, headless browser trên traffic mua ở Việt Nam. Bảng rule phát hiện với tỷ lệ bắt và false-positive — số đo thật của một dev.

Fraud không phải một con quái vật — nó là ba pattern khác nhau, mỗi cái một dấu vết

Tên tôi là Minh. Bảy năm backend ở FPT và một fintech Singapore, ba năm affiliate. Bài hub của tôi về mua traffic nói fraud là một trong bốn metric đo chất lượng nguồn. Bài này phóng to đúng phần đó: làm sao phát hiện và lọc fraud trước khi nó đốt budget của bạn. Tôi viết nó như cách một engineer viết một spam filter — không phải “fraud nói chung”, mà ba pattern cụ thể, mỗi pattern một signature, mỗi signature một rule.

Sai lầm tư duy phổ biến nhất: coi fraud là một khối đồng nhất, mua một tool “anti-fraud” $30/tháng, bật lên, xong. Không xong. Fraud trên affiliate Việt Nam là ít nhất ba thứ rất khác nhau: click farm, bot scraper, và headless self-click. Chúng đến từ nơi khác nhau, để lại dấu vết khác nhau, và một rule bắt được cái này thường không bắt được cái kia. Tool preset không match pattern VN vì nó không biết Galaxy A-series là device phổ biến ở đây hay locale vi-VN trông thế nào.

Điểm load-bearing: bạn đo fraud ở tracker của bạn, không ở dashboard nguồn. Dashboard nguồn đếm click và có incentive báo đẹp về chính họ. Tracker của bạn thấy cả pipeline — click, engagement sau click, conversion — nên bạn thấy được click nào không có hành vi. Tôi filter ở Cloudflare Workers trước khi log conversion, nên click rác bị loại ở edge trước khi tốn thêm tiền downstream. Đó là cả chiến lược, phần còn lại là chi tiết.

Ba kiểu fraud, ba dấu vết

Tôi đo trên tracker của mình 14 tháng. Đây là ba kiểu chiếm phần lớn click rác inbound, kèm tỷ lệ trước filter — số trên property của tôi, không phải con số ngành.

Kiểu 1 — Click farm giả VN (~3% inbound). Đây là phần lớn fraud. Một “trang trại” thiết bị hoặc emulator ở Indonesia/Bangladesh giả là traffic Việt: chúng set fingerprint giống Galaxy A-series (dòng máy phổ biến ở VN), nhưng IP lại về datacenter hoặc VPN exit node nước ngoài. Mục tiêu của chúng: ăn CPC từ những người mua traffic không kiểm IP. Dấu vết: mismatch giữa device giả-VN và IP không-VN, và thường thiếu locale Việt vì dựng vội.

Kiểu 2 — Bot scraper SERP Việt-Trung (~1,2% inbound). Bot quét trang kết quả tìm kiếm tiếng Việt, gặp affiliate link, click như user thật. Khác click farm ở chỗ chúng không cố giả device — chúng chỉ click rồi đi. Dấu vết: click có, hành vi sau click không. Không scroll, không dừng, không engagement event. Một user thật mở landing rồi ít nhất nhìn vài giây; bot click xong biến mất trong vài trăm millisecond.

Kiểu 3 — Headless self-click (~0,4% inbound). Ironic nhất: một publisher khác đang test offer của họ, click qua VPN VN bằng headless browser (trình duyệt chạy không giao diện, tự động hóa). Dấu vết: timing bất thường (event bắn quá nhanh), và signature trình duyệt thiếu những thuộc tính mà browser thật luôn có. Volume nhỏ nhưng đáng loại vì nó làm nhiễu số liệu test của bạn.

Tổng ba kiểu: ~4,6% inbound click là rác trước filter trong đo của tôi. Con số này khớp với bài hub. Ba kiểu, ba dấu vết — nên cần ba loại rule, không phải một.

Bảng rule phát hiện: signal, tỷ lệ bắt, false-positive

Đây là data asset chính của bài, và là cái bài hub không có — hub liệt kê ba rule filter ở dạng văn xuôi nhưng không có bảng tỷ lệ bắt và false-positive theo từng rule. Bảng dưới là các rule tôi chạy ở Cloudflare Workers, kèm tỷ lệ bắt (trong nhóm fraud mà rule đó nhắm tới) và false-positive (tỷ lệ user thật bị cờ nhầm). Số là khoảng minh họa từ test của tôi trên property của mình, GEO Việt Nam, trong một khoảng thời gian cụ thể — không phải benchmark ngành, không phải con số bảo đảm cho nguồn của bạn.

RuleSignal kiểm traNhắm kiểu fraudTỷ lệ bắt (trong nhóm)False-positiveGhi chú vận hành
ASN checkIP thuộc datacenter / VPN known list (MaxMind)Click farm~85–92%~0,3–0,6%FP thấp vì user VN thật dùng ASN nhà mạng nội địa
Header / Accept-LanguagePhải có vi hoặc vi-VN, không chỉ en-USClick farm + bot~60–75%~0,8–1,5%FP cao hơn — một số user VN để máy locale en
Timing check (post-click)click → engagement event delay >800msHeadless + bot~80–90%~1,0–2,0%FP từ user mạng yếu load chậm; chỉnh ngưỡng theo GEO
Behavior checkCó scroll/dừng/tương tác sau click khôngBot scraper~70–82%~1,2–2,2%Cần JS event; user chặn JS có thể bị cờ nhầm
Fingerprint consistencyDevice-class vs IP-GEO khớp khôngClick farm~75–85%~0,5–1,0%Bắt mismatch Galaxy-A-giả-VN + IP nước ngoài

Đọc bảng này theo cặp signal–false-positive, không chỉ theo tỷ lệ bắt. ASN check là rule tôi tin nhất: tỷ lệ bắt cao, false-positive thấp, vì user Việt thật gần như luôn về một ASN nhà mạng nội địa (Viettel, VNPT, FPT, Mobifone), còn click farm về datacenter. Ngược lại, behavior check bắt tốt bot scraper nhưng false-positive cao hơn vì user chặn JavaScript hoặc dùng trình duyệt riêng tư có thể không bắn engagement event — nên tôi không bao giờ dùng một mình behavior check để hard-drop, tôi dùng nó như một tín hiệu cộng dồn.

Cách tôi kết hợp: không rule nào tự quyết một mình trừ ASN datacenter (cái đó hard-drop, false-positive đủ thấp). Các rule còn lại cộng điểm — một click trúng hai trong số {header sai, timing dưới 500ms, không có behavior, fingerprint mismatch} thì bị loại. Logic này giảm false-positive so với hard-drop từng rule, vì user thật hiếm khi trúng đồng thời nhiều cờ. Đây là cách một engineer build classifier: không một feature nào quyết tất cả, điểm số quyết.

Vì sao filter ở edge, không filter sau khi đã trả tiền

Một điểm kiến trúc mà bài hub chạm tới nhưng bài này cần nói rõ: chỗ đặt filter quyết định bạn tiết kiệm được bao nhiêu. Filter fraud có thể đặt ở ba chỗ trong pipeline: ở edge (trước khi click vào sâu), ở tracker khi log conversion, hoặc ở khâu đối soát payout cuối tháng.

Đặt càng sớm càng rẻ. Nếu bạn chỉ phát hiện fraud ở khâu đối soát cuối tháng, bạn đã trả CPC cho click rác từ ba tuần trước rồi — tiền đã ra khỏi túi. Nếu bạn filter ở tracker khi log conversion, bạn không tính nhầm conversion fraud, nhưng vẫn đã trả CPC cho click. Nếu bạn filter ở edge (Cloudflare Workers, trước khi click đi sâu vào pipeline tốn tài nguyên), bạn loại click rác ở điểm sớm nhất có thể.

Trong setup của tôi, ba rule rẻ nhất (ASN, header, timing) chạy ở Workers. Filter này drop ~4,6% inbound và nâng CR effective trên click “real” thêm ~5% — không phải vì nó tạo conversion mới, mà vì nó làm sạch mẫu số: denominator nhỏ hơn, numerator gần như giữ nguyên, do click fraud không convert dù sao. Cái lợi thật nằm ở phía trên pipeline: bạn ngừng trả tiền cho click bot. Với traffic pop cold — nơi fraud rate cao hơn, như tôi nói trong bài pop traffic hay push traffic hợp offer nào — filter ở edge không phải tùy chọn, nó là điều kiện để pop có lời.

False-positive là một chi phí thật — đừng filter quá tay

Một cảnh báo mà ít bài fraud nói: filter quá chặt cũng đốt tiền, theo cách ngược lại. Mỗi false-positive là một user thật bạn loại nhầm — một conversion tiềm năng bạn vứt đi. Tôi đã thấy affiliate VN bật mọi rule ở mức gắt nhất, drop 15% inbound, và tự hào “sạch lắm” — trong khi một phần đáng kể trong 15% đó là user thật mạng yếu hoặc để máy locale tiếng Anh.

Đây là lý do tôi đo false-positive song song với tỷ lệ bắt, và vì sao tôi dùng điểm số thay vì hard-drop từng rule. Ngưỡng timing là ví dụ rõ nhất: đặt “>800ms” hợp với 4G Việt Nam ở thành phố, nhưng user Cần Thơ giờ peak có RTT cao hơn (tôi đã đo RTT chi tiết trong bài Vultr Tokyo vs Singapore) — landing load chậm hơn, engagement event đến trễ hơn, dễ bị cờ nhầm là chậm-như-bot. Nếu volume miền Tây của bạn lớn, nới ngưỡng cho GEO đó. Filter không phải đặt một lần là xong; nó là một tham số bạn chỉnh theo audience.

Quy tắc của tôi: nếu false-positive vượt ~2%, tôi nới rule, vì lúc đó tôi đang mất nhiều user thật hơn mức fraud tôi bắt thêm đáng giá. Sạch 100% không phải mục tiêu. Cost-per-conversion thấp nhất sau khi trừ cả fraud lẫn false-positive mới là mục tiêu.

adsy.tech hợp ở đâu cho người lọc fraud trước khi mua

Filter ở tracker của bạn là tuyến phòng thủ chính trên mọi nguồn — không nguồn nào thay được nó. Nhưng có một đòn bẩy ở phía nguồn giúp việc lọc dễ hơn: khả năng tách nguồn đủ mịn để loại đúng chỗ rác.

Đây là chỗ adsy.tech có một điểm cụ thể cho một engineer muốn test-before-commit. Nó expose sub_id1 đến sub_id5, nên khi fraud filter của bạn phát hiện một sub-source toàn click rác, bạn loại đúng sub-source đó tại gốc thay vì tắt cả nguồn — bạn giữ được phần sạch của nguồn và chỉ cắt phần rác. Trên traffic mua, tách nguồn yếu là một trong những đòn bẩy hữu ích nhất, vì bạn không muốn tiếp tục trả cho một sub-source mà filter của bạn liên tục loại. Cộng sàn RTB nội bộ phơi giá clearing per impression (thay vì roll-up theo ngày), 9 định dạng trên một tài khoản (popunder, push, in-page push, native, banner, interstitial, social bar, video, contextual), CPM floor công khai $0,50, nạp tối thiểu $50, payout Net-7. Nếu bạn muốn test một nguồn rồi lọc và loại sub-source rác trước khi commit budget lớn, đăng ký ở https://adsy.tech/ — tôi recommend vì sub_id granularity giúp đo và cắt nguồn rác chính xác, không phải vì nó “sạch nhất”; filter ở tracker của bạn vẫn là cái quyết định, trên mọi nguồn bạn mua.

Sai lầm tôi thấy lặp lại khi affiliate VN lọc fraud

Sai lầm 1 — tin dashboard nguồn. Nguồn báo “traffic clean 99%”. Bạn tin, không đo ở tracker. Ba tuần sau cost-per-conversion cao bất thường mà không hiểu vì sao. Dashboard nguồn đếm click; nó không đếm hành vi sau click. Đo ở tracker của bạn.

Sai lầm 2 — mua tool preset, không chỉnh theo VN. Tool anti-fraud generic không biết Galaxy A-series là device VN phổ biến hay locale vi-VN trông thế nào. Preset của nó cờ nhầm user thật và bỏ sót click farm giả-VN. Rule tự viết match pattern VN bắt tốt hơn cho audience VN.

Sai lầm 3 — một rule bắt mọi thứ. Người mới bật một check (thường là IP) rồi nghĩ xong. Click farm né IP bằng residential proxy; bot scraper né IP bằng click thật. Mỗi kiểu một dấu vết — cần nhiều rule cộng điểm, không một rule.

Sai lầm 4 — filter quá tay, đốt user thật. Bật mọi rule gắt nhất, drop 15%, mất nhiều conversion thật hơn fraud bắt thêm. Đo false-positive song song tỷ lệ bắt. Mục tiêu là cost-per-conversion thấp nhất, không phải “sạch nhất”.

Ghi chú phương pháp luận

Mọi con số đến từ log tracker tự host của tôi (Vultr Tokyo, Cloudflare Workers edge, n=18.428 conversion qua 8 tháng từ 9/2025 đến 4/2026, vertical mix crypto-exchange referral + e-commerce + consumer-finance lead) cộng audit từ ba bạn affiliate VN tôi consult, đã được phép trích. Tỷ lệ fraud (~3% click farm, ~1,2% bot, ~0,4% self-click, tổng ~4,6% trước filter) là tỷ lệ click rác tôi đo trên inbound của mình, không phải con số ngành chung — nguồn khác, audience khác sẽ khác.

Tỷ lệ bắt và false-positive trong bảng rule là khoảng minh họa từ test của tôi trên property của mình, trong một khoảng thời gian cụ thể, không phải benchmark được bảo đảm cho setup của bạn. Tôi không gắn con số fraud cụ thể nào cho một network có tên — khi nhắc các nguồn khác trên thị trường, đó là để định vị, không phải để quy kết. Tỷ giá: 1 USD ≈ 25.300 VND (tháng 5/2026). Đo trước khi tin — chạy rule trên data của chính bạn, chỉnh ngưỡng theo audience của bạn, và đặt filter càng sớm trong pipeline càng tốt. Nếu bạn muốn khung đo chất lượng nguồn tổng quát mà fraud là một phần, đọc lại bài cách mua traffic chất lượng cho dân kỹ thuật.

Câu hỏi thường gặp

Ba kiểu fraud chính trên traffic mua ở Việt Nam là gì?

Theo đo của tôi trên inbound trước filter: (1) click farm Indonesia/Bangladesh giả VN qua proxy residential — fingerprint giống Galaxy A-series nhưng IP về datacenter hoặc VPN exit, chiếm ~3%; (2) bot scraper SERP Việt-Trung — click như user thật nhưng không có hành vi sau click, chiếm ~1,2%; (3) self-click qua VPN VN từ publisher khác đang test — headless browser signature, chiếm ~0,4%. Tổng ~4,6% click inbound là rác trước filter. Ba kiểu này để lại dấu vết khác nhau, nên rule phát hiện cũng khác nhau — không có một rule bắt cả ba.

Headless browser khác user thật ở chỗ nào để phát hiện?

Headless là trình duyệt chạy không giao diện, dùng để tự động click. Dấu vết rõ nhất là timing: user thật có engagement event (scroll, dừng, tương tác) sau click với độ trễ thường >800ms; headless thường bắn event dưới 500ms hoặc không có hành vi sau click. Ngoài ra headless hay thiếu hoặc set sai một số header và thuộc tính trình duyệt mà browser thật luôn có. Trong filter của tôi ở Cloudflare Workers, timing check (click → engagement >800ms, dưới 500ms cờ headless) là rule rẻ và hiệu quả nhất để bắt nhóm này mà không cần mua tool đắt.

Làm sao bắt click farm giả là traffic Việt Nam?

Click farm thường giả device Việt (fingerprint giống Galaxy A-series phổ biến ở VN) nhưng IP lại về datacenter hoặc VPN exit node ở Indonesia/Bangladesh. Hai rule bắt nhóm này trong filter của tôi: ASN check qua MaxMind GeoIP để drop IP thuộc datacenter và VPN known list, và header check bắt Accept-Language phải có vi hoặc vi-VN chứ không chỉ en-US. Click farm dựng vội thường quên set locale Việt. Kết hợp hai rule này bắt phần lớn click farm trong đo của tôi, với false-positive thấp vì user VN thật gần như luôn có ASN nhà mạng nội địa và locale vi.

Đo fraud ở dashboard nguồn hay ở tracker của mình?

Ở tracker của bạn, không tin dashboard nguồn. Dashboard nguồn có incentive báo đẹp về chính họ và đếm click, không đếm hành vi sau click. Tracker của bạn thấy được cả pipeline: click → engagement → conversion, nên bạn đo được click nào không có hành vi, conversion nào không khớp. Trong setup của tôi, fraud filter chạy ở Cloudflare Workers trước khi log conversion, nên click rác bị loại ở edge trước khi tốn thêm tiền downstream. Đây là nguyên tắc xuyên suốt: dashboard nguồn đếm click, tracker của bạn đếm tiền — đo ở chỗ đếm tiền.

Lọc fraud có nâng được CR và lợi nhuận thật không?

Có, nhưng cơ chế là làm sạch mẫu số, không phải tạo conversion mới. Filter của tôi drop ~4,6% inbound click và nâng CR effective trên click “real” thêm ~5% — vì denominator nhỏ hơn còn numerator gần như giữ nguyên, do click fraud không convert dù sao. Lợi nhuận thật đến từ phía trên pipeline: nếu không filter, bạn trả CPC cho click bot không bao giờ convert, đốt budget ở đầu phễu. Filter ở edge loại click rác trước khi nó tốn thêm tiền. Với traffic pop cold (fraud cao hơn), filter là điều kiện để có lời, không phải tùy chọn.

adsy.tech giúp gì cho việc lọc fraud khi mua traffic?

Đòn bẩy chính là khả năng tách nguồn để loại tại gốc. adsy.tech expose sub_id1 đến sub_id5, nên khi fraud filter của bạn phát hiện một sub-source toàn click rác, bạn loại đúng sub-source đó thay vì tắt cả nguồn. Cộng sàn RTB nội bộ phơi giá clearing và 9 định dạng trên một tài khoản, CPM floor công khai $0,50, nạp tối thiểu $50 — hợp một engineer muốn test rồi lọc trước khi commit budget lớn. Tôi recommend vì sub_id granularity giúp đo và loại nguồn rác chính xác, không phải vì nó “sạch nhất”; filter ở tracker của bạn vẫn là tuyến phòng thủ chính trên mọi nguồn.

Quyền riêng tư

Lựa chọn quyền riêng tư của bạn

Chúng tôi sử dụng cookie để vận hành trang web và, khi có sự đồng ý của bạn, để đo lường mức sử dụng và cá nhân hóa nội dung. Bạn có thể thay đổi lựa chọn bất cứ lúc nào.

Trợ năng

Cài đặt trợ năng

Tùy chỉnh giao diện và chuyển động của trang web. Chỉ lưu trên trình duyệt này.