吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12510|回复: 32
收起左侧

[Python 转载] python爬虫 抖音短视频解析下载

  [复制链接]
wuzonghui 发表于 2018-10-11 17:30
今天无意间看到http://douyin.iiilab.com/可以解析下载抖音短视频,闲着没事就调用它的接口写了个解析的
[Python] 纯文本查看 复制代码
import requests
import execjs

# 生成参数s
def generateStr(a):
    js = '''
    test = function(a) {
            var c = function() {
                for (var d = 0,
                f = new Array(256), g = 0; 256 != g; ++g) {
                    d = g,
                    d = 1 & d ? -306674912 ^ d >>> 1 : d >>> 1,
                    d = 1 & d ? -306674912 ^ d >>> 1 : d >>> 1,
                    d = 1 & d ? -306674912 ^ d >>> 1 : d >>> 1,
                    d = 1 & d ? -306674912 ^ d >>> 1 : d >>> 1,
                    d = 1 & d ? -306674912 ^ d >>> 1 : d >>> 1,
                    d = 1 & d ? -306674912 ^ d >>> 1 : d >>> 1,
                    d = 1 & d ? -306674912 ^ d >>> 1 : d >>> 1,
                    d = 1 & d ? -306674912 ^ d >>> 1 : d >>> 1,
                    f[g] = d
                }
                return "undefined" != typeof Int32Array ? new Int32Array(f) : f
            } (),
            b = function(g) {
                for (var j, k, h = -1,
                f = 0,
                d = g.length; f < d;) {
                    j = g.charCodeAt(f++),
                    j < 128 ? h = h >>> 8 ^ c[255 & (h ^ j)] : j < 2048 ? (h = h >>> 8 ^ c[255 & (h ^ (192 | j >> 6 & 31))], h = h >>> 8 ^ c[255 & (h ^ (128 | 63 & j))]) : j >= 55296 && j < 57344 ? (j = (1023 & j) + 64, k = 1023 & g.charCodeAt(f++), h = h >>> 8 ^ c[255 & (h ^ (240 | j >> 8 & 7))], h = h >>> 8 ^ c[255 & (h ^ (128 | j >> 2 & 63))], h = h >>> 8 ^ c[255 & (h ^ (128 | k >> 6 & 15 | (3 & j) << 4))], h = h >>> 8 ^ c[255 & (h ^ (128 | 63 & k))]) : (h = h >>> 8 ^ c[255 & (h ^ (224 | j >> 12 & 15))], h = h >>> 8 ^ c[255 & (h ^ (128 | j >> 6 & 63))], h = h >>> 8 ^ c[255 & (h ^ (128 | 63 & j))])
                }
                return h ^ -1
            };
            return b(a) >>> 0
        }
    '''
    ctx = execjs.compile(js)
    return ctx.call('test', a)

if __name__ == '__main__':
    # 第一次访问的url(获取cookie)
    base_url = 'http://douyin.iiilab.com'

    # 解析url
    url = 'http://service0.iiilab.com/video/web/douyin'

    # link = 'http://v.douyin.com/d3pqo9/'
    # 抖音需要去水印的链接
    link = input('请输入链接\n')

    # r是随机数
    r = execjs.eval('Math.random().toString(10).substring(2)')

    # s是根据随机数r一定的规则生成的(太长不想分析, 直接用execjs这个库直接跑js代码)
    s = generateStr('{}@{}'.format(link, r))
    headers = {
        'Host': 'douyin.iiilab.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3514.0 Safari/537.36',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
        'Accept-Encoding': 'gzip,deflate',
        'Accept-Language': 'zh-CN,zh;q=0.9'
    }
    data = {
        'link': link,
        'r': r,
        's': s
    }

    # 使用requests的session保留cookies
    sess = requests.Session()

    # 要加入headers,不然报错
    sess.headers.update(headers)

    # 模拟正常访问网页获取cookies
    res = sess.get(base_url)

    headers = {
        'Host': 'service0.iiilab.com',
        'Origin': 'http://douyin.iiilab.com',
        'Referer': 'http://douyin.iiilab.com/',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3514.0 Safari/537.36',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
        'Accept-Encoding': 'gzip,deflate',
        'Accept-Language': 'zh-CN,zh;q=0.9'
    }
    sess.headers.update(headers)

    # 获取返回的数据
    res = sess.post(url, data=data, headers=headers).json()

    if res['retCode'] == 200:
        print(res)
        # 封面
        cover = res['data']['cover']
        # 标题
        title = res['data']['text']
        # 去水印后的视频
        video = res['data']['video']
    else:
        print(res)

免费评分

参与人数 9吾爱币 +8 热心值 +7 收起 理由
大象无形 + 1 PHP版抖音去水印http://www.douqq.com/douyin
编程爱好者123 + 1 + 1 用心讨论,共获提升!
zj229128151 + 1 谢谢@Thanks!
ZS丶落殇 + 1 我很赞同!
byho + 1 + 1 我很赞同!
为海尔而战 + 1 + 1 我很赞同!
xinluan + 1 + 1 热心回复!
忆千愁 + 1 + 1 谢谢@Thanks!
fanai + 1 + 1

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

瑞浩娱乐 发表于 2018-10-11 18:07
有水印吗?还有,请问一下怎么用。。。。
充电室 发表于 2018-10-11 18:12
哈哈,我总是去用他们的网站去解析,不知道楼主这个是怎么个玩法
忆千愁 发表于 2018-10-11 18:20
头像被屏蔽
长不大De叔叔 发表于 2018-10-11 18:24
提示: 作者被禁止或删除 内容自动屏蔽
wilsondex 发表于 2018-10-11 18:42
这个范例代码很值得学习!
wangqiustc 发表于 2018-10-11 18:52
边看小姐姐边学爬虫
117117 发表于 2018-10-11 18:56
学习了~~哈哈
kk1212 发表于 2018-10-11 19:07
用这个是可以免水印下载的吗
Quincy379 发表于 2018-10-12 08:13
Python大神你好!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-27 05:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表