爬虫案例十三js逆向模拟登录中大网校
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、网站分析
- 二、代码
前言
提示:这里可以添加本文要记录的大概内容:
js 逆向模拟登录中大网校
提示:以下是本篇文章正文内容,下面案例可供参考
一、网站分析







二、代码
js代码
var JSEncrypt = require("node-jsencrypt")var encryptFn = function(e) {var o = new JSEncrypt;return o.setPublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA5Zq6ZdH/RMSvC8WKhp5gj6Ue4Lqjo0Q2PnyGbSkTlYku0HtVzbh3S9F9oHbxeO55E8tEEQ5wj/+52VMLavcuwkDypG66N6c1z0Fo2HgxV3e0tqt1wyNtmbwg7ruIYmFM+dErIpTiLRDvOy+0vgPcBVDfSUHwUSgUtIkyC47UNQIDAQAB"),o.encrypt(e)
}
python代码
import base64
import requests
import json
import execjs
def base64_api(uname, pwd, img, typeid):with open(img, 'rb') as f:base64_data = base64.b64encode(f.read())b64 = base64_data.decode()data = {"username": uname, "password": pwd, "typeid": typeid, "image": b64}result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)if result['success']:return result["data"]["result"]else:# !!!!!!!注意:返回 人工不足等 错误情况 请加逻辑处理防止脚本卡死 继续重新 识别return result["message"]return ""session = requests.session()
session.headers = {"":""# 头自行添加
}url = "https://user.wangxiao.cn/login"
param = {"url": "{{url}}"
}
resp = session.get(url,params=param)
# print(resp.headers) # 'Set-Cookie': 'sessionId=1741766931245; path=/'yzm_url = "https://user.wangxiao.cn/apis//common/getImageCaptcha"
yzm_resp = session.post(yzm_url,headers={"Content-Type":"application/json;charset=UTF-8"
})with open("tu.jpg",mode="wb") as f:f.write(base64.b64decode(yzm_resp.json()["data"].split(',')[-1]))yzm_code = base64_api(uname='你的图鉴账号', pwd='你的图鉴密码',img="./tu.jpg",typeid=3)
print(yzm_code)get_time_url = "https://user.wangxiao.cn/apis//common/getTime"
get_time_resp = session.post(get_time_url,headers={"Content-Type":"application/json;charset=UTF-8"
})
# r_time = get_time_resp.json()["data"]login_url = "https://user.wangxiao.cn/apis//login/passwordLogin"
username = "你的中大网校账号"
pwd = "你的中大网校密码"
r_time = get_time_resp.json()["data"]
f = open("wx.js",mode='r',encoding='utf-8')
js_code = f.read()
js = execjs.compile(js_code)
jm_pwd = js.call("encryptFn",pwd + r_time)
print(pwd + r_time)
data = {"imageCaptchaCode": yzm_code,"password": jm_pwd,"userName": username
}
login_resp = session.post(login_url,data=json.dumps(data,separators=(',', ':')),headers={"Content-Type":"application/json;charset=UTF-8"
})
login_data = login_resp.json()['data']
session.cookies['userInfo'] = json.dumps(login_data,separators=(',', ':'))
session.cookies['token'] = login_data['token']
session.cookies['UserCookieName'] = login_data['userName']
session.cookies['OldUsername2'] = login_data['userNameCookies']
session.cookies['OldUsername'] = login_data['userNameCookies']
session.cookies['OldPassword'] = login_data['passwordCookies']
session.cookies['UserCookieName_'] = login_data['userName']
session.cookies['OldUsername2_'] = login_data['userNameCookies']
session.cookies['OldUsername_'] = login_data['userNameCookies']
session.cookies['OldPassword_'] = login_data['passwordCookies']
session.cookies[login_data['userName'] + "_exam"] = login_data['sign']q_url = "https://ks.wangxiao.cn/TestPaper/getPaperRuleQuestions"
q_data = '{"id":"21F74E2F-44FA-4550-B481-5EF80A4BA09F"}'
q_resp = session.post(q_url,data=q_data,headers={"Content-Type": "application/json;charset=UTF-8","Host": "ks.wangxiao.cn","Origin": "https://ks.wangxiao.cn"
})
print(q_resp.text)

相关文章:
爬虫案例十三js逆向模拟登录中大网校
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、网站分析二、代码 前言 提示:这里可以添加本文要记录的大概内容: js 逆向模拟登录中大网校 提示:以下是本篇文章正文内…...
WPF窗口读取、显示、修改、另存excel文件——CAD c#二次开发
效果如下: using System.Data; using System.IO; using System.Windows; using Microsoft.Win32; using ExcelDataReader; using System.Text; using ClosedXML.Excel;namespace IfoxDemo {public partial class SimpleWindow : Window{public SimpleWindow(){Initi…...
01 | Go 项目开发极速入门课介绍
提示: 所有体系课见专栏:Go 项目开发极速入门实战课。 你好,欢迎学习本课程。本课程是一个 Go 项目开发极速入门课程。旨在帮助刚学习完 Go 基础语法的 Go 开发者,快速掌握如何开发一个功能相对全面的 Go 项目。 根据课程设计目标…...
Spring Cloud LoadBalancer 原理与实践
背景 当前我们的微服务架构基于Spring Cloud Alibaba体系,通过定制NacosRule实现了跨集群访问和灰度发布功能。但随着Spring Cloud与Nacos版本升级,官方已弃用Ribbon转向LoadBalancer,这要求我们完成以下技术升级: 负载均衡机制…...
Vmware下的openEuler
1.下载openEuler操作系统镜像 https://repo.openeuler.org/openEuler-20.03-LTS/ISO/ 2.在VM新建虚拟机 3.虚拟机联网 我是出现了没有网络,ping不通的问题 参考:https://blog.csdn.net/FHY26828/article/details/140941234 修改文件: 在…...
spring security学习入门指引
学习 Spring Security 可以从以下几个方面逐步深入,结合理论与实践,以下是具体的学习路径建议: 1. 基础准备 • 熟悉 Spring 框架: 先掌握 Spring Core、Spring MVC 和 Spring Boot 的基础,理解依赖注入(D…...
【瞎折腾/Dify】使用docker离线部署Dify
文章目录 说在前面安装Docker(外网)获取Dify源码(外网)拉取docker镜像(外网)导出镜像(内网)导入镜像(内网)运行问题 说在前面 外网操作系统:windows内网操作系统:ubuntu外网docker desktop版本:4.29.0外网docker版本:version 26.0…...
Java EE Web环境安装
Java EE Web环境安装 一、JDK安装与测试(Windows环境) 1. 安装JDK 官网下载:Oracle JDK(选择Windows x64 Installer)双击安装包,按向导完成安装 2. 环境变量配置 右键【此电脑】→【属性】→【高级…...
Node.js中HTTPS模块应用详解
1. HTTPS 模块的概念 HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,通过 SSL/TLS 协议对数据进行加密,确保数据在传输过程中不被窃取或篡改。在 Node.js 中,https 模块提供了创建 HTTPS 服务器和客户…...
我测试了AI搜索:试图替代谷歌搜索
随着人工智能工具的不断进步,探讨它们是否能够取代传统搜索引擎如谷歌,已成为一个引人入胜的话题。 有一点是确定的:并非所有的人工智能都可用。它们需要的主要特性是能够访问互联网以获取最新信息,这就排除了Anthropic的Claude。 人工智能在某些方面可以增强或改进谷歌搜…...
大语言模型基础之‘显存优化‘
上一篇可扩展的训练技术(二)中,我们介绍了零冗余优化器(Zero Redundancy Optimizer, Zero),该技术由DeepSpeed代码库提出,主要用于解决数据并行中的模型冗余技术,即在数据并行训练中,每个GPU上都…...
【Nexus】Maven 私服搭建以及上传自己的Jar包
Nexus 安装 docker run -d -uroot --name nexus3 --restartalways -p 8081:8081 -v /data/nexus-data/blobs:/nexus-data/blobs -v /etc/localtime:/etc/localtime sonatype/nexus3这里也提供一下docker-composer的方法 .env 文件 VERSIONlatest CONTAINER_NAMECONTAINER_N…...
css模拟雷达扫描动画
<div class"radar-scan"><div class"radar-container" /></div> 样式: .radar-scan {background-image: linear-gradient(0deg,transparent 24%,rgba(32, 255, 77, 0.15) 25%,rgba(32, 255, 77, 0.15) 26%,transparent 27%,…...
冠珠瓷砖×郭培“惟质致美”品质主题片上映,讲述高定艺术背后的致美品质故事
168年前,一位英国服装设计师,开创了「高级定制」的先河。时至今日,从服装到各行各业「高级定制」始终代表着对完美的极致追求,成为了行业至高境界的象征。 被誉为“中国高定第一人”,高级定制服装设计师郭培࿰…...
【Java 基础(人话版)】进制转换
进制的简单介绍 整数可以使用四种不同的进制表示方式: 二进制 (Binary):由 0 和 1 组成,满 2 进 1,以 0b 或 0B 开头表示。十进制 (Decimal):由 0-9 组成,满 10 进 1,是最常用的数值表示方式。…...
3DS模拟器使用(pc+安卓)+金手指+存档互传
1、引言 3ds模拟器已经能够在手机端近乎完美模拟了,那么多的3ds游戏,比玩手机游戏舒服多了。 本人是精灵宝可梦的老玩家,从第一世代就一直在玩,刚耍完NDS的第五世代,黑白系列。现在到宝可梦XY了,需要在3d…...
SpaceClaim二次开发(4)
目录 第五章 Storing Custom Data (存储自定义数据) 5.1 文档属性 5.2 自定义属性 5.3 属性传播 第六章 Identifying Objects in ACIS and Parasolid Files(识别ACIS和Parasolid文件中的对象) 6.1 导出期间的标识符 6.2 导入和…...
Leetcode3340:检查平衡字符串
题目描述: 给你一个仅由数字 0 - 9 组成的字符串 num。如果偶数下标处的数字之和等于奇数下标处的数字之和,则认为该数字字符串是一个 平衡字符串。 如果 num 是一个 平衡字符串,则返回 true;否则,返回 false。 代码…...
Java多线程基石—内存模型
Java Memory Model Java内存模型(JMM),定义了线程如何与内存交互及线程间的可见性、有序性和原子性。 JMM屏蔽了各种硬件和操作系统的访问差异,保证Java程序在各种平台下对内存的访问都能保证一致效果。 1 JMM 可见性 一个线程…...
ArcGIS助力水文分析:数据处理、地图制作与流域特征提取
在水文水环境保护中,对于信息的采集、处理和分析是关键步骤。水文水环境及其相关数据均具有空间分布特征,传统的方法难以发挥作用。地理信息系统(GIS)强大的空间数据管理和分析功能,在空间信息处理上有独到的优势&…...
从以太网 II 到 VLAN 和 Jumbo Frame:数据帧格式解读
以太网数据帧是计算机网络通信的基本单位,在不同的应用场景中,它的格式有所不同。根据协议标准和用途,以太网数据帧主要包括以太网 II 帧、IEEE 802.3 帧、IEEE 802.1Q VLAN 帧等七种主要类型。为了更好地理解以太网的通信机制,我…...
X86 RouterOS 7.18 设置笔记六:端口映射(IPv4、IPv6)及回流问题
X86 j4125 4网口小主机折腾笔记五:PVE安装ROS RouterOS X86 RouterOS 7.18 设置笔记一:基础设置 X86 RouterOS 7.18 设置笔记二:网络基础设置(IPV4) X86 RouterOS 7.18 设置笔记三:防火墙设置(IPV4) X86 RouterOS 7.18 设置笔记四…...
将 IPoIB 驱动修改为仅使用 RC 模式
摘要 本文档详细介绍了将 Linux 内核中的 IPoIB(IP over InfiniBand)驱动修改为仅使用 RC(Reliable Connection,可靠连接)模式,并移除所有与 TCP/IP 和以太网相关部分的方法。通过这些修改,可以优化 IPoIB 驱动以适应特定的高性能计算场景,提高数据传输的可靠性和效率…...
热修复框架Tinker与Robust原理剖析
热修复框架Tinker与Robust原理剖析 一、热修复技术概述 1.1 什么是热修复 热修复(Hot Fix)是Android平台上的一种动态修复机制,它允许应用在不重新发布版本的情况下,动态修复线上bug。这种技术对于快速修复线上问题、降低用户流…...
69.Harmonyos NEXT图片预览组件应用实践(二):电商、内容与办公场景
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! Harmonyos NEXT图片预览组件应用实践(二):电商、内容与办公场景 文章目录 Harmonyos NEXT图片预览组件应用实践…...
C题库-判断水仙花数
【数据判断】 问题1:判断水仙花数,水仙花数是指一个三位数,其各位数字的立方和等于该数本身。 方法一: #include<stdio.h>int main(void){int num,Bit,Ten,Hundred;printf("Input a number:");scanf("%d&q…...
31.Harmonyos Next仿uv-ui 组件NumberBox 步进器组件异步操作处理
Harmonyos Next仿uv-ui 组件NumberBox 步进器组件异步操作处理 文章目录 Harmonyos Next仿uv-ui 组件NumberBox 步进器组件异步操作处理1. 组件介绍2. 效果展示3. 异步操作处理3.1 异步初始化3.2 异步值更新 4. 完整示例代码5. 知识点讲解5.1 异步操作基础5.2 异步操作中的状态…...
MIPI电平标准详解
一、MIPI电平的定义与核心特性 MIPI(Mobile Industry Processor Interface) 是由 MIPI联盟 制定的移动设备接口标准,涵盖摄像头(CSI)、显示屏(DSI)、射频(RFFE)等多个领…...
使用位运算实现加法、减法、乘法和除法
使用位运算实现加法、减法、乘法和除法是一个经典的计算机科学问题。位运算通常用于低级程序设计和性能优化中,以下是如何用位运算实现这些基本数学运算。 加法 加法可以通过以下步骤实现: def add(a, b):while b ! 0:# 使用异或得到不考虑进位的加法…...
深入解析Go语言Channel:源码剖析与并发读写机制
文章目录 Channel的内部结构Channel的创建过程有缓冲Channel的并发读写机制同时读写的可能性发送操作的实现接收操作的实现 并发读写的核心机制解析互斥锁保护环形缓冲区等待队列直接传递优化Goroutine调度 实例分析:有缓冲Channel的并发读写性能优化与最佳实践缓冲…...
