如何批量获取网易公开课Request Url?

网易公开课线性代数代数系列课程

图片描述

图片描述

问题描述

这个系列一共有35集,一个个手动去获取Reqeust url肯定是不现实的,如果requests.get(url)的话得到的只有swf的链接。

<embed src="http://swf.ws.126.net/openplayer/v01/-0-2_M6V0BQC4M_M6V29EGPP-vimg1_ws_126_net//image/snapshot_movie/2011/3/U/G/M6V29EEUG-1430711943278.swf" >

请问我应该如何用编程的方式,而不是这种手动抓包批量获取这些url呢?

阅读 5.1k
2 个回答

这个可能跟python关系不大了,从网络请求可以看到,在请求flv之前,有个xml的请求:

http://live.ws.126.net/movie/D/K/2_M82ICR1D9_M83C881DK.xml

底下是里面的片段:

    <title>可汗学院公开课:线性代数</title>
    <pnumber>2</pnumber>
    <encrypt>1</encrypt>
    <flvUrl>
        <hd default="true">
            <flv>E2BA84651E56C82C8CE97002DC1F7CAEA29180ACE8C6DADCA45104768872534AA5C214B0867E1462ED82A6D12127FFD91F65A0C004BD46482FBC5902AA0AE0F3318D0D31C116F4D94B2C3AB249A726A3</flv>
        </hd>
    </flvUrl>
    <flvUrlOrigin>
        <hd default="true">
            <flv>E2BA84651E56C82C8CE97002DC1F7CAEA29180ACE8C6DADCA45104768872534AA5C214B0867E1462ED82A6D12127FFD9FE322DE168A2EE7A2661A339A477B36BE6FEA21BC453290E93A64F68A3A65438</flv>
        </hd>
    </flvUrlOrigin>
    <playurl>
        <SD default="true">
            <mp4>E2BA84651E56C82C8CE97002DC1F7CAEA29180ACE8C6DADCA45104768872534AA5C214B0867E1462ED82A6D12127FFD91F65A0C004BD46482FBC5902AA0AE0F3318D0D31C116F4D94B2C3AB249A726A3</mp4>
            <mp4>605CF28E9E16FC9350EF99E895DD166C6099596C18F1EE427C00BCF1E5942FD15C317D341FCFAB5B052EB73E2E59B2C638FC681CE6AD7BAE7BC73D7941433719F1E6069F9816FDF1AC941EAAA3DE60CE</mp4>
        </SD>
    </playurl>

可以看到flv的地址是加密的一个字符串,所以本质上就是要解密这个地址。播放器实际就是个flash文件,可以逆向flash文件,找到解密的算法,用Python实现一下。

或者可以搜索一下,也有一些讨论:
https://www.v2ex.com/t/181487
https://www.zhihu.com/questio...

提供一个思路:

1.使用python selenium打开该页面,使用用selenium提供的方法点击:“查看全部”;

2.然后利用把整个系列所有课程的页面链接保存下来:

clipboard.png

3.然后用selenium依次打开这些页面,获取swf的地址。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题