2021-3-20 17:16:48 添加了signs的获取、修复了sign获取的正则表达式、注释掉了最后一次get,直接通过返回的json合成下载直链
源码原地址:https://www.ilt.me/dmfx/130.html
今日使用的时候发现大佬写的解析源码已经过时了,不再适用于现在(2021)的蓝奏云了,故花了点时间将代码进行了修复更新,本次修改并未得到原作者同意
直接上代码
import requests
import re
import json
from bs4 import BeautifulSoup
def lanzou_download(url):
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36 Edg/79.0.309.51',
'origin': 'https://www.lanzous.com'
}
# 请求下载页面
strhtml = requests.get(url, headers=headers)
soup = BeautifulSoup(strhtml.text,"html.parser")
# 拿到iframe地址
data = soup.select('body > div.filter > div.n_box > div.n_file > iframe.n_downlink')
src = str(data[0]['src'])
dowhtml = requests.get('https://www.lanzous.com'+src, headers=headers)
soup = BeautifulSoup(dowhtml.text,"html.parser")
# 拿到ajax请求脚本
data = soup.select('body > script')
# 正则取签名
data_str = str(data[0])
regex_signs = re.compile('var ajaxdata = \'(.*?)\';',re.M|re.I)
regex_sign = re.compile('signs\':ajaxdata,\'sign\':\'(.*?)\',\'ves\':1,\'websign',re.M|re.I)
signs = re.findall(regex_signs, data_str)
sign = re.findall(regex_sign, data_str)
#print(sign[0])
# 请求ajax获取跳转地址
dowjsonStr = requests.post('https://www.lanzous.com/ajaxm.php',data={'action':'downprocess','sign':sign[0],'signs':signs[0],'ves':'1'},headers={
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36 Edg/79.0.309.51',
'referer': 'https://www.lanzous.com' + src,
})
dowjson = json.loads(dowjsonStr.text)
#print(str(dowjsonStr.text))
downUrl = dowjson['dom'] + '/file/' + dowjson['url']
# 请求跳转地址获取真实地址
#oragin = requests.get(dowjson['dom'] + '/file/' + dowjson['url'],allow_redirects=False ,headers={
# 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
# 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
#})
# 拿到302跳转地址
#downUrl = oragin.next.url
return downUrl
def main():
print(lanzou_download('https://wws.lanzous.com/iZOmTn00zud'))
if __name__ == '__main__':
main()
若转载请注明作者和出处谢谢,源码得之不易,改之亦难,望君珍视。