给你一个 nodejs 版的思路,获取到browserID=1的cookie,对应验证码的base64和cookie传给前端,前端输入账号、密码和验证码,后台进行模拟登录。* browserID 对应一个用户,随机生成并存储 *
app.get("/getCaptchaData", async (req, res, next) => {
let Request = require("request-promise")
let jar = Request.jar()
let Http = Request.defaults({
jar,
pool: {
maxSockets: 5000
}
})
const baseUrl = `http://jwgl.thxy.edu.cn`
Http({
uri: baseUrl,
resolveWithFullResponse: false
}).then(() => {
let cookie = jar.getCookieString(baseUrl) + "; browserID=1"
Http({
uri: `${baseUrl}/yzm?d=${Date.now()}`,
encoding : null,
headers: {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"content-type": "image/jpeg",
cookie
}
}).then(buffer => {
let base64 = `data:image/jpeg;base64,${Buffer.from(buffer, "utf-8").toString("base64")}`
res.json({
errcode: 0,
errmsg: "ok",
data: {
cookie,
base64
}
})
}).catch(() => {
res.json({
errcode: -1,
errmsg: "系统异常,请稍候再试",
data: null
})
})
}).catch(() => {
res.json({
errcode: -1,
errmsg: "系统异常,请稍候再试",
data: null
})
})
})
app.get("/login", async (req, res, next) => {
let Request = require("request-promise")
let jar = Request.jar()
let Http = Request.defaults({
jar,
pool: {
maxSockets: 5000
}
})
const Base64 = require("./base64")
let formData = req.query
formData.pwd = Base64.encode(formData.pwd)
Http({
uri: `http://jwgl.thxy.edu.cn/login!doLogin.action`,
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
cookie: formData.cookie
},
formData,
resolveWithFullResponse: true
}).then(body => {
res.json({
errcode: 0,
errmsg: "ok",
formData,
data: body
})
}).catch(() => {
res.json({
errcode: -1,
errmsg: "系统异常,请稍候再试",
data: null
})
})
})