该GIF图来自于官网,文末有给出链接。
依托于百度网盘巨大的的云存储空间,绝大数人会习惯性的将一些资料什么的存储到上面,但是有的私密链接需要提取码,但是让每个想下载私密资源的人记住每一个提取码显然是不现实的。这个时候,云盘万能钥匙诞生了,我们通过安装相应的浏览器插件就可以自动获获取相应链接的提取码。我在Github上看了一下,有Web JS版的,python版的貌似还没有找的到,所以我参照了JS版本和官网的请求接口写了两种方式的获取脚本。
下述两种方式的具体实现就不做代码解释了,思路都是一样,通过请求接口,拿到数据,然后返回即可。
v1
”“” 作者:hippieZhou 日期:20190608 描述:获取BaiDuYun共享链接的代码 ”“” 进口argparse 进口再保险 进口的要求 进口json 导入的时间 VERSION="版本1.0.0 " def checkUrl (url: str)→str: m1=re.match ( “https # 63;:潘\/\/\ .baidu \ com \/s \/1 (a-zA-Z0-9_ \[-]{5} 22日)”url) m2=re.match ( “https # 63;:潘\/\/\ .baidu \ com \/\/init \ & # 63;分享surl=((a-zA-Z0-9_ \]{5} 22日)”url) 如果不是m1和m2: 打印(“参数不合法”) 返回假 其他: 还真 def getKey (url: str)→bool: 如果checkUrl (url): 试一试: 点播=requests.get (f“https://node.pnote.net/public/pan& # 63; url={url} ") 代码=req.status_code 如果代码==200: data=https://www.yisu.com/zixun/dict (json.loads (req.text)) 状态=数据。(“地位”,假) 如果状态: 返回数据。get (" access_code”、“未能查询到该链接的提取码,可能原因是:该链接不需要提取码或已过期”) 其他: 返回数据。get(“信息”、“为能查询到提取码”) elif代码==404: 返回“不存在该链接的记录” 除了例外e: 返回f”请求服务器失败,错误代码:(代码)” def get_parser (): 解析器=argparse.ArgumentParser () parser.description="百度网盘提取码一键获取器” 解析器。add_argument (“url”, metavar=皍rl”,类型=str,娜戈=?”, 帮助='设置要获取提取码的链接(多个链接请用空格分隔)”) 解析器。add_argument (“v”,“——版本”,action=皊tore_true”, 帮助='版本号”) 返回解析器 def command_line_runner (): 解析器=get_parser () args=var (parser.parse_args ()) 如果参数(“版本”): 打印(版本) 返回 s_time=time.time () 如果len (args (“url”))比;1: 项的参数[" url "] [1:]: 打印(f”{项}:\ r \ n \ t {getKey(项)}”) e_time=time.time () 打印(f“\ n \ n操作完毕,总耗时:{e_time-s_time}秒”) def main (): command_line_runner () if __name__==癬_main__”: main () >之前运行效果如下图所示:
v2
”“” 作者:hippieZhou 日期:20190608 描述:获取BaiDuYun共享链接的代码 ”“” 进口argparse 导入的时间 进口再保险 进口的要求 从datetime进口datetime 进口json accessKey=" 4 fxnbkkkjx2pam3b8aeu2zt5d2mbqgbd " clientVersion="直接" def getPid (url: str)→str: 匹配=re.match ( “https # 63;:潘\/\/\ .baidu \ com \/s \/1 (a-zA-Z0-9_ \[-]{5} 22日)”url) 返回匹配[1]如果匹配其他没有 def getUuid (pid: str)→str: 返回f“BDY - {pid}” def getKey (url: str)→str: pid=getPid (url) uuid=getUuid (pid) 头={ “类型”:“获得”, “数据”:”, “数据类型”:“json” } url=f“http://ypsuperkey.meek.com.cn/api/items/{uuid} & # 63; access_key={accessKey}, client_version={clientVersion}, {datetime.utcnow ()}” 试一试: 要求=请求。get (url,标题=标题) 代码=req.status_code 如果代码==200: data=https://www.yisu.com/zixun/json.loads (req.text) accessCode=数据。(“access_code”,没有一个) 返回“没找到提取密码,o (╥﹏╥) o”如果(accessCode==岸ㄒ濉被騛ccessCode==没有或accessCode==" ") accessCode elif代码==400: 返回“服务器不理解请求的语法” elif代码==404: 返回“不存在该链接的记录” 其他: 返回f”请求服务器失败,错误代码:(代码)” 除了例外e: 返回e def get_parser (): 解析器=argparse.ArgumentParser () parser.description="百度网盘提取码一键获取器” 解析器。add_argument (“url”, metavar=皍rl”,类型=str,娜戈=?”, 帮助='设置要获取提取码的链接(多个链接请用空格分隔)”) 解析器。add_argument (“v”,“——版本”,action=皊tore_true”, 帮助='版本号”) 返回解析器 def command_line_runner (): 解析器=get_parser () args=var (parser.parse_args ()) 如果参数(“版本”): 打印(版本) 返回 s_time=time.time () 如果len (args (“url”))比;1: 项的参数[" url "] [1:]: 打印(f”{项}:\ r \ n \ t {getKey(项)}”) e_time=time.time () 打印(f“\ n \ n操作完毕,总耗时:{e_time-s_time}秒”) def main (): command_line_runner () if __name__==癬_main__”: main ()Python一键获取百度网盘提取码的方法