无限存储空间的蓝奏网盘你还不用?使用Python,直接获取直链!Python使用Requests和BS4实现蓝奏云直链解析与下载

您所在的位置:网站首页 蓝奏云密码一直提交中 无限存储空间的蓝奏网盘你还不用?使用Python,直接获取直链!Python使用Requests和BS4实现蓝奏云直链解析与下载

无限存储空间的蓝奏网盘你还不用?使用Python,直接获取直链!Python使用Requests和BS4实现蓝奏云直链解析与下载

2024-07-13 16:33| 来源: 网络整理| 查看: 265

在很多时候,都会使用到程序自主更新功能,那么今天我们就用蓝奏云实现一个Python程序的自主更新(当然,只是完成请求蓝奏云的直链地址)

文章目录 重要通知重要通知1重要通知2思路解析代码实现参考文档重要提示

重要通知

更改两处代码在这里插入图片描述

重要通知1

由于蓝奏云更改了系统的配置代码,导致此代码失效 在这里插入图片描述 在这里插入图片描述

请更改代码

重要通知2

由于蓝奏云的网站名称更改,请将本程序中的域名更改为LANZOUI.com

请更改代码

思路解析

我们可以首先申请一个蓝奏云的账号,在这里就不过多地阐述,在这里了,我们可以使用我这里的一个网址来进行解析 cookies地址 我们可以看到这一个主页面 我们要获取的就是这个红色bottom的链接地址 我们可以打开开发者模式,便可以看到这个iframe标签 在这里插入图片描述 它把我们指引到另外一个链接地址 在这里插入图片描述 这里便是这一个红色bottom的真实位置 当我们惦记这个主要界面时,只能看到这个超时的显示,无法看见其他的内容,我们便可以知道它是通过后台加载或接口来的到数据的 在这里插入图片描述 我们可以继续往下查找,最终在ajaxm.php中找到了地址 在这里插入图片描述 请求这个地址(已失效),我们便可以看到下载成功 在这里插入图片描述 那么我们看一下是怎么请求获取数据的,然后我们要模拟这个请求再次获取数据 在这里插入图片描述 我们可以看出它是用表单提交的,action和sign和vis就是表单的参数,我们只要把这个表单发送到这个php网站,就可以获取蓝奏云直链了

代码实现 #coding=utf-8 from bs4 import BeautifulSoup import requests import re import time import json def GetHeaders(url): headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36', 'referer': url,#蓝奏云分享文件链接地址 'Accept-Language': 'zh-CN,zh;q=0.9', } return headers def GetRealAddress(url): # 获取分享页面html文件 res = session.get(url,headers=GetHeaders(url)) # 引入BeautifulSoup库对html进行处理,获取iframe中的出现的js文件 soup = BeautifulSoup(res.text,'html.parser') url2 = 'https://www.lanzous.com/'+soup.find('iframe')['src'] #print(url2) res2 = session.get(url2,headers=GetHeaders(url2)) # 正则提取请求三个参数 a = re.findall(r'var a = \'([\w]+?)\';',res2.text) params = re.findall(r'var [\w]{6} = \'([\w]+?)\';',res2.text) #print(params) # 请求下载地址 url3 = 'https://www.lanzous.com/ajaxm.php' data = { 'action':'downprocess', 'sign':params[1], 'ves':1, } res3 = session.post(url3,headers=GetHeaders(url2),data=data) res3 = json.loads(res3.content) # 请求最终重定向地址 try: url4 = res3['dom']+'/file/'+res3['url'] except: while True: res3 = session.post(url3,headers=GetHeaders(url2),data=data) res3 = json.loads(res3.content) a = res3.get("inf") #print(res3) if a == "已超时,请刷新": print("正在为您尝试第二次爬取,请稍后...") else: break else: pass print(url4) headers2 = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0', 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', } res4 = session.head(url4, headers=headers2) file_address = res4.headers['Location'] return file_address if __name__ == '__main__': session = requests.session() address = GetRealAddress("https://fightmountain.lanzous.com/ixtAme2m0kd") r = requests.get(address) with open("cookies.txt",'wb') as f: f.write(r.content)

在这里呢,我们主要使用session实现会话保持,然后使用post方法来获取数据,最后请求数据,获取最终的直链

参考文档

Python爬取蓝奏云直链(获取真实文件地址)

重要提示

如需转载,请标明博客原地址



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3