如何批量获取网易公开课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呢?

回答:

这个可能跟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的地址。

以上是 如何批量获取网易公开课Request Url? 的全部内容, 来源链接: utcz.com/a/160667.html

回到顶部