24

「docker实战篇」python的docker- 抖音视频抓取(上)(24)

 5 years ago
source link: https://idig8.com/2019/04/12/dockershizhanpianpythondedocker-douyinshipinzhuaqushang24/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

上节主要说了通过多模拟器的并行进行数据的抓取,在没有docker环境的情况下,本次主要针对抖音的视频数据进行抓取,无论你是个人喜好,还是项目需求,大家对抖音的视频数据都很感兴趣,比如喜欢那个漂亮的小姐姐都想把他的视频保存下来,方便日后的观看,慢慢的膝上。上次说的appium完成抖音粉丝数据的抓取其实也可以完成抖音视频数据的抓取,抓取的思路也是想通,通过mitmdump进行数据解析,appium模拟滑动。如果一台设备抓取比较慢,可以用多台模拟器来进行抓取。这次主要用的另一种方式来进行抓取。

ZnQZ7zn.png!web

(一)分析分享页面

谷歌浏览器打开:https://www.douyin.com/share/user/89923219116

  • 1.1刷新页面

    > 按照图例步骤查看返回的数据

    >url地址:https://www.douyin.com/aweme/v1/aweme/post/?user_id=89923219116&count=21&max_cursor=0&aid=1128&_signature=HTvXTBAUQVTTUFGelHo.NB0711&dytk=2be712bf2e309b4b7947b459667ea3a1

QbYBNbI.png!web

  • 1.2 json.cn中查看返回的数据格式

    >1.2.1返回了10条

uaiamez.png!web

1.2.2发现解析发现

7f2aY3e.png!web

1.2.3 打开https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f0e0000bhlo7ff2gdds3j6apkfg&line=0

AFviqaR.png!web

 1.2.4 也就是通过 https://www.douyin.com/aweme/v1/aweme/post/?user_id=89923219116&count=21&max_cursor=0&aid=1128&_signature=HTvXTBAUQVTTUFGelHo.NB0711&dytk=2be712bf2e309b4b7947b459667ea3a1 可以获取视频的地址
 1.2.5 解析里面的参数 
https://www.douyin.com/aweme/v1/aweme/post/?
user_id=89923219116&
count=21&
max_cursor=0&
aid=1128&
_signature=4vFoMhAYvqksmu7gHnkAsuLxaC&
dytk=2be712bf2e309b4b7947b459667ea3a1

1.2.6里面一共6个参数

user_id
count
max_cursor
aid
_signature
dytk

1.2.7 下一步就是找到这6个参数的缘由从哪里获取到的。

肯定有老铁问,既然地址就知道了,直接用地址获取不完了,那么麻烦干啥? 我来截图解密,因为url地址是有时效性的

EbEfaav.png!web

bimMZn2.png!web

1.2.7.1 user_id 是url中的最后一个字段,可以直接获取

iuqQvyz.png!web

1.2.7.2 count 直接写死 21

iuqQvyz.png!web

1.2.7.3 max_cursor 直接写死 0,获取写时间戳

iUZnaef.png!web

vyyyemr.png!web

1.2.7.4 aid 直接写死 1128

iUZnaef.png!web

vyyyemr.png!web

1.2.7.5 dytk 直接可以通过页面获取,通过正则表达式

2uIbyaM.png!web

 1.2.7.6 _signature 比较麻烦,这里一起分析下
 1.2.7.6.1 查询_signature的信息,搜索:_signature 

zU7f63Y.png!web

1.2.7.6.2 点击搜索出来的2个文件中的第一个,然后按照我说的步骤点击

qyy6zuR.png!web

1.2.7.6.3 输入ctrl+f 输入_signature 查询,发现_signature = signature 通过signature赋值过来的。

aMfqEjj.png!web

1.2.7.6.4 signature 查找出来3个地方

初始化

3AvyEbI.png!web

赋值signature

eyuEbem.png!web

 1.signature = _bytedAcrawler.sign(nonce),  2.nonce 其实就是user_id,user_id在页面已经获取到了  3.需要了解下_bytedAcrawler.sign
 1.2.7.6.5 _bytedAcrawler 怎么来的,在通过ctrl+f  _bytedAcrawler = require(“douyin_falcon:node_modules/byted-acrawler/dist/runtime”) 

IRzUjyz.png!web

1.2.7.6.5 douyin_falcon:node_modules/byted-acrawler/dist/runtime 又是怎么来的

JbIvqaj.png!web

1.2.7.6.6 点击查找 douyin_falcon:node_modules/byted-acrawler/dist/runtime 对应的文件,发现是通过这个方法。还混淆了。

Q7BJfuE.png!web

1.2.7.6.7 下图箭头处【双击】 就可以将源码里面的混淆,进行浏览器的解析成为代码。

aEVvq2A.png!web

qInQniN.png!web

1.2.7.6.8 下面的是高混淆的,无法解密的。

mMJ7n2j.png!web

1.2.6.9 了解__M的源码,经过分析(具体咋分析,根据名称经验和代码),找到base.js原来就是__M的定义

QzU7Bfi.png!web

J73U73M.png!web

PS:下一步说说解析这块,如何破解获取到_signature

百度未收录

>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!

>>原文链接地址:上一篇:

已是最新文章


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK