PHP采集91视频配合Aria2自动下载并上传OneDrive
一、前言
网上很多是Python采集而且视频网站前段时间做了一些防护手段,导致很多源码不能使用。在浏览GitHub的时无意中发现一个用PHP写的采集程序,而且还在更新,作者看来也是一位老司机。
必读文章《使用Aria2+AriaNg+oneindex+onedrive建立离线BT下载/在线播放》
二、准备工作
1、一台国外服务器,硬盘没有要求,但是流量一定要大(建议10T起步);
2、注:不要在口碑不好的商家购买;
3、一个5Tb的OneDrive帐号(百度搜一下,可以申请到。建议不要存储重要资料);
4、具备一定的Linux知识
三、操作步骤
注:以下教程基于CentOS7操作,使用其它系统出现问题请自行解决。
1、服务器基本操作:
1.1 “升级”
1 | yum -y update |
这一步是我个人习惯性操作,可以略过。
1.2 安装Screen
1 | yum -y install screen |
连接国外服务器可能会出现网络“波动”情况,使用Screen命令可以避免连接断开导致半途而废。
screen -S yourname 新建一个叫yourname的session;例:screen -S porn
screen -ls 列出当前所有的session;
screen -r yourname 回到yourname这个session;例:screen -r pron
screen -d yourname 远程detach yourname这个session;例:screen -d pron
2、编译安装Aria2
一定要用源码编译安装后再使用网上的一键脚本
2.1 安装编译所需环境
1 | yum -y install gcc-c++ gcc |
2.2 下载Aria2源码
这里使用screen 新建一个session,因为编译所需时间有点长。
1 2 3 4 5 6 | screen -S aria git clone https://github.com/aria2/aria2.git cd aria2 autoreconf -i ./configure make |
等待编译完成之后
1 2 3 | cd src cp aria2c /usr/local/bin aria2c -v |
出现下图所示,表示已正常安装。
安装完之后还要写aria2的配置文件还开机启动之类的,这里偷个懒,我使用的是一键脚本
下载安装:
1 | wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh |
选择1进行安装
在配置文件/root/.aria2/aria2.conf中把密码注释掉,在rpc-secret选项前加个#号保存,然后运行脚本选择6,重启aria2
3、php采集源码地址:
1 | https://github.com/zzjzz9266a/91porn_php |
把源码Git 到服务器中,使用-b 参数指定aria2 分支(源码有php、php+aria2、docker三个版分支,详细情况请在GitHub源码页查看。)
1 2 | cd /home git clone -b aria2 https://github.com/zzjzz9266a/91porn_php |
建议在Screen 模式下操作
1、91porn.php是爬取首页的视频,直接运行即可;
用法:我上面把源码git到home目录,所要切换到源码目录,然后运行。
cd /home/91porn_php
php 91porn.php
2、91all.php是爬取列表页的,例如“收藏最多”、“本月最热”等等,要别的列表的话可以去找对应的url
listPage("http://91porn.com/v.php?next=watch&viewtype=basic"); //全部视频
//listPage("http://91porn.com/v.php?category=top&viewtype=basic");//本月最热
// listPage("http://91porn.com/v.php?category=mf&viewtype=basic");//收藏最多
// listPage("http://91porn.com/v.php?category=md&viewtype=basic");//本月讨论
爬取页数可以自行更改,默认到10页;
$maxPage = 10; //更改爬取页数
3、下载完成后就可以到videos目录下找到视频文件了
4、下载单个视频文件
运行detailPage.php文件,将视频网页的地址传入
php detailPage.php http://91porn.com/view_video.php?viewkey=042a30e56c9cd20b075f
源码运行需要PHP>=5.6、nodejs
这里我们还可以再偷个懒,使用BT面板进行安装。
1 | yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh |
安装完成之后登录后台在软件商店中进行安装PHP和nodejs(nodejs版本没有限制,我选择的是最新的V12.2.0;php安装的是7.2)
删除php配置文件中的禁用函数 exec、shell_exec
操作到这里,建议重启一下服务器。
四、后续操作
上述步骤操作完,就能把视频下载到你的服务器中,不过要自动上传到OneDrive,还需下面的操作。
1、Onedrive 授权
1 | wget --no-check-certificate -q -O /tmp/OneDrive.sh "https://raw.githubusercontent.com/weiyidu/OneDrive/master/OneDrive.sh" && chmod +x /tmp/OneDrive.sh && bash /tmp/OneDrive.sh |
1.1 运行onedrive -a
1.2 将上图返回的网址复制到浏览器中打开
1.3 登陆你的OneDrive for Business账号
1.4 登陆成功后复制地址栏中的地址,并提取code的字段(code= 后面到 & 前面,这一段)
1.5 粘贴至终端,并敲回车键
2、下载自动上传脚本
1 | wget --no-check-certificate -q -O /root/autoupload.sh "https://raw.githubusercontent.com/weiyidu/OneDrive/master/autoupload_new.sh" && chmod +x /root/autoupload.sh |
脚本源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #!/bin/bash GID="$1"; FileNum="$2"; File="$3"; MaxSize="15728640" RemoteDIR=""; #上传到Onedrive的路径,默认为根目录,如果要上传到指定目录,方法看文章最后面。 LocalDIR="/home/"; #Aria2下载目录,记得最后面加上/ if [[ -z $(echo "$FileNum" |grep -o '[0-9]*' |head -n1) ]]; then FileNum='0'; fi if [[ "$FileNum" -le '0' ]]; then exit 0; fi if [[ "$#" != '3' ]]; then exit 0; fi function LoadFile(){ IFS_BAK=$IFS IFS=$'n' if [[ ! -d "$LocalDIR" ]]; then return; fi if [[ -e "$File" ]]; then if [[ $(dirname "$File") == $(readlink -f $LocalDIR) ]]; then ONEDRIVE="onedrive"; else ONEDRIVE="onedrive-d"; fi FileLoad="${File/#$LocalDIR}" while true do if [[ "$FileLoad" == '/' ]]; then return; fi echo "$FileLoad" |grep -q '/'; if [[ "$?" == "0" ]]; then FileLoad=$(dirname "$FileLoad"); else break; fi; done; if [[ "$FileLoad" == "$LocalDIR" ]]; then return; fi if [[ -n "$RemoteDIR" ]]; then Option=" -f $RemoteDIR"; else Option=""; fi EXEC="$(command -v $ONEDRIVE)"; if [[ -z "$EXEC" ]]; then return; fi cd "$LocalDIR"; if [[ -e "$FileLoad" ]]; then ItemSize=$(du -s "$FileLoad" |cut -f1 |grep -o '[0-9]*' |head -n1) if [[ -z "$ItemSize" ]]; then return; fi if [[ "$ItemSize" -ge "$MaxSize" ]]; then echo -ne "33[33m$File 33[0mtoo large to spik.n"; return; fi eval "${EXEC}${Option}" '"${FileLoad}"'; if [[ $? == '0' ]]; then rm -rf "$FileLoad"; fi fi fi IFS=$IFS_BAK } LoadFile; |
修改源码中的LocalDIR,这里写你的php采集视频下载目录,比如我的就是LocalDIR=/home/91porn_php/videos/
3、修改aria2.conf
打开配置文件修改下载目录,修改dir目录与上面LocalDIR一样。
并在最后一行添加 on-download-complete=/root/autoupload.sh
然后重启Aria2
教程到此结束。
效果:
另外一种玩法:
真实物理电脑中安装SS客户端,《Centos 7安装Proxychains实现Linux 代理》使用SS自带socks5,在虚拟机中操作。
纵横数据面向全国提供自建BGP云计算中心,跨境数据中心运营,AI-GPU大数据中心运营,IOT物联网机房运营,5G移动互联机房建设,海外设备集采上架,边缘云PCDN节点汇聚,私有云建设,动态静态IP租用,机柜大带宽,高防CDN解决方案,物联系统集成,软件开发外包等业务。