鱼C论坛

 找回密码
 立即注册
查看: 7898|回复: 54

[技术交流] 抖音用的是什么反扒机制?怎么应对这反扒机制?

[复制链接]
回帖奖励 69 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次(中奖概率 70%)
发表于 2021-11-15 18:09:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 非凡 于 2021-11-15 18:13 编辑

在试图爬取抖音的短视频时发先一个这样的情况:

首先:
        抖音的视频资源是动态加载的,视频资源的包是 1.PNG
        这本也不算什么,根据包的url爬取资源就是了。
但是:
        这视频资源的几个包没由什么明显的规律。下面是同一网页下的4个视频资源包的url
url4 = 'https://www.douyin.com/aweme/v1/web/aweme/post/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=MS4wLjABAAAAF5ZfVgdRbJ3OPGJPMFHnDp2sdJaemZo3Aw6piEtkdOA&max_cursor=1554967168000&count=10&publish_video_strategy_type=2&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Mozilla&browser_version=5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/95.0.4638.69+Safari/537.36+Edg/95.0.1020.53&browser_online=true&msToken=67fKhMC_DOBVizOJ_90hL1U5YOv-BFiS9N3L6zvEkLoG1l3klprxDvLIqdXqvvVWaVULmBnoGKIKkT9sM8oD7uz5W7uia2eeCV0EkQSZpIzr0CKgMbq3G0tEpA==&X-Bogus=DFSzsdVLzaJANH4lS7-PXc54Da62&_signature=_02B4Z6wo00001LPNYPgAAIDBX6bM3HmW-ySzyWRAAE1m87DgKa7sy5DoD8351IMgesfFtDtbv8SwWqrao3uL3V.9wiCZEGoQlvqppjX2j4kkxNEQXZYclL2pBvN5-MIZMQ9eMD237Ap2xB.xba'
        url3 = 'https://www.douyin.com/aweme/v1/web/aweme/post/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=MS4wLjABAAAAF5ZfVgdRbJ3OPGJPMFHnDp2sdJaemZo3Aw6piEtkdOA&max_cursor=1555830333000&count=10&publish_video_strategy_type=2&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Mozilla&browser_version=5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/95.0.4638.69+Safari/537.36+Edg/95.0.1020.53&browser_online=true&msToken=67fKhMC_DOBVizOJ_90hL1U5YOv-BFiS9N3L6zvEkLoG1l3klprxDvLIqdXqvvVWaVULmBnoGKIKkT9sM8oD7uz5W7uia2eeCV0EkQSZpIzr0CKgMbq3G0tEpA==&X-Bogus=DFSzsdVLtW0ANH4lS7-PIQ54Da6P&_signature=_02B4Z6wo000019EoY5gAAIDCPUPPv39lPefRLGcAAJXh87DgKa7sy5DoD8351IMgesfFtDtbv8SwWqrao3uL3V.9wiCZEGoQlvqppjX2j4kkxNEQXZYclL2pBvN5-MIZMQ9eMD237Ap2xB.x19'
        url2 = 'https://www.douyin.com/aweme/v1/web/aweme/post/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=MS4wLjABAAAAF5ZfVgdRbJ3OPGJPMFHnDp2sdJaemZo3Aw6piEtkdOA&max_cursor=1556706031000&count=10&publish_video_strategy_type=2&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Mozilla&browser_version=5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/95.0.4638.69+Safari/537.36+Edg/95.0.1020.53&browser_online=true&msToken=twRSlOjltAT2zPZmbZdxdb-bR5WLWpsD84ByDVPKc0IhiLG44D4G7NN1Gc-eDtfLQq3xUyctzKi7oBH-NUPvDw6sE7TIlh5JWUXZZuN4NPKujwOYRNoPzh-Bj1I=&X-Bogus=DFSzsdVOiXhANxaNS7-FtO54Da6C&_signature=_02B4Z6wo000018-VBGQAAIDCI.6oQ9csIRvPkQDAAJKAw5mHbWKMvbXIFTGDSgCKx.nJAti3X50MjcqmbXV6YojDEXYtMxwbH5ohF38cJCELD4mMFVqaRA2cShSkkYtJR6sarvfDjFEHu8D46f'
        url1 = 'https://www.douyin.com/aweme/v1/web/aweme/post/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=MS4wLjABAAAAF5ZfVgdRbJ3OPGJPMFHnDp2sdJaemZo3Aw6piEtkdOA&max_cursor=1583639919000&count=10&publish_video_strategy_type=2&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Mozilla&browser_version=5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/95.0.4638.69+Safari/537.36+Edg/95.0.1020.53&browser_online=true&msToken=twRSlOjltAT2zPZmbZdxdb-bR5WLWpsD84ByDVPKc0IhiLG44D4G7NN1Gc-eDtfLQq3xUyctzKi7oBH-NUPvDw6sE7TIlh5JWUXZZuN4NPKujwOYRNoPzh-Bj1I=&X-Bogus=DFSzsdVO2LhANxaNS7-Ftc54Da18&_signature=_02B4Z6wo000019w8H3gAAIDCMFezXSgNUnvcOBvAAJamkf9fCtc8vB4XSkwEyPolT2cZEySf2qypoNwYnMzrWnZ.xesnKj5rPLyEywsyS4sjVvoiEt.iQftPIbMdMmsUCGL4yQLPPrb2ke.N55'
        url不同的地方max_cursor=和是_signature=_       
        这是什么反爬机制?

更麻烦的是:
        每刷新重加载一次页面,就算是加载的相同的视频资源,但他这些资源包的url都是不一样的。我这例子里视频是漫威影业官方账号的短视频。链接是https://www.douyin.com/user/MS4w ... dJaemZo3Aw6piEtkdOA
       
        这样一来,我就算把视频资源包的url复制下来,用在爬虫代码上也是爬不到任何资源的。

        这种反爬机制是什么?该怎么应对?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-15 18:18:45 | 显示全部楼层

回帖奖励 +1 鱼币

萌新学习中。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-15 19:13:03 | 显示全部楼层

回帖奖励 +1 鱼币

妈呀,不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 07:36:15 | 显示全部楼层

回帖奖励 +1 鱼币

可能抖音为了保护up主的权益,所以不让爬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 08:38:59 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-16 09:25:53 | 显示全部楼层

回帖奖励 +1 鱼币

代码发全。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 10:32:26 | 显示全部楼层
妈呀,不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 10:33:24 | 显示全部楼层

回帖奖励 +1 鱼币

萌新学习中。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 10:59:32 | 显示全部楼层
作为萌新 看的我是一脸懵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 12:45:34 | 显示全部楼层
萌新蒙了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 12:57:18 | 显示全部楼层

回帖奖励 +1 鱼币

不太清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-16 15:34:51 | 显示全部楼层
import json
import requests
from lxml import etree

header = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53'}
url = 'https://www.douyin.com/aweme/v1/web/aweme/post/?device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=MS4wLjABAAAAF5ZfVgdRbJ3OPGJPMFHnDp2sdJaemZo3Aw6piEtkdOA&max_cursor=1583639919000&count=10&publish_video_strategy_type=2&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Mozilla&browser_version=5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/95.0.4638.69+Safari/537.36+Edg/95.0.1020.53&browser_online=true&msToken=twRSlOjltAT2zPZmbZdxdb-bR5WLWpsD84ByDVPKc0IhiLG44D4G7NN1Gc-eDtfLQq3xUyctzKi7oBH-NUPvDw6sE7TIlh5JWUXZZuN4NPKujwOYRNoPzh-Bj1I=&X-Bogus=DFSzsdVO2LhANxaNS7-Ftc54Da18&_signature=_02B4Z6wo000019w8H3gAAIDCMFezXSgNUnvcOBvAAJamkf9fCtc8vB4XSkwEyPolT2cZEySf2qypoNwYnMzrWnZ.xesnKj5rPLyEywsyS4sjVvoiEt.iQftPIbMdMmsUCGL4yQLPPrb2ke.N55'
#
res = requests.get(url=url,headers=header,files=False)
res.encoding = 'utf-8'
#这里就卡了,url是从视频资源包了复制来的,可每次取爬都是空的。后来才发现,视频资源包在每刷新一次网页用的url都是新的
html = res.text     

#
doc = etree.HTML(html)
info_id = r'//*[@id="root"]/div/div[2]/div/div[4]/div[1]/div[2]/ul/li[10]/a/@href'
tag_id = doc.xpath(info_id)
抖音的网址是https://www.douyin.com/user/MS4w ... dJaemZo3Aw6piEtkdOA
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-16 15:40:52 | 显示全部楼层

本是想先爬这页码里所有短视频的id+名字
然后再根据需求去选择爬取想要的视频,

但在爬这所有短视频i+名字这一环节就卡了。
这个加载视频资源的包里请求的URL,似乎就不是固定的。。。每刷新一次都用的是新的url
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 16:02:55 | 显示全部楼层
非凡 发表于 2021-11-16 15:34
抖音的网址是https://www.douyin.com/user/MS4w ... dJaemZo3Aw6piEtkdOA

我看数据就在首页的script里,只是这些数据得带着获取的cookie才会给,就不去想cookie是如何获取的了,直接用。
import requests
import re
import json
from urllib.parse import unquote


def main():
    url = 'https://www.douyin.com/user/MS4wLjABAAAAF5ZfVgdRbJ3OPGJPMFHnDp2sdJaemZo3Aw6piEtkdOA'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0',
               'Cookie': 'douyin.com; ttcid=1eef9e1593174202a6502ba9a8adc15a38; ttwid=1%7CmTJ8W2IDo5wALE9iTflbSuLgc653qxQKNAa836k6VNw%7C1636973364%7Ceef3e447b528058e86494392c5fec3a9ee4cf5e0caccfc8b67a08afd39e50bb6; _tea_utm_cache_6383=undefined; MONITOR_WEB_ID=6f9e2e5e-201a-4cba-9c2a-155ec43ec72a; passport_csrf_token_default=a8c02b258607e12a63c5aa5277e67046; passport_csrf_token=a8c02b258607e12a63c5aa5277e67046; _tea_utm_cache_1300=undefined; s_v_web_id=verify_kw1c9lug_a6z5YYyS_AWQD_4uLD_9jNp_3aFqTWXAG3Wk; __ac_nonce=06192fe1600efd2f548a4; __ac_signature=_02B4Z6wo00f010oZ.OAAAIDDSL4VSgFGbQNKOPhAALMfzkcLVN8kvHY8F8.4A5amrjhSxq1fBh5cV3Mb3lmu6n1vBZEZ7g2-OJbAE0HGGN.q9D4vlb32.SAnb8XjxYYKuIgSkmi4eQazA1DF9a; tt_scid=C0M3O402-fU-VBfYxHGPmlsoqbSakOcoEu.tZyQN77ZsgRlym3rpw02qacKtgxBob80a; msToken=yr6BsU_SWQro4Rh2yvuOQxuc5QSYIy1qpRn6SaTC6DGgql7tMepxNK68hBZNpUGhoN25aikbN2V1h1iqif4dA9Wv7_VQlxhXhuTrhht5e0T9git4KwgyVaHb6A=='}
    r = requests.get(url, headers=headers)
    result = re.findall(r'"application/json">(.*?)</script>', r.text)[2]
    result = unquote(result)  # 解码一下html编码
    result = json.loads(result)
    datas = result['C_18']['post']['data']
    for data in datas:
        print(data['video']['playAddr'][0]['src'])
        print(data['video']['playAddr'][1]['src'])
        print('=' * 100)


if __name__ == '__main__':
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 16:39:21 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-16 17:30:31 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-16 17:53:37 | 显示全部楼层
本帖最后由 非凡 于 2021-11-16 17:56 编辑
suchocolate 发表于 2021-11-16 16:02
我看数据就在首页的script里,只是这些数据得带着获取的cookie才会给,就不去想cookie是如何获取的了,直 ...


这个只是首页访问时加载的前10个视频资源,这里账户里一共有72视频资源,如果想要爬去其它的资源该怎么操作?

是不是只能用到element去将所有资源加载出来后再去爬?

能不能找到这数据包的url之间的规律?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 20:35:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-16 21:38:04 | 显示全部楼层

回帖奖励 +1 鱼币

萌新学习中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-16 23:34:14 | 显示全部楼层

回帖奖励 +1 鱼币

萌新学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 21:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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