facebook脸书登入协议分析

声明:

        本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!若有侵权,请添加(wx:wyqlxl99)联系删除

前言:

        前段时间刚好正在搞一些国外的推特、dc的登入协议,刚好看到了一眼这个facebook,想来也是一个大站看看他的登入是不是有什么过人之处!

        打开网站抖胆猜测一下这个lgndim和encpass应该就是我们要逆向的加密参数,但是这个lgndim的开头好眼熟啊,一看就像一个base64的加密。

图片

        先在控制台用atob解密一下试试,可以看到解密出来了应该就是宽高还有一个色彩深度值。

图片


        encpass我们直接在全局控制台搜索可以定位到这个位置,我们打上断点之后再触发一下,可以看到f.encryptPassword(d.keyId, d.publicKey, e.value, g)中的d来源i.loginFormParams,e.value 就是我们输入的密码,g则是时间戳。

图片

        我们重新触发登入发现这个d中的值是固定的,说明他要么就是写死的值要么就是某个接口返回拿到的值在本次会话中都使用这套,我们直接搜446这个publicKey值 ,可以看到在我们首次访问的链接中有这个部分固定了这一段的值,所以我们只需要在后续登入之前先访问首页,然后匹配拿到这段keyid和publickey的值带入到加密就可以了!

图片

        接下来进入到f.encryptPassword的函数里面可以看到就是引用了一些别的包的方法,我们只要依次扣下来然后按照这个方法的样子补上去就可以了

图片

        照葫芦画瓢扣了一下,这里要注意他里面用的都是原生的crypto方法去加密(发现国外的很喜欢用这个),都是异步的方法。如果你想用execjs去调用的话可以用deasync这个包把这个异步改成同步的就可以了

图片

图片

        到此整个登入流程就结束了,其中我们会发现请求的时候还有很多其他参数这些参数大部分都来源于页面当中,当然也有一些参数如csr、dyn这些是需要通过也页面拿到一个字典或者多个字典并且还要解析html中的标签拿到一些标签的值通过BitMap的操作去生成,具体流程还是挺复杂的不过似乎不校验。

图片

        最后测试,从登入到抓取文章摘要都是可以的!

图片

有兴趣的可以加入我的星球后续会持续分享和更新!

图片

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值