Các cookie x-s3-sid, x-s3-tid và x-s3-s4e là thành phần thiết yếu trong cơ chế xác thực và chống giả mạo yêu cầu (CSRF/anti-bot) của nền tảng thương mại điện tử hàng không. Dưới đây là phân tích kỹ thuật chi tiết về cách chúng được tạo, cấu trúc và mối liên hệ nội tại.
Cấu trúc mẫu cookie thu thập từ miền .shenzhenair.com
x-s3-s4e = KvxJYr3FIiTEsGaiT9B20cjQHLlFFZZ65ePJEctMBU3xs8g196pP4raaB7cxVdnGeMf8uXO8AzMQT+CfclObHvF4L1u72dbtZc5cx/hMfO+UTKCeE0ESwMzIv0wy3hCCb6weXeQE7DwysCxg4aD3xp0PmkunzQbsziixCUdPlD0MGvHs6S5FXEW8RVopK0F3VZ9cnFZqEErs6BC3bJxCpj6xpZ2rCDOZWr862+G+PMtfCnvOWmkf/U8ABCgGR6cNq+49L5SC+5eEszCGC2qeWqG6V7TorSaYbWkhsxFPBUS0xtDuo8cMpBSsLyT+xX0CUVylNQk2uocokTdGi5iG6VRltZ/hPhVdmr4UE8CVd+GGidrtUsjJd0IswEG2FQnbyjKxteQHrD75yTtDifr66tZ+RY+7M6Zfs5R6M9/kf4KE+7OOpkmFPltlNXs5ETLs5VFUMt2ef5yAPhqmnA2AN5M3Z6S3Q40xMQpxkxsEXhWJ3/7g66irL6Uv7OwHSVqZT7bovgK4BC/lMKR76KeUKgS5nTQP3dTnjqJ15lhxyEApxkMwShakV6dQcHYRzudr5VFUMt2ef5yAPhqmnA2AN7stXD/vfkPUU/TVwzaWIe/W8fYH5+/N+UMEjxJoPAOQT/0tPFQuGL8xQgRTqEsv885qCWPlBYkrQrKAjfTe6atNzulLJysEj910JiWW42k8MunZRN8dRafN+jPilvv78X3O4k6rsAH8LsDHDhbtGXlyNIBb1bT7RXObr0/Oc8G3u5TkrkbpJFsOq7jBeojfzjx8IhX73rm0GIPEI1E50IYCztkfK/HIB9ybc9OkUE1EWAz2n1A3dfTjTvGvUuDZ/w==3sSsb02d0003171afeb4af3149899edb0c396336f06a:48:22ec0112-17b1-11f1-97d1-005056ae692b:0030002097
x-s3-tid = b02d0003171afeb4af3149899edb0c396336f06a:48:22ec0112-17b1-11f1-97d1-005056ae692b:0030002097
x-s3-sid = S18gBAibade5j3441ypkuc33m
Phân tích x-s3-tid
Giá trị x-s3-tid được xây dựng từ một chuỗi định danh gồm 4 phần, ngăn cách bởi dấu hai chấm (:):
- Phần 1: Chuỗi hex dài 40 ký tự — có thể là hash SHA-1 hoặc giá trị tương đương từ dữ liệu phiên/bối cảnh người dùng.
- Phần 2: Giá trị số nguyên cố định
48, nghi ngờ là mã phiên bản hoặc chỉ số cấu hình. - Phần 3: UUID chuẩn (ví dụ:
22ec0112-17b1-11f1-97d1-005056ae692b) — thường đại diện cho session ID hoặc device fingerprint. - Phần 4: Chuỗi hex 10 ký tự (
0030002097) — khả năng cao là timestamp dạng epoch milliseconds rút gọn hoặc mã hóa thời gian khởi tạo phiên.
Trong mã nguồn phía client, x-s3-tid được tạo động bằng cách ghép nối các đoạn từ mảng hằng số s3const và tham chiếu tới biến toàn cục _s3_tid:
const tidPrefix = 'x-s3-';
const tidKey = 't' + 'i' + 'd' + '=';
const fullTid = tidPrefix + tidKey + _s3_tid;
Kết quả cuối cùng khớp chính xác với giá trị cookie thực tế, xác nhận cơ chế sinh đơn giản nhưng có tính phụ thuộc vào backend.
Phân tích x-s3-s4e
Cookie này là kết quả của quá trình mã hóa hai bước: (1) xây dựng payload rõ ràng dưới dạng mảng JSON, sau đó (2) mã hóa bằng thuật toán tùy chỉnh trước khi URL-encode.
Bước 1: Payload đầu vào
Dữ liệu đầu vào được trích xuất từ thuộc tính _s3._sc[10] và có dạng:
["019f96e86d0bad0c1659c174efb5995ef0f9c708:48:d7e0cded-1929-11f1-967b-3cd2e55daed6:0000412036;S1dhqO55dg6lj3441ypkuc3zm",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...",
"zh-CN", "124.04347527516074", "Win32", ["218.76.22.217"],
"c2331586", ["1920","1080","1","32"], -480,
"https://www.shenzhenair.com/szair_B2C/index.html",
"20d20a7473f3c0e98248a5ebe32dc7aebdbc50c7",
"7f7dda45", "(https://.../sw.js:1:248045)\\n",
"30c26ca0822c51c9e98292ff3eb031149535b635",
[[2,2,2,2,2],[2,2,3,2,3,3],2,2,2,[3,2,3,2,2,3],[2,2,2,1,1,1,3,0],[2],[2],2,[2],[2,2],2,2],[],2]
Đây là tập hợp thông tin đa chiều gồm: định danh phiên, user agent, ngôn ngữ, vị trí địa lý (qua IP), độ phân giải màn hình, múi giờ, URL referrer, fingerprint mã hóa từ WebAssembly/WebGL, và các đặc trưng hành vi JavaScript.
Bước 2: Mã hóa và đóng gói
Mã hóa được thực hiện qua hàm _0x6c54d2.encrypt(), sau đó kết quả được URL-encode và ghép với hậu tố 3sSs<tid>:
const encodedPayload = encodeURIComponent(_0x6c54d2.encrypt(rawJsonArray));
const s4eValue = encodedPayload + '3sSs' + _s3_tid;
Phần hậu tố 3sSs<tid> đảm bảo tính nhất quán giữa x-s3-s4e và x-s3-tid, giúp backend xác minh đồng bộ trạng thái phiên.
Kết luận kỹ thuật
Cơ chế cookie này kết hợp cả yếu tố tĩnh (định danh thiết bị, phiên) và động (hành vi trình duyệt, môi trường thực thi). Việc tái hiện thành công yêu cầu phải:
- Xác định chính xác thuật toán và khóa mã hóa trong
_0x6c54d2.encrypt()— thường là AES-CBC hoặc custom XOR-based cipher với key được tải từ endpoint/vodka/v1/bootstrap/param. - Tái tạo payload JSON đúng định dạng, bao gồm tất cả các trường bắt buộc và thứ tự chính xác.
- Đảm bảo tính nhất quán về thời gian, timezone và cấu hình môi trường để tránh lỗi kiểm tra tính toàn vẹn.