吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5711|回复: 15
收起左侧

[其他原创] LanZouDown蓝奏云文件夹解析软件库后端+APP

[复制链接]
全能小太阳 发表于 2022-10-25 14:12
本帖最后由 全能小太阳 于 2022-10-25 14:15 编辑

此贴根据前几天写的蓝奏云文件夹解析制作而成,根据上贴思路,T、K的值是变化的,T是时间戳,于是就把T、K的值存在数据库,下面的是后台添加文件分类填写蓝奏云文件链接的操作:
[Asm] 纯文本查看 复制代码
//新增软件分类
    public function addsort(Request $request)
    {
        $data = $request->param();
        $validate = Validate::make([
            'classname'  => 'require',
            'classicon' => 'require',
            'classdetail' => 'require',
            'lanzouurl' => 'require',
            'lanzoupwd' => 'require',
        ]);
        if (!$validate->check($data)) {
            return Common::ReturnError($validate->getError());
        }
        $datas=null;
        $curl = curl_init(); // 启动一个CURL会话
        curl_setopt($curl, CURLOPT_URL, $data['lanzouurl']); // 要访问的地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36'); // 模拟用户使用的浏览器
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $datas); // Post提交的数据包
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
        $tmpInfo = curl_exec($curl); // 执行操作
        if (curl_errno($curl)) {
            echo 'error';//捕抓异常
        }
        curl_close($curl);
        $content=$tmpInfo;
        preg_match("/t':(.*),/U", $content, $qt);
        preg_match("/k':(.*),/U", $content, $qk);
        preg_match("/$qt[1] = '(.*)\'/U", $content, $t);
        preg_match("/$qk[1] = '(.*)\'/U", $content, $k);
        $data['lanzout']=$t[1];
        $data['lanzouk']=$k[1];
        $appclass = Db::name('appclass')->where('classname', $data['classname'])->find();
        if(!$appclass){
            $data['classtime'] = date("Y-m-d H:i:s", time());
            $class = new Acs();
            $db = $class->save($data);
            if ($db > 0) {
                Common::adminLog('添加软件分类:' . $data['classname']);
                return Common::ReturnSuccess("添加成功");
            } else {
                return Common::ReturnError("添加失败");
            }
        }else{
            return Common::ReturnError("分类已存在");
        }
    }

以上代码在后台天剑分类时,会自动首次获取蓝奏云文件夹的T、K值存在数据库。
image.png
然后我想的是T、K值不是固定的于是乎就有了,手动更新选项
image.png

然后是代码实现:
[Asm] 纯文本查看 复制代码
public function uplanzou(){
        $id = input('id');
        $apps =  Db::name('appclass')->where('id',$id)->find();
        $datas=null;
        $curl = curl_init(); // 启动一个CURL会话
        curl_setopt($curl, CURLOPT_URL, $apps['lanzouurl']); // 要访问的地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36'); // 模拟用户使用的浏览器
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $datas); // Post提交的数据包
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
        $tmpInfo = curl_exec($curl); // 执行操作
        if (curl_errno($curl)) {
            echo 'error';//捕抓异常
        }
        curl_close($curl); // 关闭CURL会话
        $content=$tmpInfo;
        preg_match("/t':(.*),/U", $content, $qt);
        preg_match("/k':(.*),/U", $content, $qk);
        preg_match("/$qt[1] = '(.*)\'/U", $content, $t);
        preg_match("/$qk[1] = '(.*)\'/U", $content, $k);
        $data['lanzout']=$t[1];
        $data['lanzouk']=$k[1];
        $db = Acs::where('id', $id)->update($data);
        if ($db > 0) {
            Common::adminLog('更新:'. $apps['classname'].'蓝奏参数成功' );
            return Common::ReturnSuccess("更新成功");
        } else {
            return Common::ReturnError("更新成功");
        }
    }


PHP都是自学的,大家理解下,不是很会。

上面实现了更新,但是在开发前端过程中,发现突然无法获取T、K值了,经过排查发现是蓝奏的网页缓存时间是3分钟,三分钟后就会失效,这个问题就只能使用笨办法,于是就有了下面的前端接口:
[Asm] 纯文本查看 复制代码
//定时更新Tk
    public function UpTk()
    {   
        $apkclass=Appclass::select();
        foreach ($apkclass as $k => $class){
            $datas=null;
            $curl = curl_init(); // 启动一个CURL会话
            curl_setopt($curl, CURLOPT_URL, $class['lanzouurl']); // 要访问的地址
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
            curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36'); // 模拟用户使用的浏览器
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
            curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
            curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
            curl_setopt($curl, CURLOPT_POSTFIELDS, $datas); // Post提交的数据包
            curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
            curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
            $tmpInfo = curl_exec($curl); // 执行操作
            if (curl_errno($curl)) {
                echo 'error';//捕抓异常
            }
            curl_close($curl);
            $content=$tmpInfo;
            preg_match("/t':(.*),/U", $content, $qt);
            preg_match("/k':(.*),/U", $content, $qk);
            preg_match("/$qt[1] = '(.*)\'/U", $content, $t);
            preg_match("/$qk[1] = '(.*)\'/U", $content, $k);
            $data['lanzout']=$t[1];
            $data['lanzouk']=$k[1];
            $db = Appclass::where('id', $class['id'])->update($data);
            if ($db > 0) {
                $result[]=$class['classname'].':Tk更新成功';
            } else {
                $result[]=$class['classname'].':Tk更新失败';
            }
        }
        return $this->returnSuccess('更新完成',$result);
    }


所以可以通过宝塔定时任务实现更新T、K值,然后设置2分钟访问一次就OK,这是这个软件库的麻烦。


为什么会开发这个玩意呢,因为我之前也开源的有,软件库系统,但是需要跟博客一样一个个发布,有人就反馈给我,太过麻烦,刚好这段时间PHP稍微有点进步,可以写出来,也不算是进步吧,我也没有系统学过,也没有网上学过,平常就是改改别人代码,就会了一部分,还请各位大佬手下留情,不要再说什么很简单了,我觉得我分享出来就是不错,也算是学习过程中的交流心得吧。

前端包括:会员、积分系统、在线商城、积分兑换、后台可自定义会员事件和积分事件,提高程序的可二开性质。

前端基于UNI-APP

前端预览:
Screenshot_20221025_131648_com.yuncheng.lanzoudow.jpg Screenshot_20221025_131642_com.yuncheng.lanzoudow.jpg Screenshot_20221025_131710_com.yuncheng.lanzoudow.jpg


后台安装,请按照Thinkphp的安装方式安装。

前端+后端下载地址:
https://iebp.lanzouv.com/b08c52t4b
密码:58k2

免费评分

参与人数 4吾爱币 +9 热心值 +3 收起 理由
笙若 + 1 + 1 谢谢@Thanks!
wushaominkk + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
笨笨家的唯一 + 1 热心回复!
yanglinman + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 全能小太阳 发表于 2022-10-26 11:03
lizf2019 发表于 2022-10-25 19:06
有个问题请问楼主 就是软件是不是用来获取蓝奏直链的

解析蓝奏云文件夹,当软件库用
污小汪 发表于 2022-10-25 14:25
黑猫的猫 发表于 2022-10-25 14:26
janny82 发表于 2022-10-25 17:48
这东西看着好高大上,安装一个试试~~~不错的说 感谢哈~!!
vip1639253946 发表于 2022-10-25 18:49
优秀收藏备用
lizf2019 发表于 2022-10-25 19:06
有个问题请问楼主 就是软件是不是用来获取蓝奏直链的
忧郁之子 发表于 2022-10-26 07:22
好东西,谢谢分享。
fcguo800 发表于 2022-11-12 16:56
非常不错的工具,感谢分享。
shengyong 发表于 2022-11-13 19:25
感谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 16:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表