菜单

成人内容提取器

相关源文件

目的与范围

本文档描述了 youtube-dl 中处理成人内容网站的提取器。这些专门的提取器旨在应对年龄验证系统、处理特定网站的视频分发机制以及从成人内容平台提取元数据。有关通用提取器架构的信息,请参阅 提取器系统

本文档涵盖的提取器包括 PornHub、XTube、Tube8、SpankWire、ExtremeTube、KeezMovies、YouJizz 和 MofoSex 的提取器。

来源:youtube_dl/extractor/pornhub.py31-119 youtube_dl/extractor/xtube.py18-42 youtube_dl/extractor/tube8.py12-34 youtube_dl/extractor/spankwire.py16-27

架构概述

成人内容提取器遵循与其他 youtube-dl 提取器相同的继承模式,继承自 InfoExtractor 基类。一些提取器,例如 Tube8 和 ExtremeTube,继承自其他成人内容提取器,如 KeezMovies,以共享通用的提取逻辑。

来源:youtube_dl/extractor/pornhub.py31-119 youtube_dl/extractor/keezmovies.py18-134 youtube_dl/extractor/xtube.py18-42 youtube_dl/extractor/tube8.py12-34 youtube_dl/extractor/spankwire.py16-27 youtube_dl/extractor/extremetube.py7-50 youtube_dl/extractor/youjizz.py14-95 youtube_dl/extractor/mofosex.py14-59

通用提取模式

成人内容提取器共享几种通用模式,以应对这些网站带来的独特挑战

绕过年龄验证

大多数成人内容提取器都包含绕过年龄验证提示的技术

这通常通过设置 cookie 或请求特定 URL 来实现

提取器年龄验证技术
PornHubself._set_cookie(host, 'age_verified', '1')
XTube带有 'Cookie': 'age_verified=1; cookiesAccepted=1' 的标头
KeezMovies带有 'Cookie': 'age_verified=1' 的标头

来源:youtube_dl/extractor/pornhub.py268 youtube_dl/extractor/xtube.py87-89 youtube_dl/extractor/keezmovies.py45

身份验证处理

一些成人内容提取器支持身份验证以访问付费内容

PornHub 拥有一个特别全面的登录实现,可以处理常规和付费网站

登录方法会检查常规和付费域的凭据

来源:youtube_dl/extractor/pornhub.py32 youtube_dl/extractor/pornhub.py63-118

特定的成人内容提取器

PornHub 提取器

PornHub 提取器是 youtube-dl 中最全面的成人内容提取器之一。它支持多个域名,处理付费内容的身份验证,并提取广泛的元数据。

主要功能

  • 支持多个域名(pornhub.com、pornhubpremium.com 等)
  • 付费内容的身份验证
  • 提取详细元数据(标题、观看次数、点赞数、评论数等)
  • 支持提取播放列表
  • 处理 JavaScript 保护的内容

提取器由几个类组成

  • PornHubBaseIE:具有通用功能的基类
  • PornHubIE:主视频提取器
  • PornHubUserIE:提取用户/频道/模特页面
  • PornHubPagedVideoListIE:提取分页视频列表
  • PornHubUserVideosUploadIE:提取用户上传的视频

URL 模式

https?://(?:(?:[^/]+\.)?pornhub(?:premium)?\.(?:com|net|org)|pornhubthbh7ap3u\.onion)/(?:(?:view_video\.php|video/show)\?viewkey=|embed/)(?P<id>[\da-z]+)

来源:youtube_dl/extractor/pornhub.py121-502 youtube_dl/extractor/pornhub.py528-767

XTube 提取器

XTube 提取器同时支持旧版和新版 URL 模式

  • 旧版模式:http://www.xtube.com/watch.php?v=kVTUy_G222_
  • 新版模式:http://www.xtube.com/video-watch/strange-erotica-625837

它提取元数据,包括标题、描述、上传者、时长、观看次数和评论次数。

URL 模式

(?x)(?:xtube:|https?://(?:www\.)?xtube\.com/(?:watch\.php\?.*\bv=|video-watch/(?:embedded/)?(?P<display_id>[^/]+)-))(?P<id>[^/?&#]+)

来源:youtube_dl/extractor/xtube.py18-188

Tube8 提取器

Tube8 提取器继承自 KeezMoviesIE 并添加了额外的元数据提取

URL 模式

https?://(?:www\.)?tube8\.com/(?:[^/]+/)+(?P<display_id>[^/]+)/(?P<id>\d+)

来源:youtube_dl/extractor/tube8.py12-86

SpankWire 提取器

SpankWire 提取器同时处理直接 URL 和嵌入式视频。它以各种质量格式和详细元数据提取视频。

URL 模式

(?x)https?://(?:www\.)?spankwire\.com/(?:[^/]+/video|EmbedPlayer\.aspx/?\?.*?\bArticleId=)(?P<id>\d+)

来源:youtube_dl/extractor/spankwire.py16-182

KeezMovies 提取器(基类)

KeezMovies 是几个其他成人内容提取器的基类。它提供了 _extract_info 方法,该方法被子类重用

来源:youtube_dl/extractor/keezmovies.py18-134

常见挑战与解决方案

格式提取

成人内容网站通常使用自定义的格式分发系统。提取器通常通过以下方式处理:

  1. 在 flashvars 或 JavaScript 变量中查找格式信息
  2. 从网页中提取直接视频 URL
  3. 支持多种质量级别
  4. 在可用时处理 HLS 和 DASH 格式

例如,在 PornHub 中

来源:youtube_dl/extractor/pornhub.py415-435

JavaScript 保护

许多成人内容网站使用 JavaScript 来保护视频 URL。提取器通过以下方式处理:

  1. 解析 JavaScript 变量
  2. 在需要时使用 PhantomJS 执行 JavaScript
  3. 自定义处理加密 URL

PornHub 提取器包含复杂的 JavaScript 处理

来源:youtube_dl/extractor/pornhub.py46-56

测试策略

成人内容提取器包含测试用例,这些测试用例可验证

  • 视频 ID 提取
  • 元数据提取
  • 格式选择

测试用例通常包括

  • 常规视频
  • 标题包含非 ASCII 字符的视频
  • 带字幕的视频(如适用)
  • 具有不同 URL 模式的视频

例如,来自 PornHub 的测试用例

来源:youtube_dl/extractor/pornhub.py133-152

与核心系统的集成

成人内容提取器与 youtube-dl 的其他系统集成

成人内容提取器遵循标准的提取流程

  1. URL 匹配
  2. 网页下载(带年龄验证)
  3. 信息提取
  4. 格式选择
  5. 通过核心下载系统下载

来源: youtube_dl/extractor/pornhub.py31-502 youtube_dl/extractor/xtube.py18-188 youtube_dl/extractor/tube8.py12-86 youtube_dl/extractor/spankwire.py16-182

总结

youtube-dl 中的成人内容提取器为各种成人内容平台提供了专门的处理。它们共享年龄验证绕过、身份验证和格式提取的通用模式,同时实现特定于站点的提取逻辑。这些提取器遵循与系统中其他提取器相同的通用体系结构,但增加了对成人内容网站提出的独特挑战的处理。