博客园登录请求分析

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

删除Cookies

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

博客园登录请求分析_第1张图片
删除Cookies

登录页Cookie

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

博客园登录请求分析_第2张图片
登录页请求

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

博客园登录请求分析_第3张图片
/user/signin
博客园登录请求分析_第4张图片
/user/signin?AspxAutoDetectCookieSupport=1

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

登录请求

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

博客园登录请求分析_第5张图片
登录请求

有几个需要注意的地方

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

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

博客园登录请求分析_第6张图片
登录按钮事件

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

博客园登录请求分析_第7张图片
signin_go函数

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

  1. GET请求https://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个必要的请求头


博客园登录请求分析_第8张图片
Postman请求头

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

博客园登录请求分析_第9张图片
Postman表单

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

博客园登录请求分析_第10张图片
登录成功

你可能感兴趣的:(博客园登录请求分析)