Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

爬虫——请求参数逆向

2022/06/03 爬虫 Python JS
Word count: 321 | Reading time: 2min

登陆参数类

新浪博客登陆

Input输入:

  1. Username账号
  2. password密码

params请求参数:

  1. https://login.sina.com.cn/sso/prelogin.php?entry=boke&callback=sinaSSOController.preloginCallBack&su=MTUyMzIxMzEy&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.19)&_=1654090585990
    • entry: boke——固定值
    • callback: sinaSSOController.preloginCallBack——固定值
    • su: MTUyMzIxMzEy——变:加密
    • rsakt: mod——固定值
    • checkpin: 1——固定值
    • client: ssologin.js(v1.4.19)——固定值
    • _: 1654090585990——变:13位时间戳
  2. https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)&_=1654090586051
    • client: ssologin.js(v1.4.19)——固定值
    • _: 1654090586051——13位时间戳

针对su参数的解密流程

  1. Ctrl+Shift+F全局搜索: su =

  2. 搜索结果中定位到具体的文件:ssologin.js

  3. Jsonify后阅读代码,定位具体行数:971

    1
    2
    3
    4
    5
    6
    request = objMerge(request, me.loginExtraFlag);
    request = objMerge(request, me.loginExtraQuery);
    request.su = sinaSSOEncoder.base64.encode(urlencode(username));
    if (me.service) {
    request.service = me.service
    }
  4. 给971行: request.su = sinaSSOEncoder.base64.encode(urlencode(username));加上断点

  5. 重新输入账号密码后,提交登陆请求

  6. 捕捉4中打的断点,查看参数运行时的值

  7. 观察971行具体的加密逻辑:

  8. 扣出sinaSSOEncoder类的定义:

附——JS中call调用

1
2
3
4
5
6
7
8
9
10
11
var a =  a||{};
(function(){
this.say ={
what: function(){
console.log("what");
}
}
}).call(a);

console.log(a)
console.log(a.say.what())

请求参数类

Author: Mrli

Link: https://nymrli.top/2022/06/01/爬虫——请求参数逆向/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

NextPost >
每周一个开源项目——ddt-sharp-shooter
CATALOG
  1. 1. 登陆参数类
    1. 1.1. 新浪博客登陆
      1. 1.1.1. 针对su参数的解密流程
      2. 1.1.2. 附——JS中call调用
  2. 2. 请求参数类