写一个百度网盘网站免cookies的函数
时间: 2024-03-15 07:43:47 浏览: 17
由于百度网盘需要登录后才能访问,所以需要使用用户名和密码进行登录。一般的做法是使用Cookies或者Session来模拟登录,但是我们也可以使用百度网盘提供的API接口来实现无需Cookies的访问。下面是一个使用API接口实现免Cookies访问百度网盘的Python函数示例:
```python
import requests
import json
def baidu_pan_login(username, password):
# 获取token
url1 = 'https://passport.baidu.com/v2/api/?getapi&tpl=netdisk&subpro=netdisk_web&apiver=v3&class=login&logintype=basicLogin&callback=bd__cbs__tff7g1'
resp1 = requests.get(url1)
token = resp1.text.split('"token" : "')[1].split('"')[0]
# 登录
url2 = 'https://passport.baidu.com/v2/api/?login'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': 'https://pan.baidu.com/disk/home'
}
data = {
'username': username,
'password': password,
'token': token,
'tpl': 'netdisk',
'subpro': 'netdisk_web',
'apiver': 'v3',
'tt': int(token[:13]),
'codestring': '',
'safeflg': '0',
'u': 'https://pan.baidu.com/disk/home',
'isPhone': '',
'detect': '1',
'gid': '',
'quick_user': '0',
'logintype': 'basicLogin',
'logLoginType': 'pc_loginBasic',
'idc': '',
'loginmerge': 'true',
'foreignusername': '',
'traceid': '',
'callback': 'parent.bd__pcbs__raqa24'
}
resp2 = requests.post(url2, headers=headers, data=data)
resp_json = json.loads(resp2.text)
# 获取bdstoken
url3 = 'https://pan.baidu.com/disk/home'
headers = {
'Referer': 'https://pan.baidu.com/disk/home'
}
cookies = resp2.cookies.get_dict()
resp3 = requests.get(url3, headers=headers, cookies=cookies)
bdstoken = resp3.text.split('bdstoken":"')[1].split('"')[0]
return bdstoken
```
该函数的思路是通过API接口先获取登录所需的token,然后使用用户名、密码和token向API接口发起登录请求,并从返回结果中获取bdstoken,最终返回bdstoken用于后续操作。注意,该函数只适用于Python 3.x版本。