博客园登录请求分析

抓包的工具有很多,浏览器的开发者工具、Fiddler、Wireshark等等,这里以Chrome的开发者工具举例。

删除Cookies

方便分析,我们先打开开发者工具,将博客园的cookie删除

登录页Cookie

博客园的登录页面是passport.cnblogs.com/user/signin,直接访问这个页面,然后看网络请求

可以看到先访问了passport.cnblogs.com/user/signin,状态码是302,又重定向到passport.cnblogs.com/user/signin…,还是这个页面,只是多加了参数AspxAutoDetectCookieSupport=1,分别看这两个请求的返回内容

访问第一个请求时服务器向浏览器返回了 AspxAutoDetectCookieSupportSERVERID 两个Cookie,而第二个请求,也是返回了 SERVERID 这个Cookie,暂时认为这个请求对我们没有帮助

登录请求

输入账号密码,然后点登录,看请求的报文

有几个需要注意的地方

  • Content-Type 使用了application/json的方式
  • 登录页返回的两个Cookie要带上
  • 有个 VerificationToken
  • 账号密码的参数分别是input1input2,并且做了加密处理,remember是记住密码
  • 实践发现 X-Requested-With也是必须的,否则登录报错

要知道VerificationTokeninput1input2值的由来,我们定位到登录按钮的事件

调用了signin_go函数,找到这个函数,看它所做的事情

代码很清晰,到这里,除去验证码的部分,结合请求报文,登录的过程已经很清楚了

  1. GET请求passport.cnblogs.com/user/signin页面,拿到AspxAutoDetectCookieSupportSERVERID 两个Cookie
  2. 使用了 JSEncrypt 根据RSA公钥加密用户名与密码作为input1input2参数
  3. 设置请求头ContentTypeVerificationToken 还有 X-Requested-With,并带上前面两个Cookie
  4. input1input2remember转换为json,发送POST请求,返回的JSON数据success为true表示登录成功
  5. 登录成功后返回 .CNBlogsCookie Cookie,也就是用户身份的Cookie

模拟登录

为了验证我们的分析,使用Postman工具模拟一下登录的过程

设置4个必要的请求头

因为Content-Type是application/json方式,所以表单使用raw,填入登录的json参数

然后提交,返回了登录成功的JSON

转载于:https://juejin.im/post/5a31cb5551882531ea654748

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值