专栏首页bigsaicsdn账号密码登录剖析(模拟登录)

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

大纲

  • 前言
  • 分析加密参数
    • 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访问我关注的人的文章!

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)

本文分享自微信公众号 - bigsai(bigsai),作者:bigsai

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 二叉树—层序、前序中序后序(递归、非递归)遍历详解

    层序遍历。听名字也知道是按层遍历。我们知道一个节点有左右节点。而每一层一层的遍历都和左右节点有着很大的关系。也就是我们选用的数据结构不能一股脑的往一个方向钻,...

    bigsai
  • 从阶乘、斐波那契、汉诺塔剖析彻底搞懂递归算法

    递归:就是函数自己调用自己。子问题须与原始问题为同样的事,或者更为简单; 递归通常可以简单的处理子问题,但是不一定是最好的。

    bigsai
  • 再不怕和老外聊天了!我用python写了个微信聊天翻译助手!

    在前面的一篇文章如何用python“优雅”的调用有道翻译?中咱们清楚的写过如何一层一层的解开有道翻译的面纱,并且笔者说过那只是脑洞的开始。现在笔者又回来了。Te...

    bigsai
  • Go实现海量日志收集系统(二)

    一篇文章主要是关于整体架构以及用到的软件的一些介绍,这一篇文章是对各个软件的使用介绍,当然这里主要是关于架构中我们agent的实现用到的内容 关于zookeep...

    coders
  • replace into 解析

    在支持业务过程中,经常遇到开发咨询replace into 的使用场景以及注意事项,这里做个总结,从功能原理注意事项上做个说明。

    用户1278550
  • EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:关于接口调用常见的一些问题(401 Unauthorized)

    在此,基于自身对于EasyNVR接口的调用和一些用户的反馈的问题来对接口的调用进行一下说明:

    EasyNVR
  • 「镁客晚报」顺丰投资无人机备战双十一?部分WP用户今天却无法登陆支付宝

    镁客网
  • 10个妨碍进步的前端学习方式

    腾讯NEXT学位
  • 拼多多前端一面面经 && 【更新】热乎二面面经

    希望面经积累的人品能进二面吧,总得来说挺简单的 1. 两栏布局,左边固定,要求先加载内容区域,说出多种方法 2 .正则对象test方法和exec方法的不同,分别...

    牛客网
  • PHP操作Cookie的写入与读取

    cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您...

    周俊辉

扫码关注云+社区

领取腾讯云代金券