Cách kiểm tra & loại trừ IP click ảo trong Google Ads

Click ảo (click fraud / invalid clicks) làm hao ngân sách quảng cáo Google Ads, bóp méo dữ liệu đo lường và hạ ROAS. Bài này hướng dẫn toàn bộ quy trình từ phát hiện dấu hiệu click ảo đến thu thập bằng chứng, tạo danh sách IP nghi vấn và loại trừ trên Google Ads (và chặn ở lớp hạ tầng) — kèm công cụ, truy vấn mẫu và script thực thi:

  • Phát hiện: dùng Google Ads → báo cáo invalid clicks + GA4 / Landing Page metrics (time on site, bounce, session duration) + server logs.

  • Xác thực: so sánh IP từ server logs với session behavior (nhỏ, 1 trang, referrer lạ, user-agent giống nhau).

  • Thu thập: tạo file IP list, kèm cột timestamp, count, reason.

  • Chặn/tự động hóa: chặn ở Cloudflare/nginx/hosting + thêm vào Google Ads (IP Exclusions) ở cấp campaign.

  • Ghi nhận & báo cáo: gửi evidence cho Google nếu nghi vấn lớn, cân nhắc dùng giải pháp chống click fraud trả phí.

  • Theo dõi: duy trì dashboard hàng ngày/tuần.

Cách kiểm tra & loại trừ IP click ảo trong Google Ads
Cách kiểm tra & loại trừ IP click ảo trong Google Ads

1 — Tại sao phải xử lý click ảo ngay?

  • Lãng phí ngân sách: click không chuyển đổi nhưng bạn vẫn bị trừ tiền.

  • Dữ liệu sai lệch: CTR, CPA, ROAS sẽ bị bóp méo — ảnh hưởng quyết định tối ưu.

  • Rủi ro khai thác: có thể là đối thủ, bot, hay botnet thử nghiệm thăm dò quảng cáo.

Google có hệ thống lọc “invalid traffic”, nhưng không chặn 100% — bạn cần chủ động.

Tại sao phải xử lý click ảo ngay?
Tại sao phải xử lý click ảo ngay?

2 — Dấu hiệu nhận biết click ảo (quick checklist)

  • CPA tăng đột biến trong khi traffic tăng mạnh nhưng conversion không tăng.

  • CTR rất cao nhưng tỷ lệ chuyển đổi thấptime on site gần 0.

  • Nhiều click đến cùng một landing URL nhưng session duration nhỏ (<3s).

  • Tỷ lệ bounce bất thường cao kèm theo số lần truy cập/giờ lớn.

  • Nhiều click từ cùng một IP hoặc subnet (ví dụ 203.0.113.*).

  • Lượng truy cập đến từ referrer lạ hoặc không có referrer (direct) với pattern lặp lại.

  • Từ báo cáo Google Ads: invalid clicks tăng; hoặc Google hiển thị “invalid traffic” trong báo cáo.

Nếu gặp ≥2 dấu hiệu trên → chuyển sang kiểm tra bằng logs.

Dấu hiệu nhận biết click ảo
Dấu hiệu nhận biết click ảo

3 — Dữ liệu cần thu thập & nơi lấy

  • Google Ads: báo cáo campaign / ad group / ad-level, segments theo hour/day.

  • Google Analytics 4 / Universal Analytics: landing page views, session duration, bounce, events, clientId.

  • Server access logs (Apache/Nginx) hoặc CDN logs (Cloudflare, Fastly): có IP, timestamp, user-agent, URL, referrer.

  • Google Search Console (để loại trừ organic).

  • Conversion tracking logs (pixel, server-side CAPI) — kiểm tra discrepancy.

  • Firewall / WAF logs nếu có (Cloudflare Firewall, AWS WAF).

Dữ liệu cần thu thập & nơi lấy
Dữ liệu cần thu thập & nơi lấy

4 — Cách kiểm tra chi tiết (từ nhanh → sâu)

4.1. Kiểm tra nhanh bằng Google Ads + GA4

  1. Trong Google Ads, lọc campaign đang nghi ngờ, xem metrics: clicks, impressions, CTR, conversions, CPA theo ngày/giờ.

  2. So sánh với GA4: vào Acquisition → Traffic acquisition lọc theo campaign/utm_source để xem session, engagement, conversions.

  3. Nếu clicks >> sessions (GA4), khả năng có click ảo hoặc tracking lỗi.

Ghi chú: GA4 có thể bỏ sót session do chặn cooke/pixel; vì vậy server logs là nguồn cuối cùng để xác thực.

Google Ads + GA4
Google Ads + GA4

4.2. Kiểm tra server logs (thực tế chính xác nhất)

Tải log (access.log) và chạy queries để tìm IP có request quá nhiều, request vào landing page nhiều lần trong thời gian ngắn.

Mẫu lệnh awk nhanh (Nginx/Apache logs – Common Log Format):

# đếm request theo IP trong 1 file access.log
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -n 50

Python mẫu (lọc IP có >X requests trong 1 giờ):

from collections import Counter
import datetime
def parse_line(line):
# ví dụ apache common: IP - - [date] "GET /path HTTP/1.1" 200 ...
parts = line.split()
ip = parts[0] time_str = line.split('[')[1].split(']')[0] # parse time, e.g. 12/Oct/2025:06:25:24 +0000
dt = datetime.datetime.strptime(time_str.split()[0], "%d/%b/%Y:%H:%M:%S")
return ip, dt
counts = Counter()
with open(‘access.log’) as f:
for line in f:
ip, dt = parse_line(line)
# normalize to hourly bucket
hour = dt.replace(minute=0, second=0, microsecond=0)
counts[(ip, hour)] += 1# show IP-hour with more than 100 requests
for (ip,h),c in counts.most_common():
if c > 100:
print(ip, h, c)

Những thứ cần lưu khi phân tích log: IP, user-agent, URL target, timestamp, referrer. IP lặp nhiều lần với requests rất ngắn interval là nghi vấn.

4.3. So sánh IP với clientId / cookie (GA4)

  • Khi IP nghi vấn đã được xác định, dùng Client ID (giữ trong GA cookies _ga) để match request. Nếu nhiều requests có clientId khác nhau nhưng cùng IP → có bot farm (proxy) hoặc NAT business ISP — cần thận trọng.

4.4. Kiểm tra User-Agent & JavaScript behavior

  • Bot thường có user-agent trống, hoặc giống nhau (scripted).

  • Dùng một script JS nhỏ trên landing để log “browser fingerprint” (viewport, navigator.userAgent, screen size) vào server — nếu nhiều requests cùng IP nhưng fingerprint khác nhau, có thể là proxy farm; nếu fingerprint lặp lại → bot.

Kiểm tra User-Agent
Kiểm tra User-Agent

5 — Tiêu chí để đưa IP vào danh sách loại trừ

Không phải mọi IP “đỉnh” đều là click ảo (ví dụ công ty có NAT lớn). Tiêu chí đề xuất:

  • IP có > X requests trong Y phút (ví dụ > 50 requests / 10 phút) CHO 1 landing page.

  • Tỷ lệ chuyển đổi từ IP = 0 trong khi click nhiều.

  • Session duration trung bình < 3s từ IP.

  • Kết hợp với user-agent lạ / referrer spam.

  • IP thuộc ASN / cloud provider (hosting) dùng nhiều cho bot traffic (tham khảo WHOIS /IP lookup). Nếu IP thuộc datacenter (DigitalOcean, Hetzner) và không là affiliate/partner → nghi vấn cao.

  • Nên có threshold nhiều tầng: flag → observe 24–48h → confirm → block.

Tiêu chí để đưa IP vào danh sách loại trừ
Tiêu chí để đưa IP vào danh sách loại trừ

6 — Cách tạo & quản lý danh sách IP nghi vấn

CSV mẫu: suspect_ips.csv

ip, first_seen, last_seen, hits, reason, confirmed
203.0.113.12,2025-10-01T10:03,2025-10-01T11:15,345,"high requests; bounce 99%; UA empty",yes
198.51.100.45,2025-10-02T02:10,2025-10-02T02:50,120,"data center ASN",no

Quy trình:

  1. Tự động generate suspect_ips (script chạy cron hàng giờ).

  2. Đưa vào “quarantine” 24–48h để quan sát.

  3. Nếu confirmed=yes → propagate tới block lists (Cloudflare/WAF/nginx + Google Ads IP exclusion).

  4. Lưu lịch sử thao tác (who added, why, rollback).

7 — Chặn IP ở đâu: các lớp và cách làm

7.1. Chặn ở level CDN / WAF (khuyến nghị)

  • Cloudflare: thêm IP vào Firewall → chặn trước khi hit server. (Cloudflare UI / API).

  • AWS WAF / Azure Front Door: tạo IPSet và rule chặn.

  • Ưu điểm: giảm load, chặn sớm, log rõ ràng.

Ví dụ gọi Cloudflare API (python requests) — minh họa

import requests

ZONE_ID = “xxxx”
API_TOKEN = “YOUR_TOKEN”
ip_to_block = “203.0.113.12”

url = f”https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/firewall/access_rules/rules”
payload = {
“mode”: “block”,
“configuration”: {“target”:“ip”,“value”: ip_to_block},
“notes”:“Auto-block suspicious IP”
}
headers = {“Authorization”: f”Bearer {API_TOKEN}“, “Content-Type”: “application/json”}
r = requests.post(url, json=payload, headers=headers)
print(r.json())

Chú ý bảo mật: lưu API token an toàn, test trên môi trường staging.

7.2. Chặn ở server (nginx/iptables)

  • Nginx deny ip; trong vhost.

  • Iptables block (tốn công quản lý nếu nhiều IP).

  • Thích hợp khi không dùng CDN.

7.3. Chặn ở Google Ads (IP Exclusions)

  • Google Ads hỗ trợ IP exclusionscấp chiến dịch (Campaign → Settings → Additional settings → IP exclusions).

  • Tối ưu: bạn nên thêm các IP đã confirmed; lưu ý: Google Ads chặn bằng IP list áp dụng cho click từ IP đó trong 7/30 ngày? (UI applies immediately). Không có cấp account-wide — bạn phải thêm cho mỗi campaign (hoặc sử dụng scripts/API để apply nhiều campaign).

Thực tế: nếu bạn có nhiều campaign, dùng Google Ads API hoặc Google Ads Editor để apply IP exclusions hàng loạt.

7.4. Chặn tại tracking layer (GTM / Server-side)

  • Thay vì hoàn toàn chặn, bạn có thể mark traffic là bot (tạo custom dimension) và tránh ghi conversion cho click đó (giảm ảnh hưởng đến bidding learning).

Cách chặn IP trong google ads
Cách chặn IP trong google ads

8 — Thêm vào Google Ads: hướng dẫn chi tiết

Thủ công (UI)

  1. Vào Google Ads → Campaigns → chọn campaign.

  2. Settings → Additional settings → IP exclusions.

  3. Dán danh sách IP (mỗi IP một dòng) → Save.

Hàng loạt (Google Ads Editor)

  • Mở Ads Editor → Import → Campaign settings → IP exclusions → paste list → Post.

Tự động (Google Ads API – ý tưởng)

  • Dùng CampaignCriterionService để tạo negative criteria.

  • Nếu bạn muốn script mẫu, có thể liên hệ dev để cài đặt; lưu ý cần credential OAuth2 và developer token.

LƯU Ý: Google Ads không khuyến nghị loại trừ IP “vô tội vạ” — nếu IP là NAT provider với nhiều user thật, bạn có thể mất khách thật. Vì vậy chỉ exclude IP confirmed.

9 — Giải pháp chống click fraud chuyên dụng (khi nào dùng)

Nếu bạn liên tục bị click fraud lớn hoặc ngân sách bị tấn công, cân nhắc dịch vụ trả phí: ClickCease, TrafficGuard, CHEQ, Forensiq… Những dịch vụ này:

  • Phát hiện pattern click fraud thời gian thực.

  • Tự động block IP / device fingerprint.

  • Hỗ trợ report & dispute chargeback với Google/Networs.

  • Có dashboard & alert real-time.

Chi phí có thể hợp lý với doanh nghiệp có spend lớn.

Giải pháp chống click fraud chuyên dụng (khi nào dùng)
Giải pháp chống click fraud chuyên dụng (khi nào dùng)

10 — Cách báo cáo & yêu cầu Google hoàn tiền

Nếu bạn có bằng chứng mạnh (logs + timestamp + ad id + click id), liên hệ Google Ads Support qua chat/email và đính kèm evidence. Google có quy trình review invalid click và có thể refund nếu xác nhận. Luôn giữ:

  • Screenshots báo cáo Google Ads,

  • Server logs excerpt,

  • Mốc thời gian chính xác,

  • CSV IP list và lý do.

11 — Tối ưu lâu dài & phòng chống lặp lại

  • Giám sát real-time: dashboard (Data Studio + Supermetrics or custom API) cảnh báo khi CTR/Clicks/CPA vượt threshold.

  • Honeypot / decoy URLs: tạo URL ẩn không chạy quảng cáo; nếu bot truy cập → chắc chắn bot.

  • Fingerprinting: server-side fingerprint (IP + UA + screen size + JS behavior) để block device-level.

  • Rate limiting: giới hạn requests từ 1 IP trong X giây.

  • Use Captcha cho form truy cập nếu bot spam form.

  • Cập nhật blacklist: maintain blacklist (ASN, known bot IPs).

  • Periodic audit: review suspect IPs hàng tuần; purge list sau 90 ngày nếu không lặp lại.

12 — Mẫu quy trình vận hành (SOP) ngắn gọn

  1. Alert: hệ thống thông báo khi clicks tăng >30% vs bình thường hoặc CPA tăng >20%.

  2. Triage (0–1h): mở Ads + GA4 + server logs; lọc IP có requests cao.

  3. Observe (24–48h): thu thập evidence (hits, UA, URLs).

  4. Confirm: match với conversion (không có), check ASN. Nếu confirmed → block tại Cloudflare & add Google Ads IP exclusions.

  5. Report: gửi evidence cho Google Ads Support.

  6. Review: hàng tuần, báo cáo KPI ảnh hưởng & điều chỉnh rules.

13 — Công cụ & truy vấn mẫu hữu ích

BigQuery (ví dụ GA4 export) — aggregate clicks per IP (giả sử bạn có IP dimension)

SELECT
ip,
COUNT(*) AS sessions,
AVG(session_duration) as avg_session_sec,
SUM(conversion) as conversions
FROM `project.ga4_events_*`
WHERE event_date BETWEEN '20251001' AND '20251007'
GROUP BY ip
HAVING sessions > 100 AND conversions = 0
ORDER BY sessions DESC

Apache/Nginx quick awk (tìm IP với nhiều 404 trên landing)

awk '$9 == 404 {print $1}' access.log | sort | uniq -c | sort -rn | head -n 20
14 — Những lưu ý pháp lý & bảo mật, quyền riêng tư
  • Việc chặn IP là hành động hợp lý để bảo vệ chi phí quảng cáo. Tuy nhiên, không chia sẻ dữ liệu cá nhân (PII) công khai.

  • Tuân thủ GDPR/CCPA nếu bạn xử lý dữ liệu người dùng EU/CA (lưu trữ logs phải có lý do hợp lệ).

  • Lưu trữ evidence trong môi trường an toàn, có access control.

15 — Checklist triển khai 7 ngày (áp dụng ngay)

Ngày 0 (thiết lập):

  • Bật logging đầy đủ (server + CDN).

  • Đảm bảo conversion tracking chính xác (pixel + server-side).

Ngày 1–2 (phân tích):

  • Chạy queries log, lọc IP suspect, tạo suspect_ips.csv.

  • So sánh GA4 vs Ads.

Ngày 3–4 (quan sát):

  • Quan sát suspects 48h, chạy honeypot test.

  • Thu thập evidence.

Ngày 5 (confirm & block):

  • Block confirmed IP trên Cloudflare / WAF / nginx.

  • Thêm vào Google Ads IP exclusions (theo campaign).

Ngày 6–7 (report & review):

  • Gửi evidence cho Google Ads Support.

  • Review performance KPIs, schedule monitor hàng ngày.

Kết luận

Xử lý click ảo cần sự phối hợp giữa quảng cáo, analytics và hạ tầng — không có một bước duy nhất. Cách kiểm tra & loại trừ IP click ảo trong Google Ads: phát hiện nhanh → thu thập bằng chứng → block ở CDN/WAF → exclude trên Google Ads → báo cáo & theo dõi. Dùng server logs làm nguồn chính để xác thực; sử dụng Cloudflare/WAF để giảm tải; dùng Google Ads API/Editor để apply exclusion hàng loạt khi cần.


Gọi điện ngay