最近秒传插件好像被百度网盘三番四次地限制了,现在用的秒传插件需要如封面图一样自行获取授权码才能正常使用一段时间了。虽然有相对来说更简单的方法可以获得,但是我反正啥也不懂,就干脆试着自己写一段能用来自动获取授权码的代码吧!于是抱着这种想法我就打开了我将近一个月没打开过的vsc了。

我想的是python我接触得最多,那就用python一边学一边写吧~

然后因为学完写完之后发现挺简单的,没什么好感慨说明的,所以代码就放下面了:

依赖:

Requests==2.31.0
selenium==4.15.2
源代码:
import json
import time
import requests
import urllib.parse
from selenium import webdriver
from selenium.webdriver.common.by import By

# 输入必要信息
client_id = "" # 此处填入您应用的AppKey
device_id = "" # 此处填入您应用的AppID
client_secret = "" # 此处填入您应用的SecretKey
""" 
以上必填信息请根据 https://pan.baidu.com/union/doc/ol0rsap9s 在 https://pan.baidu.com/union/console/applist 中获取
"""

# 获取授权页面
code_url = "http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=" + urllib.parse.quote(client_id) + "&redirect_uri=oob&scope=basic,netdisk&qrcode=1"
code_response = requests.request("GET", code_url)


driver = webdriver.Chrome()
# driver.set_page_load_timeout(20) # 设置页面加载超时时间

try:
    driver.get(code_response.url)
except Exception:
    pass

element = driver.find_element( By.XPATH , "/html/body/section/div/div/div[1]/h3" )
text = element.text

# 寻找授权码code
while text != "找到了!":
    try:
        driver.find_element( By.XPATH , "//*[@id='d_clip_button']" ).text
        text = "找到了!"
    except:
        time.sleep(1)
 
element = driver.find_element( By.XPATH , "//*[@id='Verifier']" )
code = element.get_attribute("value")

# 获取Access_token
url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=" + code + "&client_id=" + client_id + "&client_secret=" + client_secret + "&redirect_uri=oob"

payload = {}
headers = {
  'User-Agent': 'pan.baidu.com'
}

response = requests.request("GET", url, headers=headers, data = payload)

s = json.loads(response.text.encode('utf8')) # 解析获取的json

print ("您的授权码为:",s["access_token"]) # 提取access_token的值

input()

Github上也上传了,如果有帮助到你的换希望能点个小星星~>>>Github

使用方法就是:安装依赖后按注释输入必要信息后运行即可。那接下来我就把更简单获取授权码的方式也写一下吧。


http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=【您的AppKey】&redirect_uri=oob&scope=basic,netdisk

将您的Appkey填入链接后浏览器打开,会跳转到另一个URL,跳转到的URL中将包括一个Access_token的值,那个值就是您所需要的授权码。


作者:Dax,如若转载,请注明出处:《尝试写一段自动获取百度网盘授权码的代码》