fix: Aliyun download need header

改用手机token
pull/282/head
qkqpttgf 2021-03-31 15:30:07 +08:00 committed by GitHub
parent 671481c284
commit ca4ec6f497
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 5 deletions

View File

@ -6,7 +6,8 @@ class Aliyundrive {
function __construct($tag) { function __construct($tag) {
$this->disktag = $tag; $this->disktag = $tag;
$this->auth_url = 'https://websv.aliyundrive.com/token/refresh'; //$this->auth_url = 'https://websv.aliyundrive.com/token/refresh';
$this->auth_url = 'https://auth.aliyundrive.com/v2/account/token';
$this->api_url = 'https://api.aliyundrive.com/v2'; $this->api_url = 'https://api.aliyundrive.com/v2';
$this->driveId = getConfig('driveId', $tag); $this->driveId = getConfig('driveId', $tag);
$res = $this->get_access_token(getConfig('refresh_token', $tag)); $res = $this->get_access_token(getConfig('refresh_token', $tag));
@ -121,7 +122,9 @@ class Aliyundrive {
if ($files['type']=='file') { if ($files['type']=='file') {
if (in_array(splitlast($files['name'],'.')[1], $exts['txt'])) { if (in_array(splitlast($files['name'],'.')[1], $exts['txt'])) {
if (!(isset($files['content'])&&$files['content']['stat']==200)) { if (!(isset($files['content'])&&$files['content']['stat']==200)) {
$content1 = curl('GET', $files['download_url']); $header['Referer'] = 'https://www.aliyundrive.com/';
$header['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36';
$content1 = curl('GET', $files['download_url'], '', $header);
$files['content'] = $content1; $files['content'] = $content1;
savecache('path_' . $path, $files, $this->disktag); savecache('path_' . $path, $files, $this->disktag);
} }
@ -130,7 +133,7 @@ class Aliyundrive {
} }
if (!$files) { if (!$files) {
$files['error']['code'] = 'Not Found'; $files['error']['code'] = 'Not Found';
$files['error']['message'] = 'Not Found'; $files['error']['message'] = $path . ' Not Found';
$files['error']['stat'] = 404; $files['error']['stat'] = 404;
} elseif (isset($files['stat'])) { } elseif (isset($files['stat'])) {
$files['error']['stat'] = $files['stat']; $files['error']['stat'] = $files['stat'];
@ -612,7 +615,7 @@ class Aliyundrive {
if (isset($_GET['SelectDrive'])) { if (isset($_GET['SelectDrive'])) {
if ($this->access_token == '') { if ($this->access_token == '') {
if (isset($_POST['refresh_token'])) { if (isset($_POST['refresh_token'])) {
$res = curl('POST', $this->auth_url, json_encode([ 'refresh_token' => $_POST['refresh_token'] ]), ["content-type"=>"application/json; charset=utf-8"]); $res = curl('POST', $this->auth_url, json_encode([ 'refresh_token' => $_POST['refresh_token'], 'grant_type' => 'refresh_token' ]), ["content-type"=>"application/json; charset=utf-8"]);
//return output($res['body']); //return output($res['body']);
if ($res['stat']!=200) { if ($res['stat']!=200) {
return message($res['body'], $res['stat'], $res['stat']); return message($res['body'], $res['stat'], $res['stat']);
@ -645,7 +648,7 @@ class Aliyundrive {
} }
} }
if (!isset($result['default_drive_id'])) { if (!isset($result['default_drive_id'])) {
$res = curl('POST', $this->auth_url, json_encode([ 'refresh_token' => getConfig('refresh_token', $this->disktag) ]), ["content-type"=>"application/json; charset=utf-8"]); $res = curl('POST', $this->auth_url, json_encode([ 'refresh_token' => getConfig('refresh_token', $this->disktag), 'grant_type' => 'refresh_token' ]), ["content-type"=>"application/json; charset=utf-8"]);
//return output($res['body']); //return output($res['body']);
if ($res['stat']!=200) { if ($res['stat']!=200) {
return message($res['body'], $res['stat'], $res['stat']); return message($res['body'], $res['stat'], $res['stat']);
@ -789,6 +792,7 @@ class Aliyundrive {
if (!($this->access_token = getcache('access_token', $this->disktag))) { if (!($this->access_token = getcache('access_token', $this->disktag))) {
$p=0; $p=0;
$tmp1['refresh_token'] = $refresh_token; $tmp1['refresh_token'] = $refresh_token;
$tmp1['grant_type'] = 'refresh_token';
while ($response['stat']==0&&$p<3) { while ($response['stat']==0&&$p<3) {
$response = curl('POST', $this->auth_url, json_encode($tmp1), ["content-type"=>"application/json; charset=utf-8"]); $response = curl('POST', $this->auth_url, json_encode($tmp1), ["content-type"=>"application/json; charset=utf-8"]);
$p++; $p++;