如何批量获取网易公开课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.然后利用把整个系列所有课程的页面链接保存下来:
3.然后用selenium依次打开这些页面,获取swf的地址。
以上是 如何批量获取网易公开课Request Url? 的全部内容, 来源链接: utcz.com/a/160667.html