Một nữ streamer xinh đẹp, tóc ngắn, đã trưởng thành, kiếm tiền bằng cách phát trực tiếp, khoe thân hình hơi mảnh mai và thực hiện những hành vi thủ dâm rất khiêu dâm.
Nữ sinh trung học thủ dâm trong nhà vệ sinh, mặc quần lót trùm đầu, lộn ngược, tiểu tiện khắp mặt","lastmod":"2026-07-11","duration":"08:11","url":"/play/19164989.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMTdlNWFiYjAzMjY0ZmE5MTEzZWVjNTM3MDI3NWQ4MmMuanBn.cache","vod_id":19154639,"title":"Ngôi sao mạng Little Wildcat - Ngoại hình và thân hình đỉnh cao, lộ mặt và nhũ hoa, cảnh dương vật đưa vào âm đạo trong buổi phát trực tiếp đã được chỉnh sửa.","lastmod":"2026-04-22","duration":"10:58","url":"/play/19154639.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvYzg0ODI0NTQ3ZDRkMDQ1Mzc1Y2QxZmJiMDkxYTczNTUuanBn.cache","vod_id":19139281,"title":"Dụng cụ thủ dâm tiện dụng dành cho người mới bắt đầu - Kitaoka Karin - SQTE-628","lastmod":"2026-01-19","duration":"01:43:16","url":"/play/19139281.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZWEyYzgxMDM5MTZjYmY2ZjU5YmFlOWFiOWI4MThjOTUuanBn.cache","vod_id":19026026,"title":"Một nữ streamer xinh đẹp và quyến rũ thu phí để khoe nhan sắc, thân hình tuyệt vời và màn tự thỏa mãn đầy đam mê, vô cùng hấp dẫn.","lastmod":"2025-03-24","duration":"57:03","url":"/play/19026026.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGZkNTJjZTU3ODM2MDdhNjE5NTkyNTA3NGViMTVmOTcuanBn.cache","vod_id":18968188,"title":"393OTIM-162 Quan hệ tình dục với Karen, một người phụ nữ xinh đẹp với mái tóc đen ngắn.","lastmod":"2025-03-23","duration":"00:59:16","url":"/play/18968188.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYzZjYjUxOGVlOGEzYzAyN2NhZjZmMWM0ZWQzMjJjZmYuanBn.cache","vod_id":18936664,"title":"Cảnh hỗn loạn trong phim nhập vai với một bà mẹ gợi cảm trong váy ngắn, tất đen và giày cao gót, đang quan hệ tình dục trong một chòi nghỉ mát sau một chuyến đi bộ mệt mỏi ở khu vực danh lam thắng cảnh. Lời thoại tục tĩu và kích thích. Phiên bản gốc 1080P.","lastmod":"2025-12-14","duration":"00:14:13","url":"/play/18936664.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOTEyZDM0ZmRkY2JjYmQ2MWE0OTZmMjA3OGVhYjhkZTQuanBn.cache","vod_id":18955111,"title":"\"Mới nhất ✅ Hạng nặng Hardcore ✅ Đề xuất\" Hàng chục nghìn người theo dõi trên Pixiv: Buổi chụp ảnh riêng của Xrei đã hoàn thành~ Nhiều cảnh sex nhập vai với rất nhiều tinh dịch trắng (3)","lastmod":"2025-12-14","duration":"00:10:44","url":"/play/18955111.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvOGU2NmNkYmZiZjdhNDYyYmM3NzQ2N2VjZWE0NmMzNmQuanBn.cache","vod_id":18934202,"title":"[Phụ đề tiếng Trung] DOCP-214 \"Tôi đây, xin hãy tha thứ cho tôi!!\" Một cô hầu gái xinh đẹp được giao nhiệm vụ giúp việc nhà đã bị hắn ta xâm hại ngay khi vừa về đến nhà!! Hắn ta liên tục thúc mạnh vào cô ấy...","lastmod":"2025-12-14","duration":"03:59:21","url":"/play/18934202.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MDYvZTlhMjQxODUzMDczMzU3MTA5Mjk0Yjg3ZTI2NzFhYjEuanBn.cache","vod_id":19041627,"title":"Một người phụ nữ giàu có và xinh đẹp đang chơi đùa với một nữ nô lệ xinh đẹp trong phòng tắm.","lastmod":"2025-07-05","duration":"11:19","url":"/play/19041627.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA2MDEvMGI4ZmI3MzliNzkyYTJmNGVhNDQ4ZTBhYzE2YmJjOWQuanBn.cache","vod_id":19036010,"title":"IPZZ135 Cô y tá dâm đãng liếm và hôn bằng chiếc lưỡi dài của mình để mời gọi xuất tinh.","lastmod":"2025-06-01","duration":"02:29:55","url":"/play/19036010.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNjA3MTAvYTBhYTMwZTY1NTJiYzQyMmVjMjlhZjYwN2FkNGY0ZGEuanBn.cache","vod_id":19167536,"title":"Một nữ streamer trưởng thành, ngực khủng, đi tất đen quyến rũ một chàng trai trong một tòa nhà bỏ hoang để quan hệ tình dục vào ban đêm.","lastmod":"2026-07-11","duration":"32:30","url":"/play/19167536.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvNjZmZWEzNTM5ZGI4MDA0OWU3MTRkMjM2NWM4NDUxZWMuanBn.cache","vod_id":19134920,"title":"Từ đường phố Hàn Quốc—Thật lộng lẫy! Đôi chân tuyệt đẹp, tính cách đáng yêu, vóc dáng hoàn hảo, vẻ đẹp tinh tế, quyến rũ cùng nữ diễn viên vô danh MBMH-087","lastmod":"2025-12-23","duration":"02:13:03","url":"/play/19134920.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvNDYxODI5OTRkOGJiNGIxMTMwZGZhNWZhOGI1NWVhNzMuanBn.cache","vod_id":19009801,"title":"Ưu đãi có thời hạn: 3480 → 2480 [2 tác phẩm + α#Thân hình siêu thon gọn] Cô gái biển hiệu của ngôi nhà cũng sở hữu thân hình thon gọn hoàn hảo như người mẫu - cd2","lastmod":"2025-03-24","duration":"58:33","url":"/play/19009801.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTEyMjMvMDIxOTAzNGFmMzU1Y2JkMDY2MjAyMDBmM2E4NGI4N2QuanBn.cache","vod_id":19140638,"title":"Một cô gái tóc đỏ, ngực đầy đặn trong bộ đồng phục sử dụng ngôn từ khêu gợi và có những tương tác tán tỉnh, nghịch ngực, âm vật và thủ dâm với các đạo cụ.","lastmod":"2026-01-28","duration":"30:11","url":"/play/19140638.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvZmNjNmFiNGU1ZjE3NmQxMzIzOWRjMzI2NjAzYTE5NGQuanBn.cache","vod_id":18948703,"title":"\"Otaku✅Chất lượng cao✅Ưu đãi\" ⭐Tuổi trẻ bất khả chiến bại⭐ Hàng trăm nghìn người theo dõi - Ngôi sao mạng [Yi Hui] - Nhiều trang phục gợi cảm, vũ điệu khỏa thân khiêu khích, thân hình quyến rũ hạng S, cực kỳ hấp dẫn, rất gợi cảm - 20220301","lastmod":"2025-12-14","duration":"01:34:19","url":"/play/18948703.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvYjhlYmIzYTE0OTBlMTQyOTgwYWZlZjYyNjljZDEwYzEuanBn.cache","vod_id":18966614,"title":"Việc lộ mặt là chìa khóa! Aisha, một cựu người có ảnh hưởng trên Pornhub và là sinh viên Thượng Hải đã rời khỏi lĩnh vực này, là một người phụ nữ lăng nhăng đáng ngạc nhiên với vẻ ngoài tinh tế, tham gia vào nhiều hình thức quan hệ tình dục và xuất tinh. (7)","lastmod":"2025-12-14","duration":"00:16:44","url":"/play/18966614.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzAvMjlmOTM3ZDU4ZjBkY2YwZGY3OGNhMzc2Y2QwYzQyNTMuanBn.cache","vod_id":18929524,"title":"Một cô gái tóc vàng xinh đẹp, [Nữ thần Farah], đang tự thỏa mãn trên một chiếc ghế sofa đơn, liếm máy rung, đưa ngón tay vào, rên rỉ và thở hổn hển. Vô cùng quyến rũ, đừng bỏ lỡ!","lastmod":"2025-12-14","duration":"00:54:22","url":"/play/18929524.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly9pYy4xNTUyNTAyMTQudG9wLzIwMjYwMjIzL1prbXRZVVRjLzEuanBn.cache","vod_id":19145373,"title":"Múa bụng quyến rũ với những chuyển động hông gợi cảm!! XVSR-851","lastmod":"2026-02-25","duration":"01:57:46","url":"/play/19145373.html"}]},
videoTitle: 'Một nữ streamer xinh đẹp, tóc ngắn, đã trưởng thành, kiếm tiền bằng cách phát trực tiếp, khoe thân hình hơi mảnh mai và thực hiện những hành vi thủ dâm rất khiêu dâm.',
language: 'vi',
dataKey: '01',
loadingPlayer: true,
showShare: false,
pageUrl: '',
// RecommendedMovies 组件状态
isSingleColumn: false,
pageSize: 8,
currentPage: 1,
// 计算属性(使用 getter)
get layoutIconClass() {
return this.isSingleColumn ? 'icon-view-list' : 'icon-grid';
},
get layoutClass() {
return [
'row',
'g-3',
'row-cols-1',
this.isSingleColumn ? '' : 'row-cols-2',
'row-cols-lg-4'
].filter(Boolean).join(' ');
},
// 方法
onAppMounted() {
// 设置页面 URL
this.pageUrl = window.location.href;
// 保存观看历史
this.saveWatchHistory();
// 更新标签统计
if (this.videoData.tag && this.videoData.tag.length > 0) {
this.updateTagStats(this.videoData.tag);
}
// 发送点击统计
this.hitVideoId(this.videoData.id);
// 从 Cookie 读取布局偏好
const layoutCookie = this.getCookie('list_layout');
if (layoutCookie === 'single') {
this.isSingleColumn = true;
}
// 监听 iframe 加载完成,隐藏骨架屏
// 使用 setTimeout 确保 DOM 已完全渲染
setTimeout(() => {
const iframe = document.getElementById('v2-player');
const skeleton = document.getElementById('player-skeleton');
if (iframe && skeleton) {
// 定义隐藏骨架屏的函数
const hideSkeleton = () => {
skeleton.style.transition = 'opacity 0.3s ease';
skeleton.style.opacity = '0';
setTimeout(() => {
skeleton.style.display = 'none';
}, 300);
};
// 检查 iframe 是否已经加载完成
if (iframe.contentDocument || iframe.contentWindow) {
try {
// 如果 iframe 已加载,直接隐藏骨架屏
if (iframe.contentWindow.document.readyState === 'complete') {
setTimeout(hideSkeleton, 500);
return;
}
} catch (e) {
console.log('[Video] 跨域 iframe,无法检查状态:', e.message);
// 跨域情况下无法访问 contentWindow,继续监听 load 事件
}
}
// 监听 load 事件
iframe.addEventListener('load', () => {
console.log('[Video] iframe load 事件触发');
setTimeout(hideSkeleton, 500);
});
// 添加超时保护,确保骨架屏最终会被隐藏
setTimeout(() => {
if (skeleton.style.display !== 'none') {
console.log('[Video] 超时保护触发,强制隐藏骨架屏');
hideSkeleton();
}
}, 5000); // 5秒后强制隐藏
} else {
console.error('[Video] 未找到 iframe 或 skeleton 元素');
}
}, 0);
},
// 随机跳转
async jumpToRandomVideo() {
try {
const response = await fetch(`/api/qun/randomid?t=${Date.now()}`, {
headers: {
'x-data-key': this.dataKey,
'x-api-key': 'dagexxx.com'
}
});
const data = await response.json();
if (data?.status === 1 && data?.data?.id) {
window.location.href = `/${this.language}/play/${data.data.id}.html`;
} else {
console.error('获取随机视频失败:', data?.message || '未知错误');
}
} catch (err) {
console.error('获取随机视频失败:', err);
}
},
// 复制分享链接
copyShareLink() {
const input = this.$refs.shareInput;
if (input) {
input.select();
input.setSelectionRange(0, 99999); // For mobile devices
// 尝试使用现代 API
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(this.pageUrl).then(() => {
alert('Đã sao chép liên kết!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('Đã sao chép liên kết!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('Đã sao chép liên kết!');
}
}
},
// 切换布局
toggleLayout() {
this.isSingleColumn = !this.isSingleColumn;
this.setCookie('list_layout', this.isSingleColumn ? 'single' : 'multi', 30);
},
// 加载更多
loadMore() {
this.currentPage++;
},
// 保存观看历史
saveWatchHistory() {
try {
const storageKey = 'watchHistory';
let history = JSON.parse(localStorage.getItem(storageKey) || '[]');
// 解码 HTML 实体编码的标题
const decodeHtmlEntities = (text) => {
const textarea = document.createElement('textarea');
textarea.innerHTML = text;
return textarea.value;
};
const video = {
id: this.videoData.id,
title: decodeHtmlEntities(this.videoData.title),
image: this.videoData.images || this.videoData.preview,
duration: this.videoData.duration || ''
};
// 过滤掉已存在的相同 ID 视频
history = history.filter(item => item.id !== video.id);
// 添加新记录到最前面
history.unshift(video);
// 限制最多保存 100 条
if (history.length > 100) {
history = history.slice(0, 100);
}
localStorage.setItem(storageKey, JSON.stringify(history));
} catch (e) {
console.error('Failed to save watch history:', e);
}
},
// 更新标签统计
updateTagStats(tags = []) {
// HTML 实体解码函数
const decodeHtmlEntities = (text) => {
const textarea = document.createElement('textarea');
textarea.innerHTML = text;
return textarea.value;
};
const storageKey = this.dataKey + 'tagWatchStats';
const lastWatchedKey = this.dataKey + 'tagLastWatched';
const raw = localStorage.getItem(storageKey);
const stats = raw ? JSON.parse(raw) : {};
// 解码标签并统计
const decodedTags = tags.map(tag => decodeHtmlEntities(tag));
decodedTags.forEach(tag => {
stats[tag] = (stats[tag] || 0) + 1;
});
localStorage.setItem(storageKey, JSON.stringify(stats));
localStorage.setItem(lastWatchedKey, JSON.stringify(decodedTags));
},
// 点击统计
hitVideoId(id) {
fetch(`/api/qun/hit?type=play&id=${id}`, {
method: 'GET',
headers: {
'x-data-key': this.dataKey,
'x-api-key': 'dagexxx.com'
}
}).catch(err => {
console.error('点击统计失败:', err);
});
},
// Cookie 工具方法
getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
},
setCookie(name, value, days) {
const expires = new Date(Date.now() + days * 864e5).toUTCString();
document.cookie = `${name}=${value}; expires=${expires}; path=/`;
}
};
}