CSDN登录

您所在的位置:网站首页 csdn登陆 CSDN登录

CSDN登录

2022-07-25 18:26| 来源: 网络整理| 查看: 265

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

前言

很久以前研究过csdn的模拟登录,记得那个时候的csdn登录还是一个`form``表单,然后参杂着一些参数。使用遍历input元素把表单各个参数拿下来。存下直接post即可登陆成功。

前几天再次看了下亲爱的csdn。突然发现多了这连个参数。这就勾起了我的性趣和好奇心:我靠,就一年没见,csdn也搞这么一大串加密?并且以看两种加密方式还不一样哇?有点东西!

下面就分享一下分析的过程!由于时间有限,只能每晚抽点时间研究,如果大家感觉不够深入或者讲的不好请谅解!大家也可以看另一篇破解的文章 爬虫之网易云js解密剖析

使用工具:

谷歌浏览器postman发送请求调试fidder抓包 在这里插入图片描述 分析加密参数

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

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

在这里插入图片描述

查找uaToken发现这段代码比较诡异。打断点debug。发现没错,这就是我们要找的!点击F11,进入子函数查看发生了什么。 在这里插入图片描述

进去发现它执行e()函数。再次F11查看。

在这里插入图片描述

通过校验发现e函数其实就是一个加密函数,关键是它跟我们的核心数据(账号、cookie、密码等)无关,所以这个加密数据空有其架势无作用。你可以保存一个直接一直使用一个(如果可逆后台可能会根据字符串进行校验是否符合规则)。

在这里插入图片描述

webUmidToken

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

在这里插入图片描述在这里插入图片描述

发送模拟请求

在这里插入图片描述

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

在这里插入图片描述

对比解决障碍

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

浏览器发送

在这里插入图片描述 在这里插入图片描述

postman模仿

在这里插入图片描述

在这里插入图片描述

你可以发现其中主要是格式区别,和部分头信息浏览器不显示需要加上。然后发送请求检验! 在这里插入图片描述 在这里插入图片描述 小结 后来发现其实那两个token,和cookie为空都没有关系!(可能扫码登录验证的token,有兴趣可以自行分析)cookie也没有限制,在登录时候根本不要cookie都可以。按理论来说应该进入页面返回一组cookie,用这个cookie访问登录接口有效才行,显然csdn没有。分析一波约等于白分析,登录机制太简单了。content-length别乱加,加错了它后台校验或出错也就是登录著需要type,账号密码即可,其他设为空都行。要注意的就是参数发送的格式!raw文本。以后见到类似先测试登录,不能盲目分析。虽然能够增加经验,但是有点浪费时间。。像csdn这次就是。。啥都没用。 编写代码

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

python 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) java

依赖jsoup、fastjson

package csdn; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import com.alibaba.fastjson.JSONObject; import org.jsoup.Connection.Response; public class csdn { static Map cookies; private static void dologin(String username, String password) throws IOException { String url = "https://passport.csdn.net/v1/register/pc/login/doLogin"; Map data = new HashMap(); data.put("loginType", "1"); data.put("pwdOrVerifyCode", password); data.put("userIdentification", username); data.put("loginType", "1"); data.put("uaToken", ""); data.put("webUmidToken", ""); String dataString = JSONObject.toJSONString(data); JSONObject JSON = JSONObject.parseObject(dataString); Connection con = Jsoup.connect(url).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") .header("referer", "https://passport.csdn.net/login").header("origin", "https://passport.csdn.net") .header("content-Type", "application/json;charset=UTF-8").header("x-requested-with", "XMLHttpRequest") .header("accept", "application/json, text/plain, */*").header("accept-encoding", "gzip, deflate, br") .header("accept-language", "zh-CN,zh;q=0.9").header("connection", "keep-alive") .header("Host", "passport.csdn.net").header("Cookie", "").requestBody(JSON.toJSONString()) .ignoreContentType(true)// 非常重要 .maxBodySize(1000).method(Connection.Method.POST); System.out.println(JSON.toJSONString()); Response response = con.execute(); cookies = response.cookies(); System.out.println(response.body()); } public static void main(String[] args) throws IOException { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("输入账号:"); String username = sc.next(); System.out.println("输入密码:"); String password = sc.next(); dologin(username, password); } }

在这里插入图片描述 如有错误请指教! 如有问题可以Mark交流!

如果对后端、爬虫、数据结构算法等感性趣欢迎关注我的个人公众号交流:bigsai


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3