如何从YouTube下载视频广告? [英] How to download video ads from Youtube?

查看:22
本文介绍了如何从YouTube下载视频广告?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从YouTube上下载一些(我是说很多)视频广告(不是视频,而是之前播放的广告),用于研究目的。

对实现这一目标的工具或方法有什么建议吗?我不介意一些编程在我的黑客,但我现在不知道如何。此外,YouTube也不是必须的;其他视频网站的视频广告也适用于我。

推荐答案

当我发现你的问题时,我想玩它会很有趣, 正如我最近开发的站点(http://savedeo.com)允许您 从包括YouTube在内的许多网站下载一段视频。

我只查看了YouTube的广告系统,这很可能不适用于其他系统。YouTube的好处是,你可以直接从一个视频页面获取所有必要的信息,所以更容易快速爬行(我在一个非常小的服务器上一天下载了近2200万个视频页面)。因此,您要查找的部分是;ytplayer.config = {(.*?)};,它包含内联json对象(易于处理)。您不需要其他任何东西。

如果您不想从HTML中解析它,您可以通过在任何YouTube视频链接的末尾添加参数&spf=prefetch直接获得json对象,例如https://www.youtube.com/watch?v=bbEoRnaOIbs&spf=prefetch

并不是每个YouTube视频都有广告(根据我的统计,只有18%的视频有广告)。只需在json对象内部查找ad_tag键,即可验证是否为视频启用了ADS。

YouTube使用三种不同的广告系统:

  • AdSense
  • AdSense/ADX
  • 第三方系统

提供来自两个不同来源的广告: -上传到YouTube上的视频用作广告(大部分只显示部分视频) -来自外部来源(第三方广告服务器)的视频

它们的起点都是相同的。在json对象中找到dynamic_allocation_ad_tag键。它包含一个指向DoubleClick服务器的URL。除非您将此部分sz=WIDTHxHEIGHT;更改为真实的AR值,例如sz=480x70,480x360,480x361;,否则此URL将不起作用。

您希望在同一json文件中找到另外三个密钥tpas_partner_idtpas_video_idvideo_id(来自URL的Video_id),因为这些密钥将用于第三方广告系统。

现在您可以点击DoubleClick URL,它将返回一个XML文件,其中包含将为该视频提供的广告的信息。整个文件很有趣,并且充满了重要信息(所以您可能应该将其与视频存储在一起)。查找这三个键AdSystemAdTitleDescription

  • AdSystem:告诉您使用什么系统来投放广告。有三种选择(正如我之前提到的)
    • AdSense
    • AdSense/ADX
    • GDFP
  • 广告标题:告诉您广告的类型(如视频或横幅)
  • 描述:基本与广告标题相同,但有时包含对广告的描述
如果广告是从AdSense系统(AdSense或ADX)提供的,则此XML包含广告的所有信息,包括持续时间和广告的直接链接。该链接正是您要查找的内容,您可以在MediaFile项下找到它。

该链接主要类似于http://www.youtube.com/get_video?video_id=LCeDi-d5CRg&ts=1391921207&t=CyJEI0XYwJVJEYE5CVhqY-DF3KQ&gad=1,它将您重定向到MP4格式的真实文件。如果广告系统是ADX,您将获得主要指向FLV文件的直接链接,例如http://playtime.tubemogul.com/ad_promoted_videos/4799351_dhxsYlMYHmLMmxL0oBem_1390593897.flv

如果广告是来自第三方系统的服务器,GDFP,您必须调用不同的服务器。对于第三方广告,YouTube使用的是自由轮服务。要获取广告数据,您必须准备一个XML请求,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <adRequest profile="{profile}" networkId="10613" version="1">
       <capabilities>
          <expectMultipleCreativeRenditions />
          <supportsAdUnitInMultipleSlots />
          <supportsSlotCallback />
          <supportNullCreative />
          <supportAdBundle />
          <supportsFallbackAds />
          <autoEventTracking />
          <requiresRendererManifest />
          <requiresVideoCallbackUrl />
       </capabilities>
       <visitor caller="AS3-5.6.0-r9954-1305270957">
          <httpHeaders>
             <httpHeader value="https://www.youtube.com/watch?v={video_id}" name="referer" />
             <httpHeader value="12,0,0,38" name="x-flash-version" />
          </httpHeaders>
       </visitor>
       <keyValues>
          <keyValue key="_fw_distributorvideoassetid" value="{video_id}" />
          <keyValue key="_fw_yt_type" value="short" />
          <keyValue key="_fwu:10613:lang" value="eng" />
       </keyValues>
       <siteSection pageViewRandom="{random}" customId="youtube_watch" siteSectionNetworkId="{tpas_partner_id}">
          <videoPlayer>
             <videoAsset autoPlay="true" duration="318" videoPlayRandom="{random}" customId="{tpas_video_id}" videoAssetNetworkId="{tpas_partner_id}">
                <adSlots height="390" defaultSlotProfile="{profile}" width="699" compatibleDimensions="2560,1440">
                   <temporalAdSlot height="390" adUnit="preroll" timePosition="0" customId="0_1" width="699" />
                   <temporalAdSlot height="390" adUnit="overlay" timePosition="0" customId="0_2" width="699" />
                </adSlots>
             </videoAsset>
             <adSlots>
                <nonTemporalAdSlot height="60" customId="0_5" width="300" acceptCompanion="true" />
                <nonTemporalAdSlot height="250" customId="0_6" width="300" acceptCompanion="true" />
             </adSlots>
          </videoPlayer>
          <adSlots />
       </siteSection>
    </adRequest>

您可能在{}中指定了多个变量。您必须将它们替换为定制数据,主要是从json对象获得的数据。

  • tpas_Partner_id:从json对象获取
  • tpas_Video_id:从json对象获取
  • 随机:从纪元开始的时间
  • Video_id:从json对象(或YouTube url)获取
  • 配置文件:我发现两个不同的配置文件。有时一个有效,另一个无效,反之亦然。每次都尝试10613:10613_youtube_as3_player10613:youtube2

现在,将此XML文件作为POST请求发送给https://2975c.v.fwmrm.net/ad/p/1?(不要忘记与内容类型application/xml一起发送)。

响应包含另一个XML文件,其中包含广告的所有必要数据,包括各种共振峰和维度中的直接链接。您可以在asset项下找到它们。同样,您可能应该将整个文件与视频一起存储,因为它包含广告的附加数据。

就是这样,狩猎快乐。

这篇关于如何从YouTube下载视频广告?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆