关于 FaceBook 动态列表加密参数的解密

Andrew说Python爬虫

2020-03-07 18:48
关注

facebook 的 js, 是将所有的函数封装为固定的格式 _d() , 然后通过固定的函数,通过传递函数名参数调用

mark固定传递参数调用函数:

markhttps://www.facebook.com/pages_reaction_units/more/?page_id=7619396355&cursor=%7B%22card_id%22%3A%22videos%22%2C%22has_next_page%22%3Atrue%7D&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%3ADEFAULT&dpr=1&__rev=1001802011&__s=yjxmip%3Av22nxa%3Adsen9l&__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

举报/反馈