精华内容
下载资源
问答
  • python视频去水印

    千次阅读 2020-07-27 19:18:39
    Python视频去水印 小程序爬虫接单、app爬虫接单、网页爬虫接单、接口定制、网站开发、小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流,请勿用于非法用途 直接上代码 import ...

    Python视频去水印

    小程序爬虫接单、app爬虫接单、网页爬虫接单、接口定制、网站开发、小程序开发> 点击这里联系我们 <

    微信请扫描下方二维码

    在这里插入图片描述

    代码仅供学习交流,请勿用于非法用途

    直接上代码

    import requests
    import json
    
    '''
        视频去水印demo
        抖音、快手、皮皮虾、秒拍、火山、微视、全民小视频
    '''
    
    
    class watermarkDemo:
        def __init__(self, vUrl):
            # 需要去除水印的url
            self.vUrl = vUrl
            # 接口appkey,用于接口调用凭证
            self.appkey = "0187e6c33df61c2d1dfca7642dfade8d"
            # 接口秘钥,用于查询用户信息
            self.appsecret = "1357455909124526121"
            # 去除水印接口url
            self.waterMarkApi = "http://api.it1002.top:1024/video/watermark"
            # 查询接口到期时间url
            self.queryAllowanceApi = "http://api.it1002.top:1024/user/query"
    
        def getHtml(self, url):
            '''
            get方式请求url
            :param url:
            :return:
            '''
            while True:
                try:
                    resp = requests.get(url, timeout=20)
                    return json.loads(resp.content.decode("utf-8"))
                except Exception as e:
                    continue
    
        def waterMarkParser(self):
            '''
            去除视频水印接口
            :return:
            '''
            url = self.waterMarkApi + "?url=" + self.vUrl + "&appkey=" + self.appkey
            resp = self.getHtml(url)
            if resp['code'] == 1:
                # 视频标题
                name = resp['data']['name']
                # 视频封面图
                img = resp['data']['img']
                # 去除视频水印后的视频url
                vurl = resp['data']['url']
                print("视频标题: " + name)
                print("视频封面图: " + img)
                print("去除视频水印后的视频url: " + vurl)
            else:
                print("提示信息:" + resp['msg'])
    
        def queryAllowance(self):
            '''
            用户余量到期查询接口
            :return:
            '''
            url = self.queryAllowanceApi + "?appkey=" + self.appkey + "&appsecret=" + self.appsecret
            resp = self.getHtml(url)
            if resp['code'] == 1:
                # 用户appkey
                appkey = resp['data'][0]['appkey']
                # 接口平台名称
                app = resp['data'][0]['app']
                # 用户id
                index = resp['data'][0]['index']
                # 用户余量到期时间
                overdueDate = resp['data'][0]['overdue_date']
                print("用户appkey:" + appkey)
                print("接口平台名称:" + app)
                print("用户id:" + str(index))
                print("用户余量到期时间:" + overdueDate)
            else:
                print("提示信息:" + resp['msg'])
    
    
    if __name__ == '__main__':
        # 需要去除水印的视频url
        bUrl = "http://v.douyin.com/6VGVt4/"
        # 实例化对象,传参
        w = watermarkDemo(bUrl)
        # 视频解析
        w.waterMarkParser()
        # 用户余量到期查询
        w.queryAllowance()
    
    
    展开全文
  • 1024): if chunk: mp4.write(chunk) print(real_url) except Exception as e: print(e) pass num += 1 continue if __name__ == '__main__': KSNoMark = KSNoMark() KSNoMark.GetRealUrl() print("快手视频采集完成...
    import requests
    from bs4 import BeautifulSoup
    import re
    import xlrd
    
    class KSNoMark():
        #  忽略警告代码
        requests.packages.urllib3.disable_warnings()
    
        def GetShareUrl(self):
            try:
                # 打开Excel表格
                wb = xlrd.open_workbook('分享链接.xlsx')
                # 获取当前正在显示的sheet
                sheet = wb.sheet_by_name('url')
    
                urls = [(sheet.cell_value(i, 0))for i in range(1, sheet.nrows)]
    
                while '' in urls:
                    urls.remove('')
            except FileNotFoundError:
                print("分享链接.xlsx文件不存在")
            return urls
    
        def GetRealUrl(self):
            headers = {
                'Cookie': 'did=web_e4581e2dbe33aae5eac3d9fdf8b12566;',
                'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
            }
            urls = self.GetShareUrl()
    
            num = 0
    
            for url in urls:
                response = requests.get(url, headers=headers, allow_redirects=False,verify=False)
                share_url = response.headers['Location']
    
                share_response = requests.get(share_url,headers=headers,verify=False).text
    
                # 通过BeautifulSoup提取无水印播放地址字符串
                soup = BeautifulSoup(share_response,'lxml')
                noWaterMarkVideo = soup.find(attrs={'id': 'hide-pagedata'}).attrs['data-pagedata']
                # print(noWaterMarkVideo)
    
                try:
                    # 正则处理字符串获取真实地址
                    pattern = re.compile('\"srcNoMark\":"(.*?)"},',re.S)
                    real_url = re.findall(pattern,noWaterMarkVideo)[0]
    
                    r_video = requests.get(real_url, stream=True)
    
                    with open('./video/' + str(num) + '.mp4', "wb") as mp4:
                        for chunk in r_video.iter_content(chunk_size=1024 * 1024):
                            if chunk:
                                mp4.write(chunk)
    
                    print(real_url)
                except Exception as e:
                    print(e)
                    pass
    
                num += 1
                continue
    
    if __name__ == '__main__':
        KSNoMark = KSNoMark()
        KSNoMark.GetRealUrl()
        print("快手视频采集完成")
    

    分享链接.xlsx跟上篇文章一样,记得新建个video文件夹就行,就不写os判断了 懒 zz

     
    展开全文
  • Python爬虫:多平台短视频去水印下载器

    千次阅读 热门讨论 2020-10-26 20:44:32
    Python爬虫:短视频去水印下载器功能介绍各平台分解抖音 郑重申明:该文章介绍的技术仅供用于学习,不可恶意攻击各大短视频平台。对各大短视频平台服务器造成的任何损失,后果自负。 Python爬虫:多平台短视频...

    Python爬虫:多平台短视频去水印下载器

    本教程描述的爬取方案定档与2020年10月26日

    郑重申明:该文章介绍的技术仅供用于学习,不可恶意攻击各大短视频平台。对各大短视频平台服务器造成的任何损失,后果自负。

    Python爬虫:多平台短视频去水印下载器

    视频被压缩了,原视频高清地址:https://www.bilibili.com/video/BV1cr4y1w7yz/

    转载请标明作者和原文地址~

    作者:西涯侠
    CSDN个人主页:是西涯侠
    文章地址:https://blog.csdn.net/qq_41707308/article/details/109293116

    软件界面:
    在这里插入图片描述

    功能介绍

    本软件采用Python编写,数据爬取使用requests库,并使用PyQt5编写GUI界面,给普通用户添加易用性:

    1. 完美去水印 ,收藏好看的视频再也不用担心水印和烦人的片尾;
    2. 多平台支持 ,支持抖音,快手,微视,皮皮搞笑,涵盖大部分用户常用小视频软件;
    3. GUI界面设计 ,将会带来快捷易上手体验,小白也会用;
    4. 增加了 进度条显示 功能,你可以直观的看到程序的运行过程;
    5. 采取多线程获取进行数据爬取,防止界面假死;

    各平台分解

    抖音

    首先获取分享链接,打开抖音的的一个视频(所有分享视频都可以用同样方法),选择右下角分享按钮,点击复制链接。

    获取链接方式:
    在这里插入图片描述

    复制的链接:
    在这里插入图片描述

    通过查看复制的链接可以发现,链接中不单单有URL地址,还夹杂着一些文字符号所以,第一步就是先提取复制的链接中包含的URL地址和文件名:

        def compile_name_url(url_text):
            # 正则匹配分享链接,获取链接非空字符前的几个字符作为文件名
            video_name = re.match(r'\S*', url_text)
            if video_name:
                video_name = video_name.group()
                print(video_name)
    
            # 正则匹配分享链接,获取链接
            first_url = re.search(r'https://v.douyin.com/.*?/', url_text)
            if first_url:
                first_url = first_url.group()
                print('第一次url==》', first_url)
    
            return first_url, video_name
    

    将链接复制到浏览器中,抓取数据包分析数据:可以发现,需要的目标视频链接就在第三张图中返回的json数据中,只需要获取对应的字段就行了。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    然而事情并没有我们想象的那么简单,抓取了链接后获取到的URL直接复制到浏览器中展示的结果还是有水印的(如下图),仔细观察URL地址,会发现playwm这个字段,而wm就是water mark的缩写,也就是水印。把wm去掉后再次访问,就会得到无水印的地址。大功告成!

    在这里插入图片描述

    代码实现:

        def first_request(first_url):
            headers = {
                'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
                'accept-encoding': 'gzip, deflate, br',
                'accept-language': 'zh-CN,zh;q=0.9',
                'sec-fetch-dest': 'document',
                'sec-fetch-moe': 'navigate',
                'sec-fetch-site': 'none',
                'upgrade-insecure-requests': '1',
                'user-agent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4195.1 Mobile Safari/537.36'
            }
    
            response = requests.get(first_url, headers=headers)
    
            print('第二次url==》', response.url)  # 获取第一次重定向后的url
    
            # 截取第二次请求需要的参数
            content = re.search(r'\d\d*\d', response.url).group()
            params = {"item_ids": content}
    
            return params
    
        def second_request(params):
            response = requests.get('https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/', params=params)
            result = response.json()  # 获得第二次请求的json,并从json中查找第三次请求需要的url
            # print(result)
            second_url = result['item_list'][0]['video']['play_addr']['url_list'][0]
    
            play_url = re.sub(r'playwm', 'play', second_url)
            print('第三次url==》', play_url)
            return play_url
    
    

    快手

    快手平台的就简单一些,同样的获取链接方式:

    获取链接方式:
    在这里插入图片描述

    复制的链接:
    在这里插入图片描述

    提取URL和视频名,同抖音一样的提取方式,这里就不重复展示代码了,直接开始分析链接请求内容:

    在这里插入图片描述
    在这里插入图片描述

    在返回的文本内容中包含有无水印的视频,并且名字也很明显了“srcNoMark”(无水印资源),直接向这个URL发起请求即可。我们就可以欣赏艾北小姐姐唱歌了!!!

    代码实现:

        def second_request(second_url):
            headers = {
                'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
                'Accept-Encoding': 'gzip, deflate, br',
                'Accept-Language': 'zh-CN,zh;q=0.9',
                'Connection': 'keep-alive',
                'Cookie': 'did=web_209e6a4e64064f659be838aca3178ec1; didv=1603355622000',
                'Host': 'c.kuaishou.com',
                'Sec-Fetch-Dest': 'document',
                'Sec-Fetch-Mode': 'navigate',
                'Sec-Fetch-Site': 'none',
                'Upgrade-Insecure-Requests': '1',
                'User-Agent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4195.1 Mobile Safari/537.36'
            }
            response = requests.get(second_url, headers=headers)
    
            content = response.text
            video_url = re.search(r'"srcNoMark":"https://txmov2.a.yximgs.com/.*?\"', content).group()[13:-1]
            print(video_url)
    
            return video_url
    

    微视

    同样的套路,先获取链接:

    获取链接方式:
    在这里插入图片描述

    获取链接方式:
    在这里插入图片描述

    接下来,把链接复制到浏览器,抓包进行分析,可以发现,视频所在的URL地址就保存在一个请求的json文件里面。然后我又发现这是个post请求,并且有参数,这个参数就得在网页中分析

    在这里插入图片描述
    在这里插入图片描述

    先回到第一个请求中来寻找是否有参数的存在,在仔细观察下发现,所需要的的参数feedid其实就是一个链接中的一部分,所以就得更换一下爬取的策略,先获取链接中的feedid,得到参数后再继续下一步操作,才能得到视频。

    在这里插入图片描述

    代码实现:

        def compile_name_url(url_text):
            video_name = re.findall(r'(\w*)', url_text)
            feedid = re.findall(r'feed/(\w*)', url_text)
            if video_name and feedid:
                video_name = video_name[0]
                feedid = feedid[0]
    
            return feedid, video_name
    
        def first_request(feedid):
            headers = {
                'accept': 'application/json',
                'accept-encoding': 'gzip, deflate, br',
                'accept-language': 'zh-CN,zh;q=0.9',
                'content-length': '84',
                'content-type': 'application/json',
                'cookie': 'RK=BuAQ1v+yV3; ptcz=6f7072f84fa03d56ea047b407853df6a5375d719df1031ef066d11b09fb679e4; pgv_pvi=8434466816; pgv_pvid=1643353500; tvfe_boss_uuid=3b10306bf3ae662b; o_cookie=1074566721; pac_uid=1_1074566721; ied_qq=o1074566721; LW_sid=k1Y5n9s3Y0K866h7P246v4k6o8; LW_uid=u1v5i9V3p0L806m7R226s4W7F1; eas_sid=J1p5G9s3A0h8Z6c7l2a6x4E7w7; iip=0; ptui_loginuin=1074566721; person_id_bak=5881015637151283; person_id_wsbeacon=5920911274348544; wsreq_logseq=341295039',
                'origin': 'https://h5.weishi.qq.com',
                'sec-fetch-dest': 'empty',
                'sec-fetch-mode': 'cors',
                'sec-fetch-site': 'same-origin',
                'user-agent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4195.1 Mobile Safari/537.36',
                'x-requested-with': 'XMLHttpRequest'
            }
            rejson = {
                'datalvl': "all",
                'feedid': feedid,
                'recommendtype': '0',
                '_weishi_mapExt': '{}'
            }
            first_url = 'https://h5.weishi.qq.com/webapp/json/weishi/WSH5GetPlayPage'
            response = requests.post(first_url, headers=headers, json=rejson)
            result = response.json()
            video_url = result['data']['feeds'][0]['video_url']
    
            return video_url
    

    皮皮搞笑

    同样步骤,先获取链接。

    获取链接方式:
    在这里插入图片描述

    复制的链接:
    在这里插入图片描述

    观察分享的字符串可以看得出来,这次并没有把视频的名字加进来,所有视频的名字只能从请求的内容里获取了。先把链接放在浏览器中分析一下数据。

    在这里插入图片描述
    在这里插入图片描述

    这次同样发现,这是个post请求,并且同样需要参数,鉴于微视的经验,仔细查看了一下原分享链接,果然不出所料,所要的两个变化的参数就隐藏在链接中。只要获取pid和mid两个参数,然后发起请求就得到视频了。

    在这里插入图片描述

    代码实现:

        def compile_name_url(url_text):
            headers = {
                'Host': 'share.ippzone.com',
                'Origin': 'http://share.ippzone.com',
                'Referer': url_text,
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 Edg/84.0.522.52'
            }
            mid = re.findall(r'mid=(\d*)', url_text)
            pid = re.findall(r'pid=(\d*)', url_text)
            if mid and pid:
                mid = int(mid[0])
                pid = int(pid[0])
    
            parmer = {
                'mid': mid,
                'pid': pid,
                'type': 'post'
            }
            url = 'http://share.ippzone.com/ppapi/share/fetch_content'
            r = requests.post(url, headers=headers, json=parmer)
            result=r.json()
            video_name = result['data']['post']['content'].replace(' ', '')
            video_url = result['data']['post']['videos'][str(result['data']['post']['imgs'][0]['id'])]['url']
            return video_url, video_name
    

    总结

    这是作为一个编程初学者第一次写博客,写的可能不太好不够清晰,纯属技术交流分享,所分享内容均只作学习研究用,不可对各大视频平台服务器进行恶意攻击。

    最后希望大家转载请注明出处~

    作者:西涯侠
    CSDN个人主页:是西涯侠
    文章地址:https://blog.csdn.net/qq_41707308/article/details/109293116

    展开全文
  • Python爬虫:多平台短视频去水印下载器本教程描述的爬取方案定档与2020年10月26日郑重申明:该文章介绍的技术仅供用于学习,不可恶意攻击各大短视频平台。对各大短视频平台服务器造成的任何损失,后果自负。Python...

    Python爬虫:多平台短视频去水印下载器

    本教程描述的爬取方案定档与2020年10月26日

    郑重申明:该文章介绍的技术仅供用于学习,不可恶意攻击各大短视频平台。对各大短视频平台服务器造成的任何损失,后果自负。

    Python爬虫:多平台短视频去水印下载器

    展开全文
  • Easy Video Logo Remover是一款小巧、简单、易用的视频去水印工具,让您通过裁剪视频或移除视频文件中插入的水印和其它元素(如 LOGO、签名或字幕等等之类的)来改善图像质量。有需要的小伙伴欢迎来西西下载体验。软件...
  • 搜索"免费去水印啦"2 复制抖音app视频地址3.复制粘贴到小程序里面 获取无水印地址4 使用手机浏览器或者电脑浏览器下载原理解析实现原理:1 解析网页中的播放地址链接(推荐)# 各大平台一般规则不一样 摸...
  • 去水印源码,不是接口,python, 直接给算法核心,短视频去水印,主流平台去水印 需要请私我或评论区留联系方式 主流短视频平台去水印, 支持去水印平台: 抖音,快手(图片,视频),火山,皮皮虾,微视,西瓜...
  • 抖音里面的视频保存之后,会发现全都带有水印, 怎样才能不带水印呢,今天,它来了~~ 首先在抖音里复制链接,获得如下URL: https://v.douyin.com/JyCk5gy/ 把这个URL复制到浏览器直接访问, 我们发现,URL...
  • # 本博客仅供学习交流使用由于抖音本身的加密经常更换,我选择利用其他去水印平台来做抖音去水印,比如考拉解析,网页地址是http://www.kaolajiexi.com/把抖音视频的链接放进去,点击解析视频,就可以在本地得到去掉...
  • # 电脑UA访问官方api视频分享接口,获取视频播放链接,通过替换 playwm 为 play 后,得到无水印的视频播放连接 url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={}'.format(items_ids) ...
  • 基于近段时间对抖音,...经过半天的琢磨,自己用python也搞出来一个根据抖音分享视频链接去除水印并下载的功能。 (一)得到分享链接 抖音分享链接:http://v.douyin.com/JkNaor/ (二)浏览器总打开 我们会在...
  • 去水印流程分析 1. 找到视频链接 2. 复制链接打开并修改链接里的playwm 为 play(并修改请求头为手机端) 3. 直接可以看到没有水印了, 直接上代码(Python) def get_web_play(aweme_id): import requests def get_...
  • 基于requests和selenium插件,通过抖音分享链接,获取原视频(去with水out印watermark),资源包含python源码和selenium的chrome的驱动
  • Python爬虫】抖音去水印

    千次阅读 2020-04-10 20:12:00
    究竟是怎么实现的去水印,就小小地研究了一下。 1.浏览器分析 从抖音短视频中分享一段视频。可以得到 我开始期待夏天和你一起吃西瓜,就像期待冬天和你一起吃火锅,其实我对夏天冬天没有特别喜欢,只是期待和你一起...
  • 导读: 本文介绍了如何使用简单的Python爬虫爬取抖音上你喜欢的拍客的所有视频(包含有水印和无水印两种)。代码已上传至公众号后台,回复:抖音即可获得。 一、获取你喜欢的拍客的视频url 即 抖音用户主页的url...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

python视频去水印

python 订阅