Image Hotlinking: Tại Sao Hình Ảnh Từ 1688 Hiển Thị Lỗi Trên Website Của Bạn?
Bạn đã bao giờ chèn link ảnh trực tiếp từ 1688 vào website của mình và nhận được một hình ảnh lỗi thay vì sản phẩm bạn muốn hiển thị? Đừng lo, bạn không đơn độc! Đây là một hiện tượng rất phổ biến - và hoàn toàn có chủ đích từ phía 1688. Hãy cùng tìm hiểu nguyên nhân và cách giải quyết trong bài viết này.

🔍 Nguyên Nhân Chính: 1688 Chặn Hình Ảnh Dựa Trên Referer
1688 (cùng với các nền tảng thương mại điện tử lớn khác như Taobao, JD.com, Alibaba) chủ động ngăn chặn việc "hotlinking" - tức là việc bạn lấy hình ảnh từ server của họ và hiển thị trực tiếp trên website của bạn.
Cơ Chế Hoạt Động
Khi trình duyệt của người dùng truy cập website của bạn và tải hình ảnh từ https://img.alicdn.com/... (hoặc domain tương tự của 1688), server của 1688 sẽ kiểm tra HTTP Header Referer - trường này cho biết người dùng đang truy cập từ trang nào.
Nếu Referer không phải là domain của 1688 (ví dụ: bạn truy cập từ yourwebsite.com), thì 1688 sẽ:
- Trả về hình ảnh lỗi (thường là hình "403 Forbidden", "Hotlinking not allowed", hoặc hình mờ có chữ "1688")
- Hoặc trả về status code 403, khiến hình không hiển thị
Đây là biện pháp bảo vệ băng thông và tài nguyên được thiết kế cẩn thận bởi đội ngũ kỹ thuật của 1688.
💡 Vì Sao 1688 Làm Vậy?
| Lý Do | Giải Thích |
|---|---|
| Tiết kiệm băng thông | Hình ảnh trên 1688 thường rất nặng (cao phân giải, nhiều sản phẩm). Nếu hàng ngàn website khác hotlink đến, server của họ sẽ tốn rất nhiều bandwidth → tăng chi phí vận hành. |
| Bảo vệ bản quyền & thương hiệu | Họ không muốn hình ảnh sản phẩm của họ bị sử dụng miễn phí bởi các đối thủ cạnh tranh hoặc shop nhỏ lẻ để bán lại. |
| Đẩy traffic về trang gốc | Nếu bạn muốn xem sản phẩm, hãy đến đúng trang 1688 — chứ không được "ăn cắp" hình ảnh để tạo website riêng. |
| Chống cạnh tranh không lành mạnh | Nhiều người dùng hình ảnh 1688 để tạo shop Shopee, Lazada, TikTok Shop... mà không có hàng thật → 1688 muốn ngăn điều này. |
✅ Cách Khắc Phục
Bạn không thể bypass Referer một cách hợp lệ nếu không có sự cho phép từ 1688. Nhưng có vài giải pháp thay thế an toàn và hợp pháp:
1. Tải Hình Ảnh Về Máy và Upload Lên Website Của Bạn
Đây là giải pháp đơn giản và hiệu quả nhất:
- Tải hình từ 1688 → lưu vào thư mục
/images/của website - Dùng
<img src="https://yourwebsite.com/images/product1.jpg">
Ưu điểm: Không vi phạm luật, không bị chặn, tốc độ tải nhanh hơn (do không phụ thuộc server bên ngoài).
Lưu ý: Đảm bảo bạn không vi phạm bản quyền (nếu là sản phẩm độc quyền, nên xin phép nhà cung cấp).
2. Sử Dụng CDN hoặc Dịch Vụ Lưu Trữ Hình Ảnh
Các dịch vụ như Cloudinary, Imgur, AWS S3 có thể là giải pháp thay thế tốt:
- Upload hình ảnh lên dịch vụ này → lấy link mới
- Vẫn đảm bảo không phụ thuộc vào 1688
Ưu điểm: Tối ưu hóa hình ảnh, tốc độ tải nhanh, có thể tích hợp thêm tính năng như chỉnh sửa hình ảnh động.
3. Bypass referer
Tuyên bố từ chối trách nhiệm: Việc sử dụng "bypass referer" có thể dẫn đến 1 số các rủi ro sau:
- Vi phạm điều khoản dịch vụ của 1688
- Có thể bị block IP hoặc tài khoản
- Không bền vững — chỉ tạm thời
Hãy cân nhắc kỹ khi sử dụng.
Ví dụ sau đây sử dụng Expressjs để bypass referer. Bạn có thể sử dụng các framework khác để triển khai tương tự.
// Sử dụng bằng cách đặt api này trong src của thẻ img: <img src=`/proxy-image?url=https://cbu01.alicdn.com/img/ibank/ten_anh.jpg` />
app.get('/proxy-image', async (req, res) => {
const imageUrl = req.query.url;
if (!imageUrl) {
return res.status(400).send('Missing "url" query parameter');
}
try {
const parsedUrl = new URL(imageUrl);
const userAgent = req.headers['user-agent'] || USER_AGENT;
const response = await fetch(imageUrl, {
headers: {
'Referer': parsedUrl.origin,
'User-Agent': userAgent,
},
});
if (!response.ok) {
console.warn(`[Image Proxy] Failed ${response.status}: ${imageUrl}`);
return res.status(response.status).send(`HTTP ${response.status}`);
}
const buffer = await response.arrayBuffer();
const contentType = response.headers.get('content-type') || 'image/jpeg';
res.setHeader('Content-Type', contentType);
res.setHeader('Cache-Control', 'public, max-age=86400');
res.setHeader('Vary', 'Accept-Encoding');
res.end(Buffer.from(buffer));
} catch (error) {
console.error(`[Image Proxy] Error: ${error.message}`);
res.status(500).send('Internal Server Error');
}
});
Bạn có thể sử dụng AI để chuyển code trên sang các ngôn ngữ lập trình tương ứng. Ngoài ra, bạn cũng có thể sử dụng các proxy static server như nginx để thực hiện việc bypass này.
🔧 Kiểm Tra Nhanh: Bạn Có Bị Chặn Referer Không?
Bạn có thể dễ dàng kiểm tra xem mình có bị chặn referer không bằng cách:
- Mở DevTools (F12) → tab Network
- Reload trang → tìm file ảnh → click vào nó
- Kiểm tra:
- Status: Có phải là
403 Forbidden? - Response: Có thấy hình "Hotlinking is not allowed" không?
- Headers → Referer: Có phải là domain của bạn không?
- Status: Có phải là
Nếu đúng như vậy → bạn đã bị chặn referer rồi!
✅ Kết Luận
Link ảnh trực tiếp từ 1688 bị lỗi referer vì 1688 chủ động chặn hotlinking để bảo vệ tài nguyên và bản quyền. Đây là hành vi hợp pháp và phổ biến trên các nền tảng thương mại điện tử lớn.
Giải pháp tốt nhất: Tải hình ảnh về và host trên website hoặc CDN của bạn. Không nên cố gắng "hack" referer — dễ bị phạt, mất uy tín, và không ổn định.