目录

  • 前言
    • 分析
    • 代码过程
    • 結果
    • 完整代码

前言

demo比较简单,逆向难点:rsa加密,图片验证码

分析

我们模拟登录,请求一下

红框内是我们提交的参数,password看上去应该是rsa加密,captcha是验证码,keysTime是一个时间戳,account是手机号。

全局搜索一个参数,点进去找找加密位置。

找到加密位置,下断点,再次请求后,开始调式。


搜索g_param,找到time生成方法,看上去像是写在网页里面,在网页上搜索一下。


果然是保存在网页中,上面应该是rsa公钥,一举两得,下面接着逆向password。

搜索password,找到加密位置。

继续跟进。

这里有两种方法:1,把加密方法全部扣下来 2,安装node第三方库node-jsencrypt,建议使用第二种,方便省事。

到此为止加密参数就算全部解析完毕,下面讲验证码。


随机提取一个验证码,保存到本地。


因为验证码不算复杂,用ddddocr识别即可,识别率还可以。

代码过程

首先我们把网页中的信息提取出来:key、key_time、图片链接

import requests
from lxml import etreesession = requests.session()
headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
}def get_params():url = 'https://www.yiban.cn/login?go=https%3A%2F%2Fwww.yiban.cn%2F'res = session.get(url,headers=headers).texthtml = etree.HTML(res)key = html.xpath('//div[@class="login-cont"]/ul/@data-keys')[0] # 秘钥time = html.xpath('//div[@class="login-cont"]/ul/@data-keys-time')[0] #时间戳img = html.xpath('//img[@class="captcha"]/@src')[0]img_url = 'https://www.yiban.cn/' + img  # 图片链接img_res = requests.get(img_url).content flie_name = './img/VerifyCode.png' # 路径# 保存验证码with open(flie_name, 'wb') as f:f.write(img_res)print(key,time,img_url)return key, time

拿到上面数据之后,该加密的加密,该识别的识别

import ddddocr
import requests
from lxml import etree
import execjs
from loguru import loggerlogger.add("./logs/yiban.log", rotation='00:00', level="WARNING", encoding='utf-8')session = requests.session()
headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
}def recognize(image):ocr = ddddocr.DdddOcr()with open(image, 'rb') as f:img_bytes = f.read()res = ocr.classification(img_bytes)return resdef spider(user,pwd):url = 'https://www.yiban.cn/login/doLoginAjax'key,time = get_params() captcha = recognize('./img/VerifyCode.png')  # 识别验证码logger.debug(f'验证码:{captcha}')with open('yiban.js','r') as f:f_data = f.read()js_data = execjs.compile(f_data).call('EncryptPassword',key,pwd)  # js加密logger.debug(f'密码加密:{js_data}')data = {'account': user,'password':js_data,'captcha': captcha,'keysTime': time,}res = session.post(url,headers=headers,data=data).json()logger.debug(f'结果:{res}')

时间戳后台会验证,所以要一定用session

結果

因为我没注册账号,为了测试,随便填写的手机号,报以下错误,说明逆向思路没问题。

如果不用session,结果会怎样呢?


不多解释,不懂的,可以看下我那篇讲解session的文章,大家找一下。

完整代码

import ddddocr
import requests
from lxml import etree
import execjs
from loguru import loggerlogger.add("./logs/yiban.log", rotation='00:00', level="WARNING", encoding='utf-8')session = requests.session()
headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
}def recognize(image):ocr = ddddocr.DdddOcr()with open(image, 'rb') as f:img_bytes = f.read()res = ocr.classification(img_bytes)return resdef get_params():url = 'https://www.yiban.cn/login?go=https%3A%2F%2Fwww.yiban.cn%2F'res = session.get(url,headers=headers).texthtml = etree.HTML(res)key = html.xpath('//div[@class="login-cont"]/ul/@data-keys')[0] # 秘钥time = html.xpath('//div[@class="login-cont"]/ul/@data-keys-time')[0] #时间戳img = html.xpath('//img[@class="captcha"]/@src')[0]img_url = 'https://www.yiban.cn/' + img  # 图片链接img_res = requests.get(img_url).contentflie_name = './img/VerifyCode.png' # 路径# 保存验证码with open(flie_name, 'wb') as f:f.write(img_res)logger.debug(f'key:{key},key_time:{time},img_url:{img_url}')return key, timedef spider(user,pwd):url = 'https://www.yiban.cn/login/doLoginAjax'key,time = get_params()captcha = recognize('./img/VerifyCode.png')logger.debug(f'验证码:{captcha}')with open('yiban.js','r') as f:f_data = f.read()js_data = execjs.compile(f_data).call('EncryptPassword',key,pwd)logger.debug(f'密码加密:{js_data}')data = {'account': user,'password':js_data,'captcha': captcha,'keysTime': time,}res = requests.post(url,headers=headers,data=data).json()logger.debug(f'结果:{res}')user = '18576543215'
pwd = '######'
spider(user,pwd)

【爬虫进阶】易班登录加密逆向相关推荐

  1. python3爬虫进阶之自动登录网易云音乐并爬取指定歌曲评论

    ** python3爬虫进阶之自动登录网易云音乐并爬取指定歌曲评论 ** 一.访问网易云首页,找到所需元素的位置 用浏览器打开网易云首页https://music.163.com/之后,发现我们要找的 ...

  2. 如何使用java调用易班登录API获取个人账号信息(一)

    关于这篇文章: 笔者近期和小伙伴接了校方的一个小小小项目,要求使用易班APP的账号,这意味着需要调用易班官方的登录API.下面介绍使用java语言作为后端,在自己的网站如何接入易班的登录API(轻应用 ...

  3. python自动点赞软件_python requests 简单实现易班登录,自动点赞,评论,发表

    小编能力有限,本文纯属瞎编,如有雷同,你去打辅导员涩 一.前戏 有个操蛋,操蛋,操蛋的辅导员促使小编成长,原因:易班需要活跃度,辅导员安排班上每个人必须去易班上 写文章,写评论,发投票...  我觉得 ...

  4. php实现易班登录,简单的易班申请授权以及使用方式

    //以下三个变量内容需换成本应用的$APPID = ""; //在open.yiban.cn管理中心的AppID$APPSECRET = ""; //在open ...

  5. 爬虫进阶学习之路---js逆向登录

    js逆向: 1.凡科网(https://i.fkw.com) 通过登录页面练习 再练习的过程中发现 我在登录错误密码之后会出现滑块验证(瞬间感觉头大了 但是学习吗 硬着头皮上了)还是常规的操作 打开 ...

  6. python爬虫加密空间_Python爬虫进阶必备 | XX同城加密分析

    目标网站: aHR0cHM6Ly9wYXNzcG9ydC41OC5jb20vbG9naW4vP3BhdGg9aHR0cHMlM0EvL2Z6LjU4LmNvbS8mUEdUSUQ9MGQxMDAwMD ...

  7. python爬虫论文参考文献格式_Python爬虫进阶必备 | XX文学加密分析实例

    目标网站: aHR0cHM6Ly93d3cuYWxpd3guY29tLmNuL3JlYWRlcj9iaWQ9NjgxMzkyMyZjaWQ9Njc0MTc0 抓包分析与加密定位 这个网站上一篇文章的加 ...

  8. 易班APP登录密码加密、sig逆向分析

    1.最近闲来无事,听说有一个易班app登录好练手,就去试了一下看看. 先抓个包看看 然后使用了腾讯的壳,脱一下,我这边用的是BlackDex64. 脱完壳之后导出来直接导出来拖到jadx,就是现在这个 ...

  9. APP逆向之易班(第一篇)

    原本是不想写的,因为这个APP的这个版本其实很简单,后来想了下觉得还行记录一下吧.主要是记录每一次逆向能加深其中学到的知识点内容.也算是给自己一个交代,无论以后还是菜鸡也好还是成了大牛也罢,至少这一刻 ...

最新文章

  1. html弹出输入语言框,JavaScript如何弹出输入窗口?
  2. JavaScript中的call、apply、bind深入理解
  3. zabbix2.4.5自带mysql监控
  4. 淮北师范18-19计算机科学与技术大类实验课试卷
  5. Netty工作笔记0031---NIO零拷贝应用案例
  6. 和思科Boss四年后重逢
  7. 对Vue生命周期的一些简单见解
  8. Docker国内Yum源和国内镜像仓库
  9. 拓端tecdat|R语言分布滞后线性和非线性模型(DLNM)分析空气污染(臭氧)、温度对死亡率时间序列数据的影响
  10. 【UVA10129】Play on Words(欧拉回路+有向图连通性判断+打印欧拉道路)
  11. 微信小程序简洁登录页面(附源码)
  12. 澳鹏Appen收购Quadrant:移动定位数据业务进一步增强
  13. MySQL安装教程 + 安装包
  14. 即时通信和实时通信的区别
  15. python小程序嵌入excel_用原生的方式操作Excel,Python玩转Excel神器xlsxwriter详解!...
  16. 2021年最新易支付修复版源码支持微信支付宝官方接口和码支付网信钱包等/个人也能用的易支付商户系统
  17. 并发量与qps的区别和联系,以及系统吞吐量的介绍
  18. c语言整形符号位_C语言中整型无符号二进制数的表示问题
  19. 安产链为安全生产保驾护航 | FinTechathon 安产链团队
  20. A direct formulation for sparse PCA using semidefinite programming

热门文章

  1. sql中替换字段的部分字符
  2. 算法:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.
  3. EasyExcel java实现excel简单读写操作(快速上手,复制粘贴即可)
  4. 深信服easyconnect下载_深信服新一代数据防泄密解决方案荣登数安天下榜中榜
  5. 网上一位仁兄关于项目管理的总结
  6. CentOS ping本机ip,能ping通,外网ping不通
  7. 一个屌丝程序员的青春(三二三)
  8. 微信小程序:小程序开发中申请优惠券步骤
  9. 【P48】锂电池充电和电源自动切换
  10. React二级路由的实现