前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >csdn账号密码登录剖析(模拟登录)

csdn账号密码登录剖析(模拟登录)

作者头像
bigsai
发布2019-09-24 13:36:52
7.9K3
发布2019-09-24 13:36:52
举报
文章被收录于专栏:bigsaibigsai

大纲

  • 前言
  • 分析加密参数
    • uaToken
    • webUmidToken
  • 发送模拟请求
  • 对比解决障碍
    • 浏览器发送
    • postman模仿
  • 小结
  • 编写代码

前言

  • 很久以前研究过csdn的模拟登录,记得那个时候的csdn登录还是一个`form``表单,然后参杂着一些参数。使用遍历input元素把表单各个参数拿下来。存下直接post即可登陆成功。
  • 前几天再次看了下亲爱的csdn。突然发现多了这连个参数。这就勾起了我的性趣和好奇心:我靠,就一年没见,csdn也搞这么一大串加密?并且以看两种加密方式还不一样哇?有点东西!
  • 下面就分享一下分析的过程!由于时间有限,只能每晚抽点时间研究,如果大家感觉不够深入或者讲的不好请谅解!

使用工具:

  • 谷歌浏览器
  • postman发送请求调试
  • fidder抓包

分析加密参数

可以根据上图分析得知:有uaToken 和webUmidToken两个token。 分析参数肯定是要打断点的,一般有直接搜索,查看js调用堆栈,和hook查找找到参数位置。我是利用搜索找参数。 分析前先做好一些预备工作,多发几个请求,刷新页面。你会发现:

  1. 不刷新页面的话uaToken不会变化。
  2. webUmidToken每次都不一样。
  3. 每次cookie不变。

uaToken

  • 查找uaToken发现这段代码比较诡异。打断点debug。发现没错,这就是我们要找的!点击F11,进入子函数查看发生了什么。
  • 进去发现它执行e()函数。再次F11查看。
  • 通过校验发现e函数其实就是一个加密函数,关键是它跟我们的核心数据(账号、cookie、密码等)无关,所以这个加密数据空有其架势无作用。你可以保存一个直接一直使用一个(如果可逆后台可能会根据字符串进行校验是否符合规则)。

webUmidToken

每次刷新都会发现他在变化,鉴于前面的token都没啥作用,我大胆猜测,他也不影响登录!就先不debug分析了。

实际上他对结果也是没有影响的,这里就不进行分析,先发送请求!

发送模拟请求

  • 通过浏览器的头发送请求信息。你会发现:不管你怎么模拟都是各种错误,要么类型错误,要么繁忙,要么类型错误。(可以看得出csdn是java后台,个人感觉接口异常处理的还有问题。暴露方法了)

对比解决障碍

有时候浏览器太过于局限。用fidder找到其中不同之处。用浏览器和postman发送请求找到其中参数的不同之处。

浏览器发送

postman模仿

  • 你可以发现其中主要是格式区别,和部分头信息浏览器不显示需要加上。然后发送请求检验!

小结

  1. 后来发现其实那两个token,和cookie为空都没有关系!
  2. cookie也没有限制,在登录时候根本不要cookie都可以。按理论来说应该进入页面返回一组cookie,用这个cookie访问登录接口有效才行,显然csdn没有。
  3. 分析一波约等于白分析,登录机制太简单了。
  4. content-length别乱加,加错了它后台校验或出错
  5. 也就是登录著需要type,账号密码即可,其他设为空都行。要注意的就是参数发送的格式!raw文本
  6. 以后见到类似先测试登录不能盲目分析。虽然能够增加经验,但是有点浪费时间。。像csdn这次就是。。啥都没用。

编写代码

思路:访问登录接口,用返回的cookie访问我关注的人的文章!

代码语言:javascript
复制
import  requests
from bs4 import BeautifulSoup

url='https://passport.csdn.net/v1/register/pc/login/doLogin'
header={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
        'referer':'https://passport.csdn.net/login',
        'origin':'https://passport.csdn.net',
        'content-Type':'application/json;charset=UTF-8',
        'x-requested-with':'XMLHttpRequest',
        'accept':'application/json, text/plain, */*',
        'accept-encoding':'gzip, deflate, br',
        'accept-language':'zh-CN,zh;q=0.9',
         'connection': 'keep-alive'
         ,'Host': 'passport.csdn.net'
        }
data='{"loginType":"1","pwdOrVerifyCode":"你的密码",' \
     '"userIdentification":"你的账号","uaToken":"",' \
     '"webUmidToken":""}'
req=requests.post(url,data=data,headers=header)
cookies = requests.utils.dict_from_cookiejar(req.cookies)
res=req.text
print(res)
print(req.status_code)
print(cookies)

url2='https://blog.csdn.net/nav/watchers'
req2=requests.get(url2,cookies=cookies)
soup=BeautifulSoup(req2.text,'lxml')

print(soup.text)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bigsai 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大纲
  • 前言
  • 分析加密参数
    • uaToken
      • webUmidToken
      • 发送模拟请求
      • 对比解决障碍
        • 浏览器发送
          • postman模仿
          • 小结
          • 编写代码
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档