该 GIF 图来自于官网,文末有给出链接。

描述

依托于百度网盘巨大的的云存储空间,绝大数人会习惯性的将一些资料什么的存储到上面,但是有的私密链接需要提取码,但是让每个想下载私密资源的人记住每一个提取码显然是不现实的。这个时候,云盘万能钥匙 诞生了,我们通过安装相应的浏览器插件就可以自动获获取相应链接的提取码。我在 Github 上看了一下,有 Web JS 版的, python 版的貌似还没有找到,所以我参照了JS 版本和官网的请求接口写了两种方式的获取脚本。

实现

下述两种方式的具体实现就不做代码解释了,思路都是一样,通过请求接口,拿到数据,然后返回即可。

V1

"""

Author:hippieZhou

Date:20190608

Description: Get BaiDuYun shared link's Code

"""

import argparse

import re

import requests

import json

import time

VERSION = "VERSION 1.0.0"

def checkUrl(url: str) -> str:

m1 = re.match(

"https?:\/\/pan\.baidu\.com\/s\/1([a-zA-Z0-9_\-]{5,22})", url)

m2 = re.match(

"https?:\/\/pan\.baidu\.com\/share\/init\?surl=([a-zA-Z0-9_\-]{5,22})", url)

if not m1 and not m2:

print("参数不合法")

return False

else:

return True

def getKey(url: str) -> bool:

if checkUrl(url):

try:

req = requests.get(f"https://node.pnote.net/public/pan?url={url}")

code = req.status_code

if code == 200:

data = dict(json.loads(req.text))

status = data.get("status", False)

if status:

return data.get("access_code", "未能查询到该链接的提取码,可能原因是:该链接不需要提取码或已过期")

else:

return data.get("messages", "为能查询到提取码")

elif code == 404:

return "不存在该链接的记录"

except Exception as e:

return f"请求服务器失败,错误代码:{code}"

def get_parser():

parser = argparse.ArgumentParser()

parser.description = "百度网盘提取码一键获取器"

parser.add_argument('urls', metavar="urls", type=str, nargs="*",

help='设置要获取提取码的链接(多个链接请用空格分隔)')

parser.add_argument('-v', '--version', action='store_true',

help='版本号')

return parser

def command_line_runner():

parser = get_parser()

args = vars(parser.parse_args())

if args['version']:

print(VERSION)

return

s_time = time.time()

if len(args['urls']) > 1:

for item in args["urls"][1:]:

print(f"{item}:\r\n\t{getKey(item)}")

e_time = time.time()

print(f"\n\n操作完毕,总耗时:{e_time-s_time} 秒")

def main():

command_line_runner()

if __name__ == "__main__":

main()

运行效果如下图所示:

v2

"""

Author:hippieZhou

Date:20190608

Description: Get BaiDuYun shared link's Code

"""

import argparse

import time

import re

import requests

from datetime import datetime

import json

accessKey = "4fxNbkKKJX2pAm3b8AEu2zT5d2MbqGbD"

clientVersion = "web-client"

def getPid(url: str) -> str:

matches = re.match(

"https?:\/\/pan\.baidu\.com\/s\/1([a-zA-Z0-9_\-]{5,22})", url)

return matches[1] if matches else None

def getUuid(pid: str) -> str:

return f"BDY-{pid}"

def getKey(url: str) -> str:

pid = getPid(url)

uuid = getUuid(pid)

headers = {

"type": "GET",

"data": '',

"dataType": "json"

}

url = f"http://ypsuperkey.meek.com.cn/api/items/{uuid}?access_key={accessKey}&client_version={clientVersion}&{datetime.utcnow()}"

try:

req = requests.get(url, headers=headers)

code = req.status_code

if code == 200:

data = json.loads(req.text)

accessCode = data.get("access_code", None)

return "没找到提取密码,o(╥﹏╥)o" if (accessCode == "undefined" or accessCode == None or accessCode == "") else accessCode

elif code == 400:

return " 服务器不理解请求的语法"

elif code == 404:

return "不存在该链接的记录"

else:

return f"请求服务器失败,错误代码:{code}"

except Exception as e:

return e

def get_parser():

parser = argparse.ArgumentParser()

parser.description = "百度网盘提取码一键获取器"

parser.add_argument('urls', metavar="urls", type=str, nargs="*",

help='设置要获取提取码的链接(多个链接请用空格分隔)')

parser.add_argument('-v', '--version', action='store_true',

help='版本号')

return parser

def command_line_runner():

parser = get_parser()

args = vars(parser.parse_args())

if args['version']:

print(VERSION)

return

s_time = time.time()

if len(args['urls']) > 1:

for item in args["urls"][1:]:

print(f"{item}:\r\n\t{getKey(item)}")

e_time = time.time()

print(f"\n\n操作完毕,总耗时:{e_time-s_time} 秒")

def main():

command_line_runner()

if __name__ == "__main__":

main()

运行效果如下图所示:

总结

v1 版本和 v2 版本是通过请求不同的接口方式来实现的, v2 接口的数据要相对更准确一些。具体可查阅具体的代码实现。

如果你觉得上述代码不错的话,欢迎访问对应的仓库地址: baidupankey 进行 star 、fork 和 follow。

相关参考

原文:https://www.cnblogs.com/hippieZhou/p/10990237.html

python破解百度网盘提取码_Python 一键获取百度网盘提取码相关推荐

  1. python网盘提取码怎么用_Python 一键获取百度网盘提取码

    ''' 遇到python不懂的问题,可以加Python学习交流群:1004391443一起学习交流,群文件还有零基础入门的学习资料 ''' VERSION = "VERSION 1.0.0& ...

  2. python 百度网盘库 根据文件名获取网盘链接_GitHub - tychxn/baidu-wangpan-parse: 获取百度网盘分享文件的下载地址...

    百度网盘分享文件下载链接解析 功能 获取百度网盘分享文件的真实下载地址 将获取到的下载链接复制到IDM.FDM等下载器即可实现高速下载,避免使用百度网盘客户端 运行环境 Python3 (兼容Pyth ...

  3. python黄金走势预测_python实时获取和讯网纸黄金价格信息

    python实时获取和讯网纸黄金价格信息 #!/usr/bin/env python #encoding:utf-8 '''getHexunGold.py 获取和讯网最新的黄金价格信息(人民币/克)' ...

  4. python爬去百度搜索结果_python爬虫获取百度搜索结果的简单示例

    编程之家收集整理的这篇文章主要介绍了python爬虫获取百度搜索结果的简单示例,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. 感兴趣python爬虫获取百度搜索结果的简单示例的小伙伴, ...

  5. 硅谷真假u盘测试软件,真正一键装机,U盘装机“大师”名不虚传

    电脑系统的更替对于电脑的日常应用来说也算不得什么大事,在经历了XP系统的退市之后,win7.win8.1仍在普及,马上win10又出现了.可是电脑难免不会有出现问题的时候.在经历了10多年的电脑使用经 ...

  6. python可视化分析网易云音乐评论_Python数据可视化:网易云音乐歌单

    通过Python对网易云音乐华语歌单数据的获取,对华语歌单数据进行可视化分析. 可视化库不采用pyecharts,来点新东西. 使用matplotlib可视化库,利用这个底层库来进行可视化展示. 推荐 ...

  7. python爬取一张图片并保存_python爬取百度图片并保存到本地

    安装scrapy pip install Scrapy 进入终端,切换到自己项目代码的工作空间下,执行 scrapy startproject baidu_pic_spider 生成如下工程文件: i ...

  8. python 接入百度地图数据包下载_Python爬虫-利用百度地图API接口爬取数据并保存至MySQL数据库...

    首先,我这里有一份相关城市以及该城市的公园数量的txt文件: 分析-02.png 其次,利用百度地图API提供的接口爬取城市公园的相关信息. 所利用的API接口有两个: 1.http://api.ma ...

  9. python调用百度接口实现ocr识别_Python 3调用百度OCR API实现剪贴板文字识别

    本程序调用百度OCR API对剪贴板的图片文字识别,配合CaptureScreen软件,可快速识别文字. #!python3 import urllib.request, urllib.parse i ...

  10. python返回序列中的最小元素_python实现获取序列中最小的几个元素

    本文实例讲述了python实现获取序列中最小的几个元素.分享给大家供大家参考. 具体方法如下: import heapq import random def issorted(data): data ...

最新文章

  1. RabbitMQ 简介和使用
  2. linux和android学习,android学习笔记
  3. android 下拉刷新listview,实现Android下拉刷新的ListView
  4. failed building wheel for termcolor_【零基础学Python】For循环和RANGE()函数
  5. Mac上的硬盘有问题该如何修复?
  6. 2013年3月份计算机二级c语言最新上机题库(搜索关键字版),20133月份计算机二级C语言上机题库(十分强大).doc...
  7. 《计算机网络 PDF》炸了!!!
  8. 基于 SpringBoot + Mybatis 的个人在线音乐平台
  9. 小葵花妈妈课堂开课了:《ThreadLocal 浅析》
  10. html方框打勾字段,HTML+CSS入门 如何设置 checkbox复选框控件的对勾√样式
  11. 如何设置Foxmail收取yahoo.com.cn和yahoo.cn以及yahoo.com等邮箱的方法
  12. android 该文件包与具有同一名称的现有文件包存在冲突
  13. 软件授权License的区别
  14. airpods pro是按压还是触摸_Airpods Pro深度测评,给犹豫不决的你一些参考。
  15. 阿里巴巴java编码规范——日志规约
  16. NetApp SnapCenter 备份管理 ——借助应用程序一致的数据备份管理,简化混合云操作
  17. Qt学习day03 Qt设计师(designer) Qt创造器(qtcreator)
  18. Beyond Compare(文件对比工具)使用技巧
  19. 暴肝!7000 字的前端性能优化总结 | 干货建议收藏
  20. python爬取微博配图

热门文章

  1. 张量分解在无线通信和MIMO雷达中的概述
  2. 华为私密相册计算机找回密码,华为手机隐私空间密码忘了怎么办 华为手机隐私空间密码忘了解决方法...
  3. sun的EJB开发文档
  4. android同花顺布局,同花顺首发 Android平板电脑炒股高清版
  5. 极客大挑战基础部分解题过程
  6. Windows提权实战——————1、IIS6.exe提权实战
  7. mysql 查询替换语句_MYSQL查询字符替换sql语句
  8. Jenkins的定时构建与轮询SCM
  9. 亚信科技java笔试题答案_亚信科技java面试题及答案.doc
  10. JAVA/JSP小区物业管理系统