海洋CMS自动采集脚本
使用方法:
注意: 海洋 CMS 官方网站技术文档,在宝塔自动采集一节里,存在点小 bug,就是在浏览器ua代码里存在特殊不可见字符,直接复制使用会报服务器400错误,请务必修改ua代码或使用本文代码
创建宝塔每日计划任务
打开宝塔后台-计划任务-添加任务

如图,类型要选择 "shell 脚本" ,名称任意,时间选空闲时间即可。
脚本内容输入下面代码:
#!/bin/bash
########################################################
# 程序名称: 海洋CMS自动采集脚本
# 版本信息:seacmsbot/ v2.0
# 发布链接: https://www.seacms.com/
# 使用方法:直接复制代码到宝塔计划任务shell脚本内容里添加每小时任务使用
# 更新时间:2019.9.26
##########################################################
#①请修改下面的网站域名及管理目录
web_site="http://网站域名/管理目录/admin_reslib2.php"
#②请修改下面项内容为"admin_reslib2.php"里设置的访问密码(默认为系统设置的cookie密码)
web_pwd="8888e82e85bd4540f0defa3fb7a8e888"
#③下面项内容为资源站每日采集链接地址列表,请自行修改,每行一条,可添加多个,前后需添加引号。
#每日采集链接获取方法:选择"后台-采集-资源库列表",复制资源站右边的"采集每天"的链接地址,去掉?前面的内容。
web_api=(
'?ac=day&rid=1&url=https://api.iokzy.com/inc/ldg_seackm3u8s.php'
'?ac=day&rid=2&url=http://www.zdziyuan.com/inc/s_ldgm3u8_sea.php'
)
#模拟用户浏览器ua,如果被目标防火墙拦截,请修改为真实ua或去掉后面的'seacmsbot'标识!
web_ua="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36 seacmsbot/1.2;"
#采集单页
function get_content() {
echo "正在采集第$page页..."
#echo " get_content: --->url:--->$1"
cResult=$(curl --connect-timeout 10 -m 20 -k -s -L -A "$web_ua" "$1" )
echo $cResult | grep -q "采集"
#echo -e "$1\n$cResult"
if [ "$?" = "0" ]; then
next_content "$cResult"
else
echo -e "采集失败,请检查设置!\n失败链接-->$1\n返回信息-->$cResult\n采集结束,共0页"
fi
}
#采集下页
function next_content() {
#统计数据
Result=$(echo "$1" | tr "
" "\n")
a=$(echo "$Result" | grep -c "采集成功")
b=$(echo "$Result" | grep -c "更新数据")
c=$(echo "$Result" | grep -c "无需更新")
d=$(echo "$Result" | grep -c "跳过")
echo "采集成功-->已更$c部,新增$a部,更新$b部,跳过$d部"
let add+=$a
let update+=$b
let none+=$c
let jmp+=$d
#检测并采集下页
next_url=${1##*location.href=\'}
next_url=${next_url%%\'*}
#echo $next_url
if [ "${next_url:0:1}" = "?" ]
then
let page++
get_content "$web_site$next_url"
else
echo "采集结束,共$page页"
fi
}
#脚本入口
echo "海洋CMS自动采集脚本开始执行 版本:v1.2"
starttime=$(date +%s)
update=0 #更新
add=0 #新增
none=0 #无变化
jmp=0 # 跳过
for url in ${web_api[@]};
do
if [[ ! -z $url ]]
then
web_param="$web_site$url&password=$web_pwd"
page=1
echo "开始采集:$url"
get_content $web_param
fi
done
endtime=$(date +%s)
echo "============================"
echo "入库-->$add部"
echo "更新-->$update部"
echo "跳过-->$jmp部(未绑定分类或链接错误)"
echo "今日-->$[none+add+update]部"
echo "============================"
echo "全部采集结束,耗时$[endtime - starttime]秒"
修改代码
修改代码匹配自己的网站域名及设置,可以参考代码注释修改,下面是具体方法:
修改网站域名
web_site="http://网站域名/管理目录/admin_reslib2.php"
网站域名换成自己的网站域名,如果开启 了 ssl,需要修改为 "https"
另外,又一个技巧就是使用本地 IP 127.0.0.1 ,需要在宝塔后台-网站-高级设置里默认网站为电影网站。
这样可以避免防火墙限制,速度也会快很多。
修改访问密码
web_pwd="8888e82e85bd4540f0defa3fb7a8e888"
这个密码在海洋 CMS 后台 - 系统-网站设置-网站基本设置- cookie 加密码,直接复制过来就可以。
修改采集链接
web_api=(
'?ac=day&rid=1&url=https://api.iokzy.com/inc/ldg_seackm3u8s.php'
'?ac=day&rid=2&url=http://www.zdziyuan.com/inc/s_ldgm3u8_sea.php'
)
这个变量是一个文本数组,每行是一个资源站每日采集的链接地址,用引号包裹
每日采集链接获取方法:选择"后台-采集-资源库列表",复制资源站右边的"采集每天"的链接地址,删除?前面的内容,如代码所示。
修改完成后保存即可
注意事项
最新宝塔的计划任务里的日志默认不在自动更新需要每次手动设置更新频率,因此会造成一个脚本卡了的错觉,执行时请手动设置刷新频率才能看到实时效果。
