python破解百度网盘提取码_Python 一键获取百度网盘提取码

20190608140532178033.gif

该 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()

运行效果如下图所示:

20190608140532686842.png

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()

运行效果如下图所示:

20190608140533025722.png

总结

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

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

相关参考

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

assertpythonraise_使用assertRaise测试异常消息

我试图在一个条件引发自定义异常消息的函数内断言异常.功能:if not Cart.objects.filter(membermember).count():raise CartDoesNotExist("Cart Does Not Exist for Member: %s ( %id )." % (member.email,member.id))现在,我能够成功地产生获得加注声明所…

vs12新建ajax,VS2012下WebService 的创建,部署和使用

WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成.第一次选择WebService,是为了替代数据库远程连接.我们都知道当SQL允许远程时,则要打开某一端口.但这一点在我们已经部署好的服务器上,却是不被允许的,于是就选择…

pythonsql注入_python使用mysql,sql注入问题

python使用mysql importpymysql connpymysql.connect( host 127.0.0.1, #连接地址 port 3306, #端口 user root, #用户名 password , #密码 database db, #库名称 charset utf8 #编码格式 utf8,不是utf-8 ) cursor conn.cursor(pymsql.cursors.DictCursor) #产生一个游标,…

h5优秀控件_H5前端学习的js插件大全,基本包含了大部分的前端最前沿的js插件和库。...

布局SuperEmbed.js - 是一个Javascript库,可检测出网页上的内嵌视频并使他们能够变成响应式元素。demoScrollReveal - ScrollReveal插件使用户能够无比轻松地创建桌面和移动浏览器的网页滚动动画。demoBricks.js - 是一款超快的用于固定宽度元素的“砖石”布局生成器…

js 控制鼠标_JS逆向 | 面向小白之eval混淆

所有文章首发在我的微信公众号“逆向新手”,更多逆向系列请关注公众号,谢谢!声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢&#xff0…

mac mysql密码错误_解决mac 下mysql安装后root用户登录密码错误问题

使用的mac OS 10.11 安装mysql后访问root/root用户失败,网上找了一些解决办法,下面记录下解决方法方便以后自己查询概述(看懂下面就不用看了):停服务:sudo /usr/local/mysql/support-files/mysql.server stop安全模式…

python获取软件窗口句柄_Python获取浏览器窗口句柄过程解析

句柄(handle)是C程序设计中经常提及的一个术语。它并不是一种具体的、固定不变的数据类型或实体,而是代表了程序设计中的一个广义的概念。句柄一般是指获取另一个对象的方法——一个广义的指针,它的具体形式可能是一个整数、一个对…

mysql 副本 同步_副本机制与副本同步

1.管理其他副本的节点称为Follower。每当Leader将新数据写入本地存储d的副本时,也会将数据更改写入日志之中。每个Follower会从Leader那里获取修改日志,并相应地更新数据到的本地副本之中,这样,所有的在Follower上副本的修改顺序会…

mongodb 输出数组字段_MongoDb文档操作、索引操作

学习主题:MongoDb学习目标:掌握mongodb文档的更新掌握mongodb文档的删除掌握mongodb文档的查找掌握mongodb文档的条件操作符掌握mongodb中的索引操作Mongodb的更新方式Update()函数更新Save()函数更新Mongodb的update更新?Update用于更新已存…

表情符号mysql utf8mb4_mysql utf8mb4与emoji表情

一 什么是Emojiemoji就是表情符号;词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)表情符号现已普遍应用于手机短信和网络聊天软件。emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情。手机上如何使用emoji&…

html自适应_web前端入门到实战:HTML 文档流,设置元素浮动,导致父元素高度无法自适应的解决方法...

元素浮动定义float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。如果浮动非替换元素,则要指定…

idea 远程调试_我的天!你竟然不会用IDEA远程调试Tomcat...

# 准备工作明确的远程服务器的IP地址,某些我是:192.168.92.128关掉服务器防火墙:service iptables stop# 本地远程服务器配置添加远程服务器,如下图复制远程服务器自动生成的JVM参数,等下有用,如下图&#…

mysql异步查询 java_基于 mysql 异步驱动的非阻塞 Mybatis

虽然 spring5 也推出了 WebFlux 这一套异步技术栈,这种极大提升吞吐的玩法在 node 里玩的风生水起,但 java 世界里异步依旧不是主流,Vertx 倒是做了不少对异步的支持,但是其对于数据访问层的封装依旧还是挺精简的,传统…

跨域获取后台数据undefined_同源策略amp;JSONP跨域

同源策略&JSONP跨域同源策略 对于同源的定义,MDN给出了这样的解释:如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源。如何确定两个页面是否同源,只要比较两个页面…

python 除数不能为零的报错有哪些_【社区精选40】Python错误处理及代码调试方法(文末赠书中奖名单)...

本文整理自爱数据学院中的问答更多精彩问答,进入下方社区网站查看http://www.lovedata.cn/invitation社区精选话题 第40期Python错误处理及代码调试方法一次写完代码程序并能够正常运行的概率很小很小,总会有各种各样的错误bug需要处理。有的报错简单&a…

利用python批量查询企业信息_python实现批量获取指定文件夹下的所有文件的厂商信息...

本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法。分享给大家供大家参考。具体如下:功能代码如下:import os, string, shutil,reimport pefileimport codecs, sysimport wximport struct#输出中打印Unicode字符#sys.stdout co…

mac mysql prefpane_【MySQL数据库开发之一】Mac下配置安装数据库-MySQL

本站文章均为那么从今天开始陆续会更新数据库和Hibernate框架的博文,也是Himi学习的历程记录,希望大家能共同讨论和研究;OK,本篇简单介绍安装吧,首先到MySQL官方网站:如上图:点击DOWNLOAD &…

系统新模块增加需要哪些步骤_想要吸引人流,儿童乐园需要增加哪些新设备呢...

儿童乐园是现今最火爆的一个投资项目,因为它的主要消费群体是孩子,而现在的家长们对孩子们的宠爱,基本都会答应让孩子们去儿童乐园里面玩耍。但是儿童乐园的投资经营者也会遇见一些小问题,例如儿童乐园添加设备要怎么选择呢&#…

php mysql 图像_php-向/从MySQL数据库插入/查看图像

我在DB中插入图像时遇到问题.该表具有以下结构:> id-> INT(3)->自动增量>名称-> VARCHAR(30)> extension-> VARCHAR(10)[可能太短]> img-> MEDIUMBLOB插入图像的PHP代码为:if($_FILES[file][error]0){$result is_uploaded_f…

照片打印预览正常打印空白_小米发布口袋照片打印机,可无墨打印3寸背胶照片...

9月11日消息,小米推出一款小米口袋照片打印机。与之前的小米米家照片打印机相比,这款新品更加小巧便携,体积接近充电宝大小,净重仅181g,便于随身携带。小米口袋照片打印机采用ZINK无墨技术打印,即使用嵌入纸…