引入:


皮皮虾,是一个主打轻幽默神评论的社区。我们暂且先不论他的前世今生,单凭现在的状况,在我看来,确实比某音更深得我心。
当我刷的视频太多时,我已有把视频保存下来的想法,虽然良心的官方给我们提供了保存的方式,但是下载的视频都被加上了水印和片尾,这可不是我想要的,鉴于身边同为皮友的发小问我能不能写一个程序,下载没有水印的视频,我这才想起以前学 Fiddler 抓包时,小小的研究过这是怎么回事,于是,这才有了这段代码。

这里的所有链接我都给和谐了,因为我不和谐就要和谐我的咩~
不过!这也挡不住大家 ” 求学 “ 的热情吧! /滑稽


该解析规则已失效,仅供学习使用,新版地址:Python爬虫:皮皮虾短视频无水印下载(新版)


分析及代码:

鉴于皮皮虾是手机端的app,而写出的程序可以任何人都能使用,所以入口就肯定不能放到软件上,除了直接抓包获取视频链接,还能怎么样呢?

我们随便选取一个视频点击分享后发现,我们可以直接复制视频的链接,说不定,我们可以从这里下手:

随机选取了一个链接: https://*****/s/JRjEVyT/


拿到链接在电脑上打开后,发现,链接变成了一个含有多个参数的长链接:

https://*****/item/6838962244894595336?app_id=1319&app=super&timestamp=1592363939&carrier_region=cn&region=cn&language=zh&utm_source=weixin

通过查看浏览器抓包我们可以获取到此次的请求信息,然后开始写出代码的前期准备:

鉴于需要 多次请求不同的链接, 所以将请求代码写成函数,方便使用。

import random
import os
import requestsproxies = ['HTTP://182.46.113.88:9999', 'HTTP://175.42.122.197:9999', 'HTTP://118.212.106.160:9999','HTTP://175.43.32.33:9999', 'HTTP://163.204.247.122:9999', 'HTTP://115.218.0.69:9000','HTTP://115.221.246.189:9999', 'HTTP://182.34.35.2:9999', 'HTTP://182.92.113.148:8118']
proxy = {'HTTP': random.choice(proxies)}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/81.0.4044.138 Safari/537.36 Edg/81.0.416.72 '
}path = './Spider/'
if os.path.exists(path):pass
else:os.mkdir(path)def request(url):try:r = requests.get(url, proxies=proxy, headers=headers)r.raise_for_status()r.encoding = 'utf-8'return rexcept:print("链接错误,请求失败!")

我们发现在某一次请求的链接中含有与刚请求的链接相同的字段,查看预览发现返回的是 json 格式的文件。在该文件里一阵寻找,发现了一个关键的信息:origin_video_download
(这就暗示的很明显了吧,这个字段里面肯定就是用户上传的原视频了啊。)


在两个链接中随便选一个打开:

是我们想要的没错了。偶不,是我们想要的视频没错了!

既然已经分析到了我们所需要的地步,那么就开始码最主要的代码:
根据两次请求的链接来获取,生成第二次的链接。

def video_info(url):video_num = str(request(url).url).split('/')[-1].split('?')[0]URL = 'https://****/bds/webapi/item/detail/?item_id=' + video_num + '&source=share'r1 = request(URL)video_name = r1.json()['data']['item']['content']video_url = r1.json()['data']['item']['origin_video_download']['url_list'][1]['url']video = request(video_url).contentwith open(path + str(video_name) + '.mp4', 'wb') as f:f.write(video)

既然你选择来看这篇文章,那对于 json 数据的操作,该不用我多说了吧!!

由于我选择用每个视频的配文来作为视频的保存名字,所以对于某些没有配文的视频,保存时是没有名字的,所以我有加了两行代码,用产生的随机数来作为视频的保存名字:

***略****if video_name=='':video_name=int(random.random()*2*1000)
***略***

最后写上主函数调用:

if __name__ == '__main__':share_url = input('请输入分享链接:')video_info(share_url)print('下载完成!')

源码及运行结果:

import random
import os
import requestsproxies = ['HTTP://182.46.113.88:9999', 'HTTP://175.42.122.197:9999', 'HTTP://118.212.106.160:9999','HTTP://175.43.32.33:9999', 'HTTP://163.204.247.122:9999', 'HTTP://115.218.0.69:9000','HTTP://115.221.246.189:9999', 'HTTP://182.34.35.2:9999', 'HTTP://182.92.113.148:8118']
proxy = {'HTTP': random.choice(proxies)}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/81.0.4044.138 Safari/537.36 Edg/81.0.416.72 '
}path = './Spider/'
if os.path.exists(path):pass
else:os.mkdir(path)def request(url):try:r = requests.get(url, proxies=proxy, headers=headers)r.raise_for_status()r.encoding = 'utf-8'return rexcept:print("链接错误,请求失败!")def video_info(url):video_num = str(request(url).url).split('/')[-1].split('?')[0]URL = 'https://*****/bds/webapi/item/detail/?item_id=' + video_num + '&source=share'r1 = request(URL)video_name = r1.json()['data']['item']['content']if video_name=='':video_name=int(random.random()*2*1000)video_url = r1.json()['data']['item']['origin_video_download']['url_list'][1]['url']video = request(video_url).contentwith open(path + str(video_name) + '.mp4', 'wb') as f:f.write(video)if __name__ == '__main__':share_url = input('请输入分享链接:')video_info(share_url)print('下载完成!')
运行结果:请输入分享链接:https://*****/s/JRjEVyT/
下载完成!进程已结束,退出代码 0

Python爬虫:皮皮虾短视频无水印下载相关推荐

  1. 安卓网apk安装器_短视频无水印下载,apk提取,带壳截图 iOS Android极客必备的三款软件,你全都用上了吗?...

    短视频无水印下载,apk提取,带壳截图 iOS Android 极客必备的三款软件,你全都用上了吗? 7SIZE丨插图内容来自于网络侵权删 给大家介绍 Android,iOS 上三款在生活中必备的三款 ...

  2. 某音短视频无水印下载APP的Android端实现

    近日对于某音的短视频下载有个需求,借鉴网上大神的相关经验,写了个简单的无水印下载视频的APP. 抖音视频无水印下载的Android端APP实现 操作步骤 1. 点击抖音视频的分享按钮,在下面的菜单栏中 ...

  3. java开发抖音短视频无水印下载工具

    思路分析 首先在抖音APP段选择你喜欢的视频进行分享,一般分享链接都是这样的:"http://v.douyin.com/111113/",这并不是真的下载地址,在浏览器中输入上述地 ...

  4. 抖音短视频无水印下载的方法

    说有一个朋友,暂且叫他小明,问我能不能帮他下载一个抖音短视频,要求去除水印,里面有他非常喜欢的小姐姐. 话说,我这么善良的一个人,怎么会拒绝他的请求,主要是我也想看看这个小姐姐怎么样. 一顿操作猛如虎 ...

  5. Android初学 抖音短视频无水印下载APP的实现

    实现效果: 在抖音复制分享链接 粘贴分享链接到App, 点击解析 点击 去下载 进入浏览器下载 获取无水印视频链接 首先我们使用浏览器打开分享的链接 8.97 teO:/ 一起玩水吧 在这炽热的夏天% ...

  6. 【福利】Python抖音小视频无水印下载工具助手exe

    本渣渣的一个老哥要的抖音小视频无水印下载,我觉得他是一个LSP,因为抖音上的小姐姐实在是太多,太好看了! 可是他就是不发好看的小姐姐抖音号给我... 难道我的肾没有他强?! 不可能啊,本渣渣经常吃韭菜 ...

  7. 抖音视频无水印下载工具 绿色版

    抖音视频无水印下载是一款用于抖音视频解析出来并下载的下载工具.可以轻松下载自己喜欢的视频,而且无水印,需要的快来下载使用吧! 抖音视频无水印下载 [工具特点] 支持解析任何抖音视频 解析出来的视频没有 ...

  8. 火山平台 php_火山小视频无水印下载php源码

    关于火山小视频无水印原谅很简单,下面就分享关于去除火山无水印去除源码. 调用方法:echo huoshan('https://reflow.huoshan.com/hotsoon/s/yOCZCagw ...

  9. python视频解析库_python某音短视频无水印解析

    [Python] 纯文本查看 复制代码import requests import re import tkinter as tk #用户名: (.*?) #简介: (.*?) #封面:cover: ...

  10. xpanx原理解析 | 只要 3 秒!抖音视频无水印下载

    哈啰,这里是「xpanx」,又来给大家分享「奇技淫巧」啦! 获取更多的黑科技知识,可以点击上方的专辑目录「xpanx」查看. 抖音无水印下载方法 今天给大家分享一个不需要借助任何工具或者网站,即可下载 ...

最新文章

  1. Windows Phone 7中配置gmail, 使用outlook 同步邮件,日历,联系人等
  2. 继往开来:Google I/O 21 Android Gradle Plugin 更新总结
  3. Java实现Runnable接口创建多线程
  4. phpcms文件结构
  5. jparepository查询所有_JPA – JpaRepository 中使用的查询方法
  6. [语]××语录@××--第1篇
  7. linux日志删除1天前,Linux自动删除n天前日志
  8. 【FLink】Flink 1.12 TaskManager 内存结构
  9. 计算机网络—GBN协议(后退N帧协议)
  10. 破圈了!完美日记凭什么让周迅成为全球品牌代言人
  11. 研究生新人如何高效读论文-方法积累笔记
  12. 你不知道的接近开关与PLC连接时如何判断用PNP还是NPN
  13. 如何找回回收站清空的重要文件
  14. 计算机系统结构专业学什么,江苏大学专业介绍:计算机系统结构
  15. 动态令牌主要功能是什么???
  16. This is an MDK version 4 project ,require Device support for Cortex-M based devices.
  17. 提取数据_基于众包的可视化图表数据提取
  18. 聂再清:人工智能是为了帮助人,而不是代替人
  19. 腾讯云颜松柏:详解DevOps成熟度模型与效能度量
  20. Windows命令行 - 命令shell(cmd.exe) - 命令提示符,打开方式

热门文章

  1. 使用ipad通过usb线连接电脑
  2. Pandas计算同比环比指标的3种方法
  3. Python 数独求解
  4. NOVELL NetWare 下的数据恢复
  5. linux时钟(时间)同步
  6. php dwg转pdf文件怎么打开,CAD转PDF怎么转为黑白的PDF文件
  7. 华为USG防火墙NAT
  8. 解决:Intellij idea导入MyEclipse Web项目时,服务器搭建运行正常,但无法访问WebRoot下的页面
  9. Chrome打不开baidu的解决方法
  10. TMS320F280049C 学习笔记4 Led_ex1_blinky 初始化函数及系统时钟