0

Giám sát giá đa khu vực: đổi proxy rồi, sao giá vẫn sai?

Chuyện khá quen: bạn cần theo dõi giá sản phẩm ở vài thị trường. Mỗi thị trường gắn một proxy, xoay vòng theo lịch. Nhưng khi mở trang ra kiểm tra, giá vẫn hiển thị bằng VND, giao diện vẫn tiếng Việt, và một số block nội dung vẫn là phiên bản dành cho người dùng Việt Nam. Proxy vẫn sống, IP vẫn ra đúng nước. Vậy sai ở đâu?

Câu trả lời ngắn: proxy chỉ đổi tầng mạng. Nó không đổi tầng trình duyệt và tầng hệ thống. Và các trang thương mại điện tử lớn không chỉ nhìn IP.

Thử một đoạn script để thấy vấn đề

Đây là đoạn Puppeteer tối giản, chạy qua proxy Đức, in ra những gì server nhìn thấy:

javascript const puppeteer = require('puppeteer');

(async () => { const browser = await puppeteer.launch({ headless: 'new', args: ['--proxy-server=http://user:pass@de-proxy:8080'] }); const page = await browser.newPage();

await page.goto('https://httpbin.org/ip'); const ipInfo = await page.evaluate(() => document.body.innerText);

const env = await page.evaluate(() => ({ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone, language: navigator.language, languages: navigator.languages, locale: Intl.DateTimeFormat().resolvedOptions().locale, currency: new Intl.NumberFormat().resolvedOptions().currency, }));

console.log('IP:', ipInfo); console.log('Env:', env); await browser.close(); })(); Kết quả thường gặp: IP ra Đức, nhưng timezone vẫn Asia/Ho_Chi_Minh, language vẫn vi-VN, currency vẫn VND. Trang thương mại điện tử thấy một kết nối từ IP Đức nhưng mọi tín hiệu trình duyệt lại nói "người Việt". Với những site có logic kiểm tra chéo Accept-Language với timezone hoặc currency, đây là tín hiệu mâu thuẫn đủ để họ trả về phiên bản mặc định thay vì phiên bản theo khu vực.

Proxy không sửa được gì ở tầng dưới

Có bốn thứ proxy không chạm tới:

  • Timezone hệ thống: Intl.DateTimeFormat().resolvedOptions().timeZone đọc từ cài đặt OS, không đọc từ IP.
  • Ngôn ngữ trình duyệt: navigator.language và navigator.languages lấy từ profile trình duyệt, không phải từ proxy.
  • WebRTC: nếu không tắt hoặc không giới hạn, WebRTC có thể lộ IP nội bộ hoặc IP thật, tạo ra cặp "IP nước ngoài, IP thật trong nước".
  • DNS resolver: nhiều cấu hình vẫn để DNS đi qua nhà mạng địa phương, tạo ra "IP Đức, resolver Việt Nam" – một cặp rất dễ bị chấm điểm bất thường.

Nói cách khác, proxy giải quyết một biến, nhưng bài toán giám sát giá đa khu vực cần cả một hồ sơ môi trường nhất quán: IP, timezone, locale, ngôn ngữ, DNS đều phải chỉ về cùng một khu vực, và phải giữ nguyên trong suốt vòng đời của task giám sát.

Yêu cầu kỹ thuật: mỗi khu vực một môi trường tự nhất quán

Với mỗi thị trường cần theo dõi, thứ cần không phải "một proxy", mà là một profile trình duyệt thỏa:

  • Proxy cố định gắn với profile, không xoay giữa phiên.
  • Timezone và locale sinh ra khớp với vị trí proxy.
  • Ngôn ngữ và Accept-Language khớp với locale đó.
  • DNS đi qua cùng khu vực với proxy (qua proxy DNS hoặc resolver đặt đúng chỗ).
  • WebRTC bị chặn hoặc không lộ IP thật.
  • Profile giữ nguyên cấu hình qua các lần chạy, để dữ liệu so sánh theo thời gian không bị nhiễu bởi thay đổi môi trường.

Làm thủ công từng bước một thì được, nhưng khi số thị trường lên vài chục và chạy theo lịch, việc tạo – kiểm tra – huỷ profile bằng tay sẽ nhanh chóng thành nút cổ chai.

Hướng triển khai: profile tạo bằng API

Cách mình đang dùng: mỗi khu vực là một profile trình duyệt được tạo lập trình, gắn proxy cố định, cấu hình timezone/locale/ngôn ngữ theo geo của proxy, rồi task giám sát chỉ việc mở đúng profile đó. Khi cần thêm thị trường mới, tạo profile mới; khi bỏ, xoá profile. Không đụng vào trình duyệt cá nhân, không lẫn cookie giữa các thị trường.

Với hướng này, BitBrowser là một lựa chọn ở tầng quản lý profile: nó có local API để tạo profile với fingerprint sinh theo proxy, gắn proxy cố định, và mở profile từ code. Bản miễn phí 10 profile đủ để dựng thử mô hình cho vài thị trường trước khi mở rộng. Điểm mình thấy phù hợp không phải "mở được nhiều tab", mà là mỗi profile là một đơn vị độc lập – đúng cái mà bài toán giám sát giá đa khu vực cần.

Tóm lại: nếu bạn đang giám sát giá ở nhiều thị trường và thấy kết quả "lẫn lộn", kiểm tra lại không phải cái proxy, mà là môi trường trình duyệt phía sau nó. Proxy đúng nhưng môi trường không nhất quán thì dữ liệu vẫn sai, chỉ là sai theo kiểu khó thấy hơn.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí