一、今日目标
+ I# F, L: x' ~& L# d某新闻板块,往下拉,会自动加载新闻内容,然后数据全部在一个feed包里面,这个数据包提交的参数里面有个_signature值是加密的,这就是我们今天要分析的内容_signature ) e# |9 J2 [' U Q1 m7 v
) C5 f A# k3 E, f( v% S; u% s
3 y" }$ o" I1 r4 {. ?# n2 J- P
二、开始分析1 I2 ^$ A& T5 o) {! z
1、全局搜索_signature
/ z" M; g. ?0 @9 {$ m9 _9 |2 D5 ]0 }: |2 R
" M, n, _( |6 d
2、在关键处下断,刷新页面,断了下来,主要代码如下
; H5 Y' C4 C0 k: f; j3 z) [& J/ U o! Z: L7 q: ^3 m( k3 f" J
+ E& a9 e" Y2 \ w' }var n = I(F.getUri(e), e)3、进入I函数进行分析
; N" K0 ^* E( W* U
' X8 k5 d: f; k* R: W7 n0 e1 `" Q1 I O' X( n5 y9 x* B, }+ k( {
4、单步调试,最后发现返回值为a.call(n,o)就是我们要找的数据,a=n.sign,n=window.byted_acrawler,所以最后调用的函数是window.byted_acrawler.sign(o)
. Z- l/ e L( b9 `3 t+ b1 D4 o# A! [# Y+ m
: m$ F% ^' i6 C& o9 |/ A
其中0 m9 l, X6 k3 D& d
o={url:'https://www.toutiao.com/api/pc/list/feed?offset=0&channel_id=94349549395&max_behot_time=0&category=pc_profile_channel&disable_raw_data=true&aid=24&app_name=toutiao_web'}5、开始分析sign函数,e.y始终大于1的,所以最后要分析的是下面的代码
1 ?- Y+ n5 Y& I0 K' ~K(b, e.c, e.l, f, e.z, this, null, 0)8 Y0 g3 s! x4 I6 y4 f
; U% t$ p2 r" \' s
6、进入到K函数所在js文件,发现代码不是很长,所以全部复制出来,并保存一个新建的js文件
1 U% t$ h/ I" ^6 _. @0 I7、新建一个html文件,调用上面的js文件,然后在调用sign函数,传入参数,得到如下值,可以说明该加密文件是可以用的,下节继续讲解如何补环境实现。3 e. v0 X% W/ L4 h `8 X
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="test.js"></script></head><body></body></html>3 Y$ e- e$ |. K& R# j
|