OL 유니폼 비서 오픈 크로치 블랙 스타킹 아름다운 다리 곡선 엉덩이 흰 셔츠 너무 섹시하고 너무 흥분돼","lastmod":"2026-07-11","duration":"16:34","url":"/play/19152660.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTY2NDllNTM5N2I0ZDkyYTVkYWZlYWVhZWIzODlhZmQuanBn.cache","vod_id":19027066,"title":"섹시한 주부는 남편의 일상생활을 돌봐야 할 뿐만 아니라, 남편이 없을 때는 이웃 남자의 성기까지 관리해야 한다.","lastmod":"2025-03-19","duration":"15:35","url":"/play/19027066.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvY2VmODk1YjA0MTEyOGY0YzYwMDVlYTNkMGZlMzI3ZGUuanBn.cache","vod_id":19059654,"title":"젊고 순수하며 사랑스러운 여성이 최근 성인 엔터테인먼트 업계에 발을 들여놓았고, 나이 지긋한 남성과 성관계를 갖고 있다. 그녀는 날씬한 허리와 풍만한 가슴을 가진 매혹적인 몸매를 자랑한다. 클로즈업 장면에서는 그녀가 다리를 벌리고 음핵을 애무하는 모습이 보인다. 남성은 그녀의 엉덩이를 잡고 뒤에서 삽입하고 있다. 그녀의 표정은 카메라를 응시하고 있다.","lastmod":"2025-03-19","duration":"17:42","url":"/play/19059654.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMjJhZDkzNDQ2NjE5ZWY1YzYxY2YwMDQ2YzA4NjU0YTAuanBn.cache","vod_id":18971139,"title":"SNIS-147-C 섹시 채널","lastmod":"2025-03-19","duration":"03:57:32","url":"/play/18971139.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNjJmZjFkNDVhNWJmMmJiYWRlNmQ4MWJlZjI1NDQ0OGYuanBn.cache","vod_id":18943900,"title":"아주 여린 몸매에 엉덩이에 털이 거의 없는, 원나잇 상대로 딱 좋은 파트타임 여자애.","lastmod":"2025-03-19","duration":"23:29","url":"/play/18943900.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvOWNiMmYxZjdlMThhYmE0N2RhMTY1MzFlMzhjMTJlOTUuanBn.cache","vod_id":19061392,"title":"DVEH-041 감사 인사에 침과 정액이 묻었다고? 내 이웃 마오 씨는 자기 이웃과 굉장히 섹시한 관계를 맺고 있어.","lastmod":"2025-03-19","duration":"02:37:44","url":"/play/19061392.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODM5OTg2NzM2OTMyZGExYjQxZTdkZDk2MWQ5OGEyZjUuanBn.cache","vod_id":19067830,"title":"그는 외국인 친구에게 구강성교를 해주고 나서 그의 질 안에 사정했다.","lastmod":"2025-03-19","duration":"21:13","url":"/play/19067830.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZTg4MDZlZDkzMTllM2YwMGEwMzc3MWE3YjhkNTcyNjAuanBn.cache","vod_id":19014509,"title":"DASS-424 나는 풍만한 몸매에 큰 엉덩이를 가진 여자를 집으로 데려왔다. 그녀는 평생 남자친구가 없었다. 내가 그녀를 강간했을 때, 그녀는 수수하면서도 섹시한 몸매를 가지고 있어서 나는 매우 행복했다.","lastmod":"2025-03-19","duration":"02:20:54","url":"/play/19014509.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvYjQwZWVjNmQ4NzgwZmU0MDA3ZjE0MmU2MjkyOGE3ODcuanBn.cache","vod_id":19093841,"title":"나는 검은 스타킹을 신은 취한 여자를 만나 그녀를 집으로 데려와 성관계를 가졌다.","lastmod":"2025-03-19","duration":"09:12","url":"/play/19093841.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvODI3MGJhYzE5MWM2NmRmMmZiYWU2M2Y1YWY1ZmVjZDYuanBn.cache","vod_id":18996938,"title":"섹시한 장발의 회사원과 그녀의 남자친구가 장거리 연애 중 호텔에서 열정적인 섹스를 즐겼다. 이후 두 사람이 헤어진 뒤 유출된 이 영상에는 겉보기에는 수줍어 보이는 여성이 침대에서 놀라울 정도로 도발적인 모습을 보여준다.","lastmod":"2025-03-19","duration":"23:39","url":"/play/18996938.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZjA0NjNiOGEzZWY4YjJkM2M0M2UxM2U3YWI2MTA5MGUuanBn.cache","vod_id":19076033,"title":"바닥에서 천장까지 이어지는 창문을 통해 열정적인 섹스를 나누었지만, 밖에 사람들이 너무 많아서 수줍어했다...","lastmod":"2025-03-19","duration":"10:39","url":"/play/19076033.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA0MTkvOGMyNTI3MjJlMzY3NTMxZTAxMmE2YThjY2U5YmVlMGUuanBn.cache","vod_id":19100838,"title":"#샤오차오는 절대 만족하지 않아_매력적이고 아름다운 아가씨! 탱크탑을 들어 올려 가슴을 빨고 있어! 서서 질에 삽입하며 눈을 감고 즐기고 있어, 개처럼 엎드린 자세로!","lastmod":"2025-04-19","duration":"07:48","url":"/play/19100838.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNGU5YThmYTk3N2I5MDViYWZmNWVhODczMzk0ZWQ5NjguanBn.cache","vod_id":19000556,"title":"키가 크고 세련된 분위기를 풍기는 성숙한 여성이 긴 다리와 검은 스타킹을 신은 여성 위에 올라탄 채 가면을 쓴 남성에게 성폭행을 당한다. 남자는 늑대 이빨 가면을 쓰고 있으며, 카메라가 여성의 얼굴을 클로즈업하는데, 그녀의 유혹적인 표정이 드러난다.","lastmod":"2025-03-19","duration":"01:28:32","url":"/play/19000556.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvZGQ1ZDVhYWM0MDcxNGM5ZGE2MGVjNTA2ZjZhMjllMTkuanBn.cache","vod_id":19074411,"title":"공부하던 어린 여동생이 뒤에서 잔인하게 성폭행당하는 영상입니다.","lastmod":"2025-03-19","duration":"07:15","url":"/play/19074411.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvNWNhZDE0YTE2NDRlMjMzZjNiOWFkZDg4NmNkOGQ2MDkuanBn.cache","vod_id":19084233,"title":"그녀가 내 욕실로 들이닥쳤고, 나는 뒤에서 그녀를 강간했다.","lastmod":"2025-03-19","duration":"05:55","url":"/play/19084233.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA3MjkvNjJhYmQxM2IwNDJkYjhkNTU4NTczZjYxODEyNTdlZmMuanBn.cache","vod_id":19114359,"title":"놀랍도록 아름다운 인터넷 스타! 보기 드문 대담하고 매혹적인 모습! 섹시한 끈팬티와 탄력 있는 엉덩이 (1)","lastmod":"2025-07-29","duration":"09:34","url":"/play/19114359.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTA4MjEvNjc0NjA0MDBjOWMxYzQ2Nzg2MzI2NTgxNWY1Y2EzYTkuanBn.cache","vod_id":19117359,"title":"검은 스타킹을 신고 얼굴을 드러낸 예쁜 소녀는 생리 중임에도 불구하고 여전히 성적으로 흥분되어 있으며, 자신을 좋아하는 남성들이 쏟아붓는 선물 공세를 거부할 수 없다.","lastmod":"2025-08-21","duration":"35:05","url":"/play/19117359.html"},{"img":"https://cache.sgvafs.com/base/aHR0cHM6Ly92aWRlby5kYWdlLnRvcC9zdG9yYWdlL3VwbG9hZHMvMjAyNTAzMzEvMTZmNjRmNDNiNThjMDBmOWM5MGVhZTkzYzY3ZWE3OTUuanBn.cache","vod_id":19064078,"title":"마이 나나시마 - ABW-206 \"섹시\" 오일리 3샷","lastmod":"2025-03-19","duration":"04:01:13","url":"/play/19064078.html"}]},
videoTitle: '오픈 크로치 블랙 스타킹을 신은 뒤태의 섹시한 큰 엉덩이는 정말 유혹적이네요!',
language: 'ko',
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('링크 복사 완료!');
}).catch(() => {
// 降级到旧方法
document.execCommand('copy');
alert('링크 복사 완료!');
});
} else {
// 降级到旧方法
document.execCommand('copy');
alert('링크 복사 완료!');
}
}
},
// 切换布局
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=/`;
}
};
}