创建百度网盘应用,得到开发者信息

前往https://pan.baidu.com/union/console/applist?from=header,创建一个个人应用,然后得到AppID、Appkey、Secretkey以及Signkey等信息。

获取access_token

根据http://developer.baidu.com/wiki/index.php?title=docs/oauth/application的说明,获取access_token。

  • 首先使用浏览器前往http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&scope=netdisk&display=page,其中YOUR_CLIENT_ID为Appkey,如果不知道怎么设置YOUR_REGISTERED_REDIRECT_URI,可以设置为oob,然后得到CODE,尤其需要注意的是,scope决定你可以拿到的access_token的权限,例如basic、netdisk等等。(详细的参数设置说明,参见:http://developer.baidu.com/wiki/index.php?title=docs/oauth/authorization
  • 使用浏览器前往https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=YOUR_REGISTERED_REDIRECT_URI,得到access_token。

根据api进行开发

参考https://pan.baidu.com/union/document/basic,根据api说明,可以实现百度网盘的开发。

示例开发,将百度网盘当做网站的文件存储服务器

  • 通过浏览器插件,得到文件的fsid

  • 由于fsid是固定的,那么在前端指定文件(例如图片、视频)等的fsid,通过后端的api,将fsid转换为dlink,则可以实现将百度网盘用作文件存储工具(不足之处,该api的使用频率限制比较严格)。

查看示例播放器:游西湖。更新:貌似当做文件下载可以,但是作为网站上的播放源出现403,后面再去看看是什么问题。

额外参考链接:flask中生成ssl证书的方式,https://blog.miguelgrinberg.com/post/running-your-flask-application-over-https

4月29日更新

目前已经探明,请求dlink资源时,如果带了referrer,服务器会返回403。这个时候将referer设置为no-referrer值,可以解决防盗链问题。类似a、area、img、iframe、link等标签,可以设置referrerpolicy属性解决此问题。不过这些设置不是在所有浏览器都会生效。目前来看,Chrome是支持的,但是最新的Edge似乎并不支持。

<meta name="referrer" content="no-referrer">