前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >从DY用户页面获取作品列表

从DY用户页面获取作品列表

作者头像
李玺
发布于 2023-04-22 08:58:20
发布于 2023-04-22 08:58:20
1.9K01
代码可运行
举报
文章被收录于专栏:爬虫逆向案例爬虫逆向案例
运行总次数:1
代码可运行

最近DY的web端更新比较频繁,所以搞了很多方案来应对更新问题。

本文内容是其中一种方案,从用户主页的HTML响应内容中抽取user信息和作品列表数据。


下图中出现的内容都是在html名为RENDER_DATA的script标签中,以urlencode编码。

比如昵称、粉丝、获赞、地区、第一页的作品列表等。

取出来格式化后可转换成Json格式查阅。用户信息在user中,作品列表在data中。

接下来就是如何获取用户主页HTML文本。


分析测试

根据笔者的分析和测试,目前请求 /user/sec_user_id 需要提前准备好的参数有cookie中的 __ac_nonce、__ac_signature、ttwid。

现在ttwid作为了游客ID,权重甚至超过了校验参数 s_v_web_id。

__ac_nonce和ttwid是服务端返回的,但是如果直接从用户主页去获取ttwid,则需要有 s_v_web_id作为注册前提,所以可以从index页面去注册ttwid。

__ac_signature的生成在之前的文章中有过讲解,《DY__ac_signature》,所以本文不再复述了。


请求流程

直接把流程贴出来吧。__ac_signature的生成可参考之前的文章《DY__ac_signature》。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import re
from urllib import parse
import requests
import execjs

def get_ac_sign(ac_nonce):
    with open('_ac_signature.js', 'r', encoding='utf-8') as f:
        b = f.read()
    c = execjs.compile(b)
    d = c.call('get_ac_signature',ac_nonce)
    return d

def run(sec_user_id):
    sess = requests.session()
    headers_base = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
    }
    __ac_nonce = sess.get('https://www.douyin.com/',headers=headers_base).cookies.get('__ac_nonce')
    print(__ac_nonce)

    url = f"https://www.douyin.com/user/{sec_user_id}"
    __ac_signature = get_ac_sign(__ac_nonce)
    headers = {
        'authority': 'www.douyin.com',
        '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-language': 'zh-CN,zh;q=0.9,en-XA;q=0.8,en;q=0.7,zh-TW;q=0.6',
        'cache-control': 'max-age=0',
        'dnt': '1',
        'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
        'cookie': f'douyin.com; __ac_nonce={__ac_nonce}; __ac_signature={__ac_signature};',
        'sec-fetch-dest': 'document',
        'sec-fetch-mode': 'navigate',
        'sec-fetch-site': 'same-origin',
        'sec-fetch-user': '?1',
        'upgrade-insecure-requests': '1',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
    }
    ttwid = sess.get('https://www.douyin.com/',headers=headers).cookies.get('ttwid')
    print(ttwid)

    headers.update({'cookie': f'__ac_referer=https://www.douyin.com/user/{sec_user_id}; douyin.com; __ac_nonce={__ac_nonce}; __ac_signature={__ac_signature}; passport_csrf_token=7bced54d39291bf977d263d082a365c9; passport_csrf_token_default=7bced54d39291bf977d263d082a365c9; ttwid={ttwid};'})
    response = sess.get(url, headers=headers)
    doc =re.findall('(.*?)', response.text, re.S)[0]
    data = json.loads(parse.unquote(doc))
    return data

if __name__ == '__main__':
    sec_user_id = "MS4wLjABAAAA8Ag2TMrWvfZWpLywypFRGhoL2_A8FdXawWfuh29bJWCJ_BCr23KY0S9O76eC4_oC"
    data = run(sec_user_id)
    if data.get('40'):
        print(data['40']['user'])       # IP地址、年龄、粉丝信息等
        print(data['40']['post'])       # 作品列表、bitRateList
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023/04/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WordPress免费教程:如何给网站添加导航?
添加导航是我们拿到一个新的WordPress网站要做的事情,对于内容的规划我们在心里可能已经有了一个大概的雏形,我们需要给网站添加导航栏。
wordpress建站吧
2019/10/17
2.9K0
【说站】修改WordPress知更鸟导航菜单 分类字体颜色、大小
知更鸟主题的导航文字、大小和颜色其实都可以进行自定义的,下面就介绍一下如何单独修改导航菜单分类和整体修改导航菜单分类字体、颜色、大小的具体方法。
很酷的站长
2022/11/24
2.3K0
【说站】修改WordPress知更鸟导航菜单 分类字体颜色、大小
wordpress导航菜单详解及改造
对于wordpress主题来说 wp的菜单是必不可少的 可以用于制作导航栏 也可以做侧边栏、页脚导航等等 只要熟练掌握 就能利用wp菜单做成想要的东西 话不多说 现在先讲一下菜单的创建 首先要开启导航菜单功能 下面是一个例子 /* register_nav_menu( $location, $description ) 函数功能:开启导航菜单功能 @参数 string $location, 导航菜单的位置 @参数 string $description, 导航菜单的描述 开启多个位置的导航菜单,只需要重
企鹅号小编
2018/02/24
3.2K0
wordpress导航菜单详解及改造
免插件为wordpress实现彩色标签
作者:matrix 被围观: 2,777 次 发布时间:2013-08-10 分类:Wordpress 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
2820
免插件为wordpress实现彩色标签
wordpress图片水印插件-Super Image Plugin
作者:matrix 被围观: 2,262 次 发布时间:2013-04-16 分类:兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
4600
wordpress图片水印插件-Super Image Plugin
WordPress-Adminer插件:显示数据库地址、用户名和密码信息
作者:matrix 被围观: 1,327 次 发布时间:2013-03-09 分类:Wordpress 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
1K0
WordPress-Adminer插件:显示数据库地址、用户名和密码信息
为wordpress增加function模板应用-以后不用修改模板函数添加扩展功能
作者:matrix 被围观: 7,046 次 发布时间:2013-08-09 分类:Wordpress 兼容并蓄 | 2 条评论 »
HHTjim 部落格
2022/09/26
4100
为wordpress增加function模板应用-以后不用修改模板函数添加扩展功能
wordpress添加二级导航功能CSS代码
作者:matrix 被围观: 1,226 次 发布时间:2013-09-21 分类:Wordpress 零零星星 | 无评论 »
HHTjim 部落格
2022/09/26
6290
wordpress添加二级导航功能CSS代码
wordpress中文章内图片自动添加外边框
作者:matrix 被围观: 2,221 次 发布时间:2013-08-29 分类:Wordpress 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
4930
wordpress中文章内图片自动添加外边框
使用 WordPress 的导航菜单
WordPress 原来默认的导航菜单只能是页面,或者分类,或者两者,如果想自己加入一个自定义链接都需要修改主题,非常不方便,所以一个完全可定制化的自定义的 WordPress 导航菜单成了所有人的需求。
Denis
2023/04/14
2.1K0
使用 WordPress 的导航菜单
wordpress数据库和整站文件备份插件-BackWPup
作者:matrix 被围观: 1,271 次 发布时间:2013-03-11 分类:Wordpress 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
4380
wordpress数据库和整站文件备份插件-BackWPup
WordPress导航菜单图标字体插件font awesome 4 menus纯代码版
换成 Begin 主题之后,大伙都不约而同的给菜单用上了图标字体,确实给博客带来了一定的美化效果。 与之配套的是 font awesome 4 menus 这个图标字体插件,其实还是挺小巧的。 不过,
张戈
2018/03/21
3.1K0
WordPress导航菜单图标字体插件font awesome 4 menus纯代码版
WordPress中添加评论Ctrl+Enter快捷回复
作者:matrix 被围观: 1,678 次 发布时间:2013-09-01 分类:Wordpress 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
6310
WordPress中添加评论Ctrl+Enter快捷回复
添加wordpress后台验证功能
作者:matrix 被围观: 1,931 次 发布时间:2013-11-04 分类:Wordpress 兼容并蓄 | 12 条评论 »
HHTjim 部落格
2022/09/26
4430
为wordpress添加google+按钮
作者:matrix 被围观: 1,093 次 发布时间:2013-09-10 分类:Wordpress 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
5300
为wordpress添加google+按钮
WordPress配置主题与基本使用 | 以Argon主题为例
夜梦在这篇文章中介绍了使用WordPress从零开始建设自己的网站,这篇文章夜梦将介绍一下wordpress主题的配置和argon主题的基本使用。这篇文章仅介绍argon主题的配置,不涉及wordpress基础设置。
夜梦星尘
2024/08/20
7750
WordPress配置主题与基本使用 | 以Argon主题为例
WordPress为导航菜单添加个性图标字体
目前图标字体非常流行,图标字体使用简单,与图片格式的小图标相比,支持视网膜显示,可以无限放大。特别是一些响应式设计的主题模板,都会或多或少使用图标字体。我们还可以单独为导航菜单上的项目也配上个性化的图标字体。
爱游博客
2019/08/07
2K0
WordPress为导航菜单添加个性图标字体
wordpress输出导航菜单
更多参照 https://developer.wordpress.org/reference/functions/wp_get_nav_menu_items/
切图仔
2022/09/14
1.8K0
wordpress输出导航菜单
wordpress中提取文章内第一张图片作为缩略图
作者:matrix 被围观: 1,059 次 发布时间:2013-09-04 分类:Wordpress 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
4340
wordpress中提取文章内第一张图片作为缩略图
WordPress用户权限说明
作者:matrix 被围观: 2,498 次 发布时间:2013-05-22 分类:Wordpress 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
3110
WordPress用户权限说明
推荐阅读
相关推荐
WordPress免费教程:如何给网站添加导航?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档