提取文件直链 & HTTP head请求 使用小记

本文讲述了如何通过浏览器获取下载链接并使用Fiddler抓包找到文件直链,以避免反复下载大文件。作者用Python的requests库编写代码,最初遇到请求超时问题,后来通过使用HEAD请求只获取响应头解决了问题,实现了高效分享文件链接。
摘要由CSDN通过智能技术生成

前段时间,由于工作需要,一咬牙便充值了 XX网的会员,朋友得知后便一发不可自拔,不断发送链接让我帮忙下载,只好先将文件下载到本地,再发送过去,但一直这么搞着实麻烦,由于文件较大,下载和发送都需要时间,于是便寻思,能不能直接获取到文件的直链呢?如果可以的话,直接发送链接,让他自己去下载就好了!

First

鼠标右边复制链接

在这里插入图片描述

得到的是一个如下格式的链接:

https://www.xxxx.com/plus/download.php?open=2&id=1&uhash=a9a8c1cd9c908a44fd2f508e

在我这里通过浏览器访问之后,直接就开始下载文件了,发送朋友试试

在这里插入图片描述

果然没这么简单

Second

使用 Fiddler 抓包看看,先看一下响应体

在这里插入图片描述

神马东西都没有,再看一下响应头

在这里插入图片描述

原来经过了一次 302 重定向,而重定向的地址,嘿,这不就是我们一直寻找的文件直链嘛!

复制一下发给朋友,果然成功下载!

Third

但是每次都要抓包来查看地址也太麻烦了吧,于是便使用 python 来简化一下!

得益于 requests 库,很简单的几行代码就可以实现这个功能!

在这里插入图片描述

原以为已经可以和朋友装x了,但是就这么简单的几行代码,却一直没有打印直接结果,直到最后给我来了一个请求超时错误

于是便重新捋了一遍逻辑,

1. 请求右键复制到的下载链接
2. 自动跳转到文件直链
3. 重新发起请求

对额,这里会直接请求文件,但是这个文件足有 240MB,直接请求的话,大概率会请求超时了

这就尴尬了,我只需要链接的响应头,并不想请求它的实际内容

一番查阅资料,终于发现了 HTTP 的 HEAD 请求方式,完美契合我的需求,上一段官方说明:

9.4 HEAD

The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response. The metainformation contained in the HTTP headers in response to a HEAD request SHOULD be identical to the information sent in response to a GET request. This method can be used for obtaining metainformation about the entity implied by the request without transferring the entity-body itself. This method is often used for testing hypertext links for validity, accessibility, and recent modification.

简单修改代码,完美解决问题

res = requests.head(url, headers=headers)
print(res.headers.get('location'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值