|
情境概述
今日,阿里云盘的第三方服务套餐正式启动,这在众多资源分享群中引发了热议。值得注意的是,不少SVIP用户觉得自己的权益受到削弱,因为开通SVIP主要是为了利用第三方应用观看视频,而现在推出的新套餐规定,如果不购买,就会限制下载速度(单线程至500KB/s,最多6线程),购买后也只有1TB的月流量配额。此外,SVIP用户仅获赠10GB流量,这一举动被不少人视为不尊重。得知此事后,我迅速探索出一个策略,使得拥有SVIP的用户可以不受流量限制地通过第三方应用观看视频。
其实方法并不复杂,SVIP的权益包括了阿里云盘TV版的高清播放功能。据开发群讨论,TV版的应用并不计入第三方流量消耗(因为它本身也算是第三方应用)。因此,我只需捕获TV版的令牌,就能规避速度限制。
程序代码
import time
from io import BytesIO
import requests
from PIL import Image
def main():
response = requests.post('http://api.extscreen.com/aliyundrive/qrcode', data={
'scopes': ','.join(["user:base", "file:all:read", "file:all:write"]),
"width": 500,
"height": 500,
})
data = response.json()['data']
qr_code_url = data['qrCodeUrl']
session_id = data['sid']
# 登录选项:
# 1. 网页登录:打开以下链接
print(f'https://www.aliyundrive.com/o/oauth/authorize?sid={session_id}')
# 2. 阿里云盘App扫码登录
Image.open(BytesIO(requests.get(qr_code_url).content)).show()
while True:
time.sleep(3)
status = requests.get(f'https://openapi.alipan.com/oauth/qrcode/{session_id}/status').json()['status']
if status == 'LoginSuccess':
authorization_code = status_data['authCode']
break
# 获取refresh_token
token_response = requests.post('http://api.extscreen.com/aliyundrive/token', data={
'code': authorization_code,
})
refresh_token = token_response.json()['data']['refresh_token']
# 刷新access_token
token_info = requests.post('http://api.extscreen.com/aliyundrive/token', data={
'refresh_token': refresh_token,
}).json()['data']
access_token = token_info['access_token']
if __name__ == '__main__':
main()
现在,我们可以利用第三方接口获取下载链接。不过,目前该方案可能还不适用于所有客户端,建议联系@小雅以实现兼容。就这样,谁赞同,谁回应呢?
|
|