ermao 发表于 2020-9-13 14:11

分享两个抖音的官方接口[查用户信息/作品解析],快手

本帖最后由 ermao 于 2020-9-23 19:24 编辑


# 话说
> 之前的那俩软件是更新不了了,抖音的官方网页接口不给数据了,快手的一直访问频繁,所以,勿催。

#### 前段时间抓了两个抖音的接口,一个是官方好像开放了新的**解析**接口,另一个是自己瞎拼接测试出来一个未公开的**查用户信息**的接口,一起分享给大家。

#### 其实还抓了两个快手的接口,但是发现需要网页端的cookie(web_did),~~需要手动打码获取,失效很快~~还是解决了did的问题,也做了个接口,就不发了。


> 代码放到阿里云的函数计算,可以直接托管到公网(腾讯云的云函数还需要自己配置API网关),对于一些需要手动触发的云函数很方便,前不久才知道,安利一下。

# 代码

```
'''
# -*- encoding: utf-8 -*-
@ file    :   douyin.py
@ Time    :   2020年09月13日 13:59:59 星期天
@ AuThor:   ermao
@ version :   1.0
@ link    :   https://erma0.gitee.io
@ Desc    :   抖音相关接口
'''
import requests
import re

headers = {
    'User-Agent':
    'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Mobile Safari/537.36'
}


def user_info(uid):
    url = 'https://www.iesdouyin.com/web/api/v2/user/info/?uid=' + uid
    try:
      r = requests.get(url).json()
      info = r['user_info']
      # # 删除null/false
      return info
    except Exception:
      return {'error': '出错了!'}


def user_info_url(url):
    if 'share/user/' in url:
      id = re.findall(r'share/user/(\d+)\??', url)
    else:
      try:
            r = requests.head(url, headers=headers, allow_redirects=False)
            id = re.findall(r'share/user/(\d+)\??', r.headers['Location'])
      except Exception:
            return {'error': 'URL错误!'}
    return user_info(id)


def parse_by_url(url):
    if '/share/video/' in url:
      id = re.findall(r'share/video/(\d+)/?\??', url)
    else:
      try:
            r = requests.head(url, headers=headers, allow_redirects=False)
            id = re.findall(r'share/video/(\d+)/?\??',
                            r.headers['Location'])
      except Exception:
            return {'error': 'URL错误!'}
    return parse_by_id(id)


def parse_by_id(id):
    url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=' + id
    try:
      r = requests.get(url).json()
      video = r['item_list']
      return video
    except Exception:
      return {'error': '出错了!'}


if __name__ == "__main__":
    # a = user_info_url('https://v.douyin.com/JBknYQp/')
    # a = user_info('72673737181')
    a = parse_by_url('https://v.douyin.com/JBBebxv/')
    # a = parse_by_id('6808453751930719502')
    print(a)

```

ermao 发表于 2020-9-23 19:29

把代码放到阿里云搭建了个API,又在GiteePages部署了静态网页,做了个在线解析的,有需要的可以借鉴一下哈,真·无服务器实践,挺有意思的。
http://erma0.gitee.io/v/dy.html

geniusrot 发表于 2020-9-13 19:47

ermao 发表于 2020-9-13 19:15
那不清楚,总之下载浏览器打开主页都不显示作品列表了,不管这个了。
参数就是数字作品ID,最下面有例子

欧,反应过来了,这个是抖音单个视频的接口。和用户信息一样,很久以前就有了。打开F12。刷新,选XHR就能直接看到这两个接口{:301_978:}

cj13888 发表于 2020-9-13 14:22

学习借鉴一下,谢谢分享

dunniu 发表于 2020-9-13 14:38

有啥用,怎么用??

小小三毛 发表于 2020-9-13 15:14

小白一名,不知道怎么用。打酱油的路过

seeyou_shj 发表于 2020-9-13 15:21

不知道怎么用。打酱油的路过

feichedang 发表于 2020-9-13 15:26

小白一枚,期待成品

simida11 发表于 2020-9-13 15:28

小白一名,不知道怎么用。打酱油的路过

samary1999 发表于 2020-9-13 15:37

学习一下:lol

flow_one 发表于 2020-9-13 15:46

emmm 还以为大佬发新版了呢.

hbxtzkm 发表于 2020-9-13 15:51

习惯拿成品
页: [1] 2 3 4 5
查看完整版本: 分享两个抖音的官方接口[查用户信息/作品解析],快手