Skip to content
This repository has been archived by the owner on Jun 6, 2024. It is now read-only.

Commit

Permalink
Merge pull request #102 from yuantuo666/dev
Browse files Browse the repository at this point in the history
2.1.5版本更新
  • Loading branch information
yuantuo666 authored Apr 3, 2021
2 parents 3129208 + 3c6420b commit ac79402
Show file tree
Hide file tree
Showing 12 changed files with 435 additions and 224 deletions.
36 changes: 19 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,15 @@ PanDownload 网页复刻版,PHP 语言版<br/>
因站长学习紧张加上精力有限,演示站没有时间维护,故暂时关闭。

## 🚧Blacklists
- https://pan.xiaoshuyun.cn/ 1.4.3版本 无密码
- https://pan.qiafan.vip/ 1.4.5版本 无密码
- http://www.dupan.cc/ (恶意篡改后台并加密,站长QQ33703259)
<!-- - https://bd.fmvp.cc/ 1.4.5版本 无密码 -->

- http://www.pojiewo.com/baidujx 1.4.2版本 注:此网站 **盗用** 其他网站的接口获取下载地址
- https://202.61.130.143/ 1.4.2版本
- http://59.110.124.211:9090/ 1.0版本
- http://yunpan.aoti.xyz:81/ 1.4.2版本
- https://pan.jwls.live/ 1.4.3版本
- https://bd.pkqjsq.top/ 1.4.3版本
- http://pan.0ddt.com/ 1.0版本
<!-- - https://pan.xiaoshuyun.cn/ 1.4.3版本 无密码 -->
<!-- - https://bd.pkqjsq.top/ 1.4.3版本 -->
<!-- - http://pan.0ddt.com/ 1.0版本 -->
<!-- - https://129.146.174.245/ 1.4.5版本 -->
<!-- - http://pan.wbeu.cn/ 1.4.5版本 -->
<!-- - https://pan.lie01.com/ 1.4.3版本 -->
<!-- - https://www.bdwp.cf/ 1.4.3版本 -->
<!-- - http://39.105.69.60:82/ 1.0版本 -->

以上网站使用本项目源码,未与作者联系而删除作者信息。<br />
版权信息可添加**Github项目地址****我个人主页地址**,内容可自定,但访客**必须可见**。<br />
Expand All @@ -65,18 +57,28 @@ PanDownload 网页复刻版,PHP 语言版<br/>

# 🔧Install & Setting
首先Clone项目或进入[Releases](https://github.com/yuantuo666/baiduwp-php/releases)下载项目文件。<br />
然后访问 `install.php` 文件并填写相关信息。<br />
然后访问 `install.php` 文件并填写相关信息进行安装。<br />
如果使用数据库,则需要先点击 `检查数据库连接` 连接数据库,保证账号密码正确。<br />
最后点击提交即可。
最后点击提交即可。<br />

安装完成后可直接使用,站长可进入settings.php中进行相关设置。<br />
**SVIP账号**中可设置**SVIP账号****BDUSS****STOKEN**,添加账号后记得进入**会员账号切换模式**将模式改成**顺序模式****轮换模式**。<br />

## 📦New Changes
- 当前版本:`2.1.4`
- 更新日期:2021-03-28
- 当前版本:`2.1.5`
- 更新日期:2021-04-03
- 修改内容:
- 💥新增功能
- 支持通过微信API获取50MB以下文件
- 账号状态检查
- Aria2在线管理页面
- ⚠错误修复
- 修复由于百度网盘更新页面js代码引起的项目失效
- 修复未开启数据库情况下无法正常获取文件下载地址 Thanks to kwxiaozhu
- 修复GetDir()支持PHP8 Thanks to zzjin
- 改用WebSocket推送下载链接到aria2
- ♻代码优化
- 增加账号失效提示
- 版权信息改为Github项目页面
- 删除不必要的版本检测和版本号

[查看更多](Update.md)

Expand Down
15 changes: 15 additions & 0 deletions Update.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,19 @@
# Update
### `2.1.5` 版本:
- 更新日期:2021-04-03
- 修改内容:
- 💥新增功能
- 账号状态检查
- Aria2在线管理页面
- ⚠错误修复
- 修复未开启数据库情况下无法正常获取文件下载地址 Thanks to kwxiaozhu
- 修复GetDir()支持PHP8 Thanks to zzjin
- 改用WebSocket推送下载链接到aria2
- ♻代码优化
- 增加账号失效提示
- 版权信息改为Github项目页面
- 删除不必要的版本检测和版本号

### `2.1.4` 版本:
- 更新日期:2021-03-28
- 修改内容:
Expand Down
11 changes: 3 additions & 8 deletions api.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
* @link https://space.bilibili.com/88197958
*
*/
$programVersion_API = '2.1.4';
session_start();
define('init', true);
if (version_compare(PHP_VERSION, '7.0.0', '<')) {
Expand All @@ -35,12 +34,6 @@
die("HTTP 503 服务不可用!\r\n暂未安装此程序!\r\n将在五秒内跳转到安装程序!");
} else {
require('config.php');
if ($programVersion_API !== programVersion) {
http_response_code(503);
header('Content-Type: text/plain; charset=utf-8');
header('Refresh: 5;url=install.php');
die("HTTP 503 服务不可用!\r\n配置文件版本异常!\r\n将在五秒内跳转到安装程序!\r\n若重新安装无法解决问题,请重新 Clone 项目并配置!");
}
}
}
require('functions.php');
Expand Down Expand Up @@ -306,7 +299,9 @@
$DBPassword = (!empty($_POST["DBPassword"])) ? $_POST["DBPassword"] : "";
$dbname = (!empty($_POST["dbname"])) ? $_POST["dbname"] : "";
$dbtable = (!empty($_POST["dbtable"])) ? $_POST["dbtable"] : "";

if (!function_exists('mysqli_connect')) {
EchoInfo(-2, array("msg" => "<br/>您未安装或未启用 mysqli 扩展,<br/>不能使用数据库功能。<br/>请自行关闭数据库功能。"));
}
$conn = mysqli_connect($servername, $username, $DBPassword);
$GLOBALS['conn'] = $conn;
// Check connection
Expand Down
192 changes: 183 additions & 9 deletions functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
* @link https://space.bilibili.com/88197958
*
*/
$programVersion_Functions = '2.1.4';
if (!defined('init')) { // 直接访问处理程序
header('Content-Type: text/plain; charset=utf-8');
if (!file_exists('config.php')) {
Expand All @@ -22,18 +21,12 @@
die("HTTP 503 服务不可用!\r\n暂未安装此程序!\r\n将在五秒内跳转到安装程序!");
} else {
require('config.php');
if ($programVersion_Functions !== programVersion) {
http_response_code(503);
header('Content-Type: text/plain; charset=utf-8');
header('Refresh: 5;url=install.php');
die("HTTP 503 服务不可用!\r\n配置文件版本异常!\r\n将在五秒内跳转到安装程序!\r\n若重新安装无法解决问题,请重新 Clone 项目并配置!");
}
}
http_response_code(403);
header('Refresh: 3;url=./');
define('init', true);
require('config.php');
die("HTTP 403 禁止访问!\r\n此文件是 PanDownload 网页复刻版 PHP 语言版项目版本 " . programVersion . " 的有关文件\r\n禁止直接访问!");
die("HTTP 403 禁止访问!\r\n此文件是 PanDownload 网页复刻版 PHP 语言版项目的有关文件\r\n禁止直接访问!");
}

// main
Expand Down Expand Up @@ -179,7 +172,13 @@ function getSign(string $surl, $randsk)
echo '<pre>【限制版】getSign():no match</pre>';
var_dump(htmlspecialchars($result));
}
dl_error("根目录yunData获取失败", "页面未正常加载,或者百度已经升级页面,无法正常获取根目录yunData数据。");
if (strstr($result, "Redirecting to") != false) {
// 账号BDUSS或STOKEN失效
dl_error("普通账号失效", "可能由于配置问题或者是修改账号密码导致的普通账号失效,请重新获取BDUSS和STOKEN并设置到config.php中。");
exit;
} else {
dl_error("根目录yunData获取失败", "页面未正常加载,或者百度已经升级页面,无法正常获取根目录yunData数据。");
}
return 1;
}
}
Expand Down Expand Up @@ -463,3 +462,178 @@ function GetIPTablePage(string $page)
}
return $AllRow;
}
/**
* 获取数据库中的BDUSS数据
*
* @return array 返回BDUSS和对应id id=-1表示本地解析
*/
function GetDBBDUSS()
{
global $dbtable, $conn;
// 获取SVIP BDUSS
switch (SVIPSwitchMod) {
case 1:
//模式1:用到废为止
// 时间倒序输出第一项未被限速账号
$sql = "SELECT `id`,`svip_bduss`,`svip_stoken` FROM `" . $dbtable . "_svip` WHERE `state`!=-1 ORDER BY `is_using` DESC,`id` DESC LIMIT 0,1";
$Result = mysqli_query($conn, $sql);
if ($Result = mysqli_fetch_assoc($Result)) {
$SVIP_BDUSS = $Result["svip_bduss"];
$SVIP_STOKEN = $Result["svip_stoken"];
$id = $Result["id"];
} else {
// 数据库中所有SVIP账号已经用完,启用本地SVIP账号
$SVIP_BDUSS = SVIP_BDUSS;
$SVIP_STOKEN = SVIP_STOKEN;
$id = "-1";
}
break;
case 2:
//模式2:轮番上
// 时间顺序输出第一项未被限速账号
$sql = "SELECT `id`,`svip_bduss`,`svip_stoken` FROM `" . $dbtable . "_svip` WHERE `state`!=-1 ORDER BY `is_using` ASC,`id` DESC LIMIT 0,1";

$Result = mysqli_query($conn, $sql);
if ($Result = mysqli_fetch_assoc($Result)) {
$SVIP_BDUSS = $Result["svip_bduss"];
$SVIP_STOKEN = $Result["svip_stoken"];
$id = $Result["id"];
//不论解析成功与否,将当前账号更新时间,下一次使用另一账号
// 开始处理
// 这里最新的时间表示可用账号,按顺序排序
$is_using = date("Y-m-d H:i:s");
$sql = "UPDATE `" . $dbtable . "_svip` SET `is_using`= '$is_using' WHERE `id`=$id";
$mysql_query = mysqli_query($conn, $sql);
if ($mysql_query == false) {
// 失败 但可继续解析
dl_error("数据库错误", "请联系站长修复无法自动切换账号问题!");
}
} else {
// 数据库中所有SVIP账号已经用完,启用本地SVIP账号
$SVIP_BDUSS = SVIP_BDUSS;
$SVIP_STOKEN = SVIP_STOKEN;
$id = "-1";
}
break;
case 3:
//模式3:手动切换,不管限速
// 时间倒序输出第一项账号,不管限速
$sql = "SELECT `id`,`svip_bduss`,`svip_stoken` FROM `" . $dbtable . "_svip` ORDER BY `is_using` DESC,`id` DESC LIMIT 0,1";
$Result = mysqli_query($conn, $sql);
if ($Result = mysqli_fetch_assoc($Result)) {
$SVIP_BDUSS = $Result["svip_bduss"];
$SVIP_STOKEN = $Result["svip_stoken"];
$id = $Result["id"];
} else {
// 数据库中所有SVIP账号已经用完,启用本地SVIP账号
$SVIP_BDUSS = SVIP_BDUSS;
$SVIP_STOKEN = SVIP_STOKEN;
$id = "-1";
}
break;
case 0:
//模式0:使用本地解析
default:
$SVIP_BDUSS = SVIP_BDUSS;
$SVIP_STOKEN = SVIP_STOKEN;
$id = "-1";
break;
}
return [$SVIP_BDUSS, $id, $SVIP_STOKEN];
}
/**
* 用于获取账号状态
*
* @return array [errno,会员状态,用户名,登录状态,会员剩余时间]
*/
function AccountStatus(string $BDUSS, string $STOKEN)
{
$Url = "https://pan.baidu.com/api/gettemplatevariable?channel=chunlei&web=1&app_id=250528&clienttype=0";
$Header = [
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.514.1919.810 Safari/537.36",
"Cookie: BDUSS=$BDUSS;STOKEN=$STOKEN;"
];
$Data = "fields=[%22username%22,%22loginstate%22,%22is_vip%22,%22is_svip%22,%22is_evip%22]";
$Result = post($Url, $Data, $Header);
$Result = json_decode($Result, true);
if (DEBUG) {
echo '<pre>账号状态:';
var_dump($Result);
echo '</pre>';
}
if ($Result["errno"] == 0) {
// 正常
$Username = $Result["result"]["username"];
$LoginStatus = $Result["result"]["loginstate"];
if ($Result["result"]["is_vip"] == 1) {
$SVIP = 1; //会员账号
} elseif ($Result["result"]["is_svip"] == 1 or $Result["result"]["is_evip"] == 1) {
$SVIP = 2; //超级会员账号
} else {
$SVIP = 0; //普通账号
return array(0, $SVIP, $Username, $LoginStatus, 0);
}

$Url = "https://pan.baidu.com/rest/2.0/membership/user?channel=chunlei&web=1&app_id=250528&clienttype=0";
$Header = [
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.514.1919.810 Safari/537.36",
"Cookie: BDUSS=$BDUSS;STOKEN=$STOKEN;"
];
$Data = "method=query";
$Result = post($Url, $Data, $Header);
$Result = json_decode($Result, true);
if (DEBUG) {
echo '<pre>会员状态:';
var_dump($Result);
echo '</pre>';
}
if (isset($Result["reminder"]["svip"])) {
//存在会员信息
$LeftSeconds = $Result["reminder"]["svip"]["leftseconds"];
return array(0, $SVIP, $Username, $LoginStatus, $LeftSeconds);
}
} elseif ($Result["errno"] == -6) {
// 账号失效
return array(-6);
} else {
//未知错误
return array($Result["errno"]);
}
}
/**
* 时间差计算
*
* @param Timestamp $time
* @return String Time Elapsed
* @author Shelley Shyan
* @copyright http://phparch.cn (Professional PHP Architecture)
*/
function time2Units(int $time)
{
$year = floor($time / 60 / 60 / 24 / 365);
$time -= $year * 60 * 60 * 24 * 365;
$month = floor($time / 60 / 60 / 24 / 30);
$time -= $month * 60 * 60 * 24 * 30;
$day = floor($time / 60 / 60 / 24);
$time -= $day * 60 * 60 * 24;
$hour = floor($time / 60 / 60);
$time -= $hour * 60 * 60;
$minute = floor($time / 60);
$time -= $minute * 60;
$second = $time;
$elapse = '';

$unitArr = array(
'' => 'year', '个月' => 'month', '' => 'day',
'小时' => 'hour', '分钟' => 'minute', '' => 'second'
);

foreach ($unitArr as $cn => $u) {
if ($$u > 0) {
$elapse = $$u . $cn;
break;
}
}

return $elapse;
}
Loading

0 comments on commit ac79402

Please sign in to comment.