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

Commit

Permalink
1.4.2版本更新
Browse files Browse the repository at this point in the history
  • Loading branch information
yuantuo666 authored Aug 29, 2020
1 parent 4210013 commit b391296
Show file tree
Hide file tree
Showing 5 changed files with 294 additions and 184 deletions.
35 changes: 23 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ PanDownload 网页复刻版,PHP 语言版<br/>

因为作者开学了,所以项目将不再频繁更新。

注意!使用 `1.3.6` 版本及以前的站长,请及时更新到最新版本,老版本存在安全问题,可能导致SVIP账号被盗用。<br/>
[演示](https://i.loli.net/2020/08/29/hdjEKGzTZBu6yQI.gif)

## Blacklists
- http://pan-jx.kosr.cn/ (版本1.3.3 作者以3元出售密码)
- http://byu5.cn/baiduwp/

以上网站使用本项目源码,未与作者联系而删除作者信息。
Expand All @@ -31,38 +33,47 @@ PanDownload 网页复刻版,PHP 语言版<br/>
```
define('BDUSS', '');
define('STOKEN', '');
define('SVIP_BDUSS', '');
define('IsCheckPassword', true);
define('Password', '请在这里填写密码啦!ヾ(≧▽≦*)o');
```
- 前两项填入你自己的 SVIP 信息就行,获取 cookie 方法见 [PD官网](https://pandownload.com/faq/cookie.html)
- 第三项是是否需要密码的选项
- 第四项是首页需要输入的密码,但是如果第三项为 `false` 则无效
- 前两项填入`你自己的百度账号信息`*(SVIP也可)*,用于获取下载列表,获取 cookie 方法见 [PD官网](https://pandownload.com/faq/cookie.html)
- 第三项必须填入`SVIP的BDUSS`,用于获取下载链接,获取cookie方法同上。
- 第四项是是否需要密码的选项
- 第五项是首页需要输入的密码,但是如果第三项为 `false` 则无效
- 详细信息可见 `config.php` 的注释

---

例如,你的SVIP的BDUSS是 `123` ,STOKEN是 `456`开启密码并且设置为 `789` ,那么应该将 `config.php` 中设置成以下的代码:
例如,你的BDUSS是 `123` ,STOKEN是 `456`SVIP的BDUSS是 `789` ,开启密码并且设置为 `666` ,那么应该将 `config.php` 中设置成以下的代码:

```
define('BDUSS', '123');
define('STOKEN', '456');
define('SVIP_BDUSS', '789');
define('IsCheckPassword', true);
define('Password', '789');
define('Password', '666');
```

## Thanks
- [baiduwp JavaScript 版](https://github.com/TkzcM/baiduwp "GitHub 项目")
- [PanDownload 网站](https://pandownload.com/ "PanDownload 网站")
- [KinhDown 客户端](https://t.me/kinhdown/ "KinhDown 客户端")
- [PNL 下载方式](https://www.lanzous.com/u/pnl "PNL 下载方式")
- [LC优化版](https://github.com/lc6464 "LC")
- [LC 优化版](https://github.com/lc6464 "LC")

## New Changes
- 当前版本:`1.4.1`
- 更新日期:2020-8-27
- 当前版本:`1.4.2`
- 更新日期:2020-8-29
- 修改内容
- 修改POST内容,让调用接口暂时失效
- 增加直链解析,可以不设置UA下载(不过并不稳定,且只支持50MB以下文件)
- 列表页面新增超时提醒,5min后弹窗提示。
- 修复在线播放功能,在设置UA情况下可以播放50MB以上文件。
- 优化代码,删除打开文件夹每次查询密码是否正确代码。
- 加入运行时间计算,在控制台中可以查看。
- 将SVIP的BDUSS分离开,便于后期维护。
- 隐藏旧链接显示的sharelinkXXX-XXX文件夹(此文件夹无法正常打开)。
- 增加调试模式,便于反馈问题。
- 增加自动从分享文本中提取验证密码功能。

## About
#### JavaScript版作者
Expand All @@ -82,4 +93,4 @@ B站UP主影视后期系统教学(uid250610800)分享了这个网站,分享的

#### 吾爱破解小工具
在8.25晚上吾爱破解上kemiok作者发布了制作的[度盘IDM高速下载](https://www.52pojie.cn/thread-1254032-1-1.html)小工具。<br/>
关于接口引用,因为论坛的规定,不能留下其他的网站网址,但联系作者得知他也很想去感谢那些站长。<br/>
关于接口引用,因为论坛的规定,不能留下其他的网站网址,但联系作者得知他也很想去感谢那些站长。<br/>
23 changes: 15 additions & 8 deletions config.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

/**
* PanDownload 网页复刻版,PHP 语言版配置文件
*
Expand All @@ -12,21 +13,27 @@
* 请不要使用弱密码!否则后果自负!
* 若只在局域网开放,则可根据个人喜好开启或关闭密码。
*
* @version 1.4.1
* @version 1.4.2
*
* @author Yuan_Tuo <[email protected]>
* @link https://imwcr.cn/
* @link https://space.bilibili.com/88197958
*
*/
define('programVersion', '1.4.1');
if (!defined('init')){ // 直接访问处理程序
http_response_code(403); header('Content-Type: text/plain; charset=utf-8'); header('Refresh: 3;url=./');
define('programVersion', '1.4.2');
if (!defined('init')) { // 直接访问处理程序
http_response_code(403);
header('Content-Type: text/plain; charset=utf-8');
header('Refresh: 3;url=./');
die("HTTP 403 禁止访问!\r\n此文件是 PanDownload 网页复刻版 PHP 语言版项目版本 " . programVersion . " 的配置文件!\r\n禁止直接访问!");
}

define('BDUSS', ''); // 你的 SVIP BDUSS
define('STOKEN', ''); // 你的 SVIP STOKEN
define('IsCheckPassword', true); // 设为 true 则要求密码为变量 Password 的值,否则提示密码错误;设为 false 则不需要密码。
define('BDUSS', ''); // 你的 BDUSS
define('STOKEN', ''); // 你的 STOKEN
define('SVIP_BDUSS', ''); // 你的 SVIP BDUSS
define('IsCheckPassword', false); // 设为 true 则要求密码为变量 Password 的值,否则提示密码错误;设为 false 则不需要密码。
define('Password', '请在这里填写密码啦!ヾ(≧▽≦*)o'); // 在下载器首页需要输入的密码,如果将 IsCheckPassWord 设为 false 则无论设置什么都会失效。
define('Footer',''); // 页脚统计代码放置处
define('Footer', ''); // 页脚统计代码放置处

define('APP_ID', '250528'); // 推荐应用ID:498065、309847、778750(油猴脚本默认)、250528(官方)、265486、266719;
define('DEBUG', false);//WARNING! 请勿随意打开此模式,可能造成你的信息泄露。 打开此模式前请先修改密码。
101 changes: 75 additions & 26 deletions functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*
* 请勿随意修改此文件!如需更改相关配置请到 config.php !
*
* @version 1.4.1
* @version 1.4.2
*
* @author Yuan_Tuo <[email protected]>
* @link https://imwcr.cn/
Expand Down Expand Up @@ -111,20 +111,18 @@ function formatSize(float $size, int $times = 0)
default:
$unit = '单位未知';
}
return sprintf('%.3f', $size) . $unit;
return sprintf('%.2f', $size) . $unit;
}
}
function CheckPassword()
{ // 校验密码
if (IsCheckPassword) {
if (!isset($_POST["Password"])) {
if (isset($_SESSION["Password"])) {
if ($_SESSION["Password"] === Password) {
echo (isset($_POST["dir"]) || isset($_SESSION["ShowAlert"])) ? ''
: '<script>sweetAlert("重要提示","请勿将密码告诉他人!此项目仅供测试使用!","info");</script>';
$_SESSION['ShowAlert'] = true;
return;
}
if (isset($_SESSION["Password"]) and $_SESSION["Password"] === Password) {
echo (isset($_POST["dir"]) || isset($_SESSION["ShowAlert"])) ? ''
: '<script>sweetAlert("重要提示","请勿将密码告诉他人!此项目仅供测试使用!","info");</script>';
$_SESSION['ShowAlert'] = true;
return;
}
} else {
if ($_POST["Password"] === Password) {
Expand All @@ -147,6 +145,11 @@ function verifyPwd(string $surl_1, string $pwd)
$data = "pwd=$pwd";
$header = array("User-Agent: netdisk", "Referer: https://pan.baidu.com/disk/home");
$result = json_decode(post($url, $data, $header), true); // -12 提取码错误
if (DEBUG) {
echo '<pre>verifyPwd():';
var_dump($result);
echo '</pre>';
}
if ($result["errno"] === 0) return $result["randsk"];
else return 1;
}
Expand All @@ -158,10 +161,22 @@ function getSign(string $surl, $randsk)
"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 . ";BDCLND=" . $randsk . ";"
);
// if (preg_match('/yunData.setData\((\{.*?\})\);/', get($url, $header), $matches)) return json_decode($matches[1], true);
//如果不修改这里,则要修改配置文件ini
if (preg_match('/yunData.setData\((\{.*?\})\);/', get($url, $header), $matches)) return json_decode($matches[1], true, 512, JSON_BIGINT_AS_STRING);
else return 1;
$result = get($url, $header);
if (preg_match('/yunData.setData\((\{.*?\})\);/', $result, $matches)) {
$result = json_decode($matches[1], true, 512, JSON_BIGINT_AS_STRING);
if (DEBUG) {
echo '<pre>getSign():';
var_dump($result);
echo '</pre>';
}
return $result;
} else {
if (DEBUG) {
echo '<pre>getSign():no match</pre>';
}
return 1;
}
}
function FileList($sign)
{
Expand All @@ -176,32 +191,42 @@ function GetDir(string $dir, string $randsk, string $shareid, string $uk)
"Cookie: BDUSS=" . BDUSS . ";STOKEN=" . STOKEN . ";BDCLND=" . $randsk . ";",
"Referer: https://pan.baidu.com/disk/home"
);
return json_decode(get($url, $header), true);
$result = json_decode(get($url, $header), true);
if (DEBUG) {
echo '<pre>GetDir():';
var_dump($result);
echo '</pre>';
}
return $result;
}
function FileInfo(string $filename, float $size, string $md5, int $server_ctime)
{ // 输出 HTML 字符串
return '<p class="card-text">文件名:<b>' . $filename . '</b></p><p class="card-text">文件大小:<b>' . formatSize($size) . '</b></p><p class="card-text">文件MD5:<b>' . $md5
. '</b></p><p class="card-text">上传时间:<b>' . date("Y年m月d日 H:i:s", $server_ctime) . '</b></p>';
}
function getDlink(string $fs_id, string $timestamp, string $sign, string $randsk, string $share_id, string $uk, string $bdstoken,bool $isnoualink)
function getDlink(string $fs_id, string $timestamp, string $sign, string $randsk, string $share_id, string $uk, string $bdstoken, bool $isnoualink, int $app_id = 250528)
{ // 获取下载链接
$app_id = 250528;
//推荐应用ID:498065、309847、778750、250528(官方)、265486、266719;

if($isnoualink){
$url = 'https://pan.baidu.com/api/sharedownload?app_id=' . $app_id . '&channel=chunlei&clienttype=0&sign=' . $sign . '&timestamp=' . $timestamp . '&web=1&bdstoken='.$bdstoken;//获取直链 50MB以内
}else{
$url = 'https://pan.baidu.com/api/sharedownload?app_id=' . $app_id . '&channel=chunlei&clienttype=12&sign=' . $sign . '&timestamp=' . $timestamp . '&web=1';//获取下载链接

if ($isnoualink) {
$url = 'https://pan.baidu.com/api/sharedownload?app_id=' . $app_id . '&channel=chunlei&clienttype=0&sign=' . $sign . '&timestamp=' . $timestamp . '&web=1&bdstoken=' . $bdstoken; //获取直链 50MB以内
} else {
$url = 'https://pan.baidu.com/api/sharedownload?app_id=' . $app_id . '&channel=chunlei&clienttype=12&sign=' . $sign . '&timestamp=' . $timestamp . '&web=1'; //获取下载链接
}

$data = "encrypt=0" . "&extra=" . urlencode('{"sekey":"' . urldecode($randsk) . '"}') . "&fid_list=[$fs_id]" . "&primaryid=$share_id" . "&uk=$uk" . "&product=share&type=nolimit";
$header = array(
"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 . ";BDCLND=" . $randsk . ";",
"Referer: https://pan.baidu.com/disk/home"
);
return json_decode(post($url, $data, $header), true);

$result = json_decode(post($url, $data, $header), true);
if (DEBUG) {
echo '<pre>getDlink():';
var_dump($result);
echo '</pre>';
}
return $result;

//没有 referer 就 112 ,然后没有 sekey 参数就 118 -20出现验证码
// 参数 类型 描述
// list json array 文件信息列表
Expand All @@ -218,9 +243,33 @@ function getDlink(string $fs_id, string $timestamp, string $sign, string $randsk
// list[0]["width"] int 图片宽度
// list[0]["date_taken"] int 图片拍摄时间
}
function dl_error(string $title, string $content)
function dl_error(string $title, string $content, bool $jumptip = false)
{
echo '<div class="row justify-content-center"><div class="col-md-7 col-sm-8 col-11"><div class="alert alert-danger" role="alert">
<h5 class="alert-heading">' . $title . '</h5><hr /><p class="card-text">' . $content . '</p></div></div></div>';
<h5 class="alert-heading">' . $title . '</h5><hr /><p class="card-text">' . $content;
if ($jumptip) {
echo '<br>请打开调试模式,并将错误信息复制提交issue到<a href="https://github.com/yuantuo666/baiduwp-php">github项目</a>。';
}
echo '</p></div></div></div>';
return 0;
}
function get_BDCLND($surl)
{
$header = head("https://pan.baidu.com/s/" . $surl, []);
$bdclnd = preg_match('/BDCLND=(.+?);/', $header, $matches);
if ($bdclnd) {
if (DEBUG) {
echo '<pre>get_BDCLND():';
var_dump($matches[1]);
echo '</pre>';
}
return $matches[1];
} else {
if (DEBUG) {
echo '<pre>get_BDCLND():';
var_dump($header);
echo '</pre>';
}
return '';
}
}
Loading

0 comments on commit b391296

Please sign in to comment.