零,有些app可在线观看视频但要付费下载,有些甚至不开放下载功能,这些很多都是可以利用抓包工具实现下载的,下面介绍一个案例。
一,利用电脑发一个热点,我主机为ubuntu,直接建立新的wifi即可。
二,手机连接电脑wifi。(如果手机电脑在同一网段,可略过一二步)
三,电脑打开wireshark,选择对应无线网卡,开始运行。
四,查看手机ip,在wireshark过滤框输入 ip.src==10.40.0.89 && http(手机ip)
五,接下来根据实际情况调整,我使用的某手机软件测试,视频是直接用的http get请求获取,分段每段500k,之前还会活取一个视频分段表。
六,每段视频的报文,找到http应用层报文就能看到下载连接,双击浏览器直接打开即可下载。。。。
七,但是,,,有些视频很长,会分成很多段,一条一条下效率太低,能自动完成吗?可以的,如果你懂一点shell,接下来是解决方案。
1,找到视频分段表,用浏览器打开会看到本条视频每条的链接,全部保存成文本。类似下面这样:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:11
#EXTINF:3.018533,
http://xxx.cn/201509/01/21/ADBEE2FC-773F-409F-B272-D699D2D2A361/500k-150901215652-0.ts
#EXTINF:1.620722,
http://xxx.cn/201509/01/21/ADBEE2FC-773F-409F-B272-D699D2D2A361/500k-150901215652-1.ts
#EXTINF:9.448022,
http://xxx.cn/201509/01/21/ADBEE2FC-773F-409F-B272-D699D2D2A361/500k-150901215652-2.ts
#EXTINF:10.015844,
http://xxx.cn/201509/01/21/ADBEE2FC-773F-409F-B272-D699D2D2A361/500k-150901215652-3.ts
#EXTINF:1.060722,
http://xxx.cn/201509/01/21/ADBEE2FC-773F-409F-B272-D699D2D2A361/500k-150901215652-4.ts
#EXTINF:0.760000,
http://xxx.cn/201509/01/21/ADBEE2FC-773F-409F-B272-D699D2D2A361/500k-150901215652-5.ts
#EXT-X-ENDLIST
2,接下来就简单了,无非就是分割字符串,wget下载,然后cat整合。代码如下
for args in $@
do
name=$args
dirname=`printf "%s%s" "$name" "s"`
mkdir $dirname
urls="`cat $name`"
cd $dirname
#echo $urls
urlarr=($urls)
len=${#urlarr[@]}
for((i=6;i<$len;i=i+2))
do
#echo ${urlarr[$i]}
wget ${urlarr[$i]}
done
for l in `ls *.ts | sort -t "-" -k3 -n`
do
#echo $l
cat $l >> $name
rm $l
done
mv $name ../saved-$name
cd ..
rm -r $dirname
done
3,运行shell,如./download.sh videos.txt(你的视频目录文件名),稍等片刻视频就被下载到同一目录。
八,本例代码不具通用性,不同app获取视频方式不一,根据具体情况调整。按说如果不是加密过的都可以使用本逻辑进行操作。