教你用Python轻松批量获取快手无水印视频以及详细信息!(侵权删)

42 篇文章 3 订阅
10 篇文章 5 订阅

一、前言

前段时间,博主写过关于抖音视频、评论以及视频信息批量获取的文章,然后私下里有小伙伴让我也出个快手的批量获取视频、评论的博文,因为他遇到了快手抓不到包、连接不上网络的问题,既然是我的粉丝,那我就专门出一期文章来实现批量获取快手视频资源!

在这里插入图片描述

二、分析过程

不用说大家也知道,首先就是对app抓包啦,我们这边用的是fiddler,其他抓包工具也同理,我们用模拟器打开快手进行抓包。
刚打开快手,fiddler就抓到了好多包,发现大部分是没用的,因此我们对这些包进行过滤,过滤后,我们需要的数据就自动高亮出来了,如下图:

在这里插入图片描述

于是我们点进去,看具体内容:

在这里插入图片描述

哎?这个caption好像有点熟悉,我们去app内看一下,这不就是发文内容吗,因此我们确定,这个就是我们需要的数据包。

在这里插入图片描述

三、编写代码

我们可以先看fiddler的请求头,发现这是一个post请求,因此肯定需要表单,所以我们把表单和请求头都复制下来,对这个网页发送请求,看能不能获得我们需要的数据。

在这里插入图片描述





form_data = {
    "type":"7",
    "page":"3",
    "coldStart":"false",
    "count":"20",
    "pv":"false",
    "id":"2",
    "refreshTimes":"1",
    "pcursor":"1",
    "source":"1",
    "needInterestTag":"false",
    "seid":"d57f9e32-6048-47c1-84fc-499867676580",
    "volume":"0.73",
    "backRefresh":"false",
    "pageCount":"2",
    "passThrough":"0",
    "__NS_sig3":"2191804609c6921c192cb9bc1fe19fde843d027092",
    "client_key":"3c2cd3f3",
    "os":"android",
    "sig":"0c502574139ca86c24e07f7f9cc4df9f",
    "adChannel":""

}



response = requests.post(url,headers=headers,data=form_data,verify=False)
res = response.json()
print(res)




运行结果部分截图如下:

在这里插入图片描述

下面我们继续寻找我们需要的数据,今天我们主要就是获取以下几个字段的数据:

在这里插入图片描述

继续往下写代码:




lists = data['feeds']
for list in lists:
    movie_url = list['main_mv_urls'][0]['url']
    content  = list['caption']
    comment_num = list['comment_count']
    like_num = list['like_count']
    dict = {

        '发文内容':content,
        '评论数量':comment_num,
        '喜欢数量':like_num,
        '无水印视频网址': movie_url
    }
    print(dict)


打印结果图如下:

在这里插入图片描述

点进无水印视频网址,看能不能获取我们要的视频:

在这里插入图片描述

OK,大功告成!

在这里插入图片描述

四、结语

快手视频以及其评论、详细信息的获取都不难,这边我就不具体操作获取它的评论了,原理都和上面讲的一样,感兴趣的朋友可以自行去尝试一下,如果有问题,可以在评论区评论或者私信我,我都会很热情的解答你们的问题,毕竟我可是个非常乐于助人的博主呢,哈哈哈。

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
抖音无水印视频的下载可以通过调用API接口实现。可以使用Python或Java编写相关代码。 Python实现: ``` import requests import json url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?itemId=' item_id = '视频ID' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } response = requests.get(url=url+item_id, headers=headers) data = json.loads(response.text) video_url = data['item_list'][0]['video']['play_addr']['url_list'][0] video = requests.get(video_url, headers=headers) with open('video.mp4', 'wb') as f: f.write(video.content) ``` Java实现: ``` import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class DownloadVideo { public static void main(String[] args) throws IOException { String url = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?itemId="; String item_id = "视频ID"; String user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"; String video_url = ""; URL real_url = new URL(url+item_id); HttpURLConnection connection = (HttpURLConnection) real_url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", user_agent); connection.setRequestProperty("Accept", "*/*"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Connection", "keep-alive"); connection.connect(); InputStream in = connection.getInputStream(); byte[] buf = new byte[1024]; int len = 0; StringBuffer stringBuffer = new StringBuffer(); while((len=in.read(buf))!=-1){ stringBuffer.append(new String(buf,0,len)); } in.close(); JSONObject jsonObject = JSON.parseObject(stringBuffer.toString()); video_url = jsonObject.getJSONObject("item_list").getJSONObject("video").getJSONArray("play_addr").getJSONObject(0).getString("url_list").get(0); real_url = new URL(video_url); connection = (HttpURLConnection) real_url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", user_agent); connection.setRequestProperty("Accept", "*/*"); connection.setRequestProperty("Content-Type", "application/octet-stream"); connection.setRequestProperty("Connection", "keep-alive"); connection.connect(); in = connection.getInputStream(); FileOutputStream out = new FileOutputStream("video.mp4"); while((len=in.read(buf))!=-1){ out.write(buf,0,len); } in.close(); out.close(); } } ``` 注意:以上代码仅供学习参考,请勿用于非法用途。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值