facebook
的 js
, 是将所有的函数封装为固定的格式 _d()
, 然后通过固定的函数,通过传递函数名参数调用
mark
固定传递参数调用函数:
mark
https://www.facebook.com/pages_reaction_units/more/?page_id=7619396355&cursor={"card_id":"videos","has_next_page":true}&surface=www_pages_home&unit_count=8&referrer&fb_dtsg_ag&__user=0&__a=1&__dyn=7AgNe5Gmawgrolg9odoyGzEy4QjFwn8S2Sq5UO5U4e1qzEjyQdxK5WAx-bxWUW16whoS2S4ogU9A3mcw8258e8hwj82oG7Elw86l0DwLwxw-KEdEnwho4a11zU4K1dx278-0CUrx62WUry8465o-cBKm1UwiE9E4aawDKi8wGwFyFE-1kwOwnolwBgK7o88vwlo2kwLwKG2q4U2IzUuxy5po5e1dw&__csr=&__req=b&__beoa=0&__pc=PHASED:DEFAULT&dpr=1&__rev=1001802011&__s=yjxmip:v22nxa:dsen9l&__hsi=6801018320680499016-0&__comet_req=0&__spin_r=1001802011&__spin_b=trunk&__spin_t=1583485473
这些参数中 _dyn
和 __s
是需要破解加密的,其他参数都可以在获取用户主页时获取到。
_dyn
参数的加密位置,函数。
这个参数的位置有点恶心。在 URL
中显示为 _dyn
但是实际去查找的时候,会发现只能找到一个 jsmod_key
找到这里直接打断点,一步一步走下去,你会发现没啥用,点半天还没有任何发现。
就是这个方法点半天没有用。如果碰到这个,直接 F8
.就会出来,出来之后你继续点击 F11
就这样重复,直到看到上面的函数 getLoadedModuleHash
。OK!成功了,这就是加密的入口。再次点击 F11
。就会发现下面的方法。
断点直接放到 return
处,一步执行完,你就会发现这就是 _dyn
的值。
需要注意的点,如果你一直进不去 getLoadedModuleHash
方法的话,建议直接刷新一下页面。此处的判断逻辑当参数 _dyn
有值的时候就不会进入。。
__s
参数解密
由 js
生成的 3 个参数拼接而成。
中间的 b
是生成后是固定的,每一个用户会生成不同的 b
,如果你一直抓取的这个是这个用户的话,就不用刷新。这些值是 LocalSorage
中的 Session
和 Session Storage
中的 TabId