开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
SWVerifyCode
/
JavaScript
/
SWVerifyCode.js
SWVerifyCode
/
JavaScript
/
SWVerifyCode.js
SWVerifyCode.js 5.07 KB
一键复制 编辑 原始数据 按行查看 历史
WindRunnerMax 提交于 2020年02月21日 12:35 +08:00 . README
// ==UserScript==
// @name SWVerifyCode
// @namespace http://tampermonkey.net/
// @version 1.1
// @description try to take over the world!
// @author Czy
// @match http://jwgl.sdust.edu.cn/jsxsd/
// @match http://jwgl.sdust.edu.cn/
// @grant none
// @github https://github.com/WindrunnerMax/SWVerifyCode
// @date 2020年02月18日
// ==/UserScript==
/**
* 配置账号密码信息(选填)
*/
var username = ""; //账号
var password = "" ; //密码
var autologin = false; //自动登录
var height = 22;
var width = 62;
var rgbThres = 150;
var charMap = {
'1' : "111100111110000111110000111111100111111100111111100111111100111111100111111100111111100111110000001110000001",
'2' : "100000111000000011111111001111111001111111001111110011111000111110011111100111111001111111000000001000000001",
'3' : "100000111000000011111110001111111001111110011110000111110000011111110001111111001111110001100000011100000111",
'b' : "001111111001111111001111111001000011000000001000111000001111100001111100001111100000111000000000001001000011",
'c' : "111111111111111111111111111110000011100000011000111111001111111001111111001111111000111111100000011110000011",
'm' : "111111111111111111111111111001000011000000000000111000001111001001111001001111001001111001001111001001111001",
'n' : "111111111111111111111111111001100001001000000000011100000111100001111100001111100001111100001111100001111100",
'v' : "111111111111111111111111111111111011001110011001110011001110011100100111100100111100100111110001111110001111",
'x' : "111111111111111111111111111001110011001110011100100111110001111110001111110001111100100111001110011001110011",
'z' : "111111111111111111111111111000000011000000011111100111111001111110011111100111111001111111000000011000000011"
};
function binaryImage(ctx){
let imageData = ctx.getImageData(0, 0, width, height).data;
var imgArr = [];
for(let x=0; x<width ; ++x){
for(let y=0;y<height;++y){
if(!imgArr[y]) imgArr[y] = [];
if(x === 0 || y === 0 || x === width-1 || y === height - 1){
imgArr[y][x] = 1;
continue;
}
var i = (y*width + x)*4;
if(imageData[i] < rgbThres && imageData[i + 1] < rgbThres && imageData[i + 2] < rgbThres){
imgArr[y][x] = 0;
}else{
imgArr[y][x] = 1;
}
}
}
return imgArr;
}
function removeByLine(imgArr){
var xCount = imgArr[0].length;
var yCount = imgArr.length;
for(let i = 1;i<yCount-1;++i){
for(let k = 1;k<xCount-1;++k){
if(imgArr[i][k] === 0){
let countOne = imgArr[i][k-1] + imgArr[i][k+1] + imgArr[i-1][k]+imgArr[i+1][k];
if(countOne > 2) imgArr[i][k] = 1;
}
}
}
return imgArr;
}
function cutImg(imgArr,arrX,arrY,n){
var imgArrArr = [];
for(let i=0;i<n;++i){
var unitImg = [];
for(let j = arrY[i][0];j<arrY[i][1];++j){
if(!unitImg[j]) unitImg[j-arrY[i][0]] = [];
for(let k = arrX[i][0];k<arrX[i][1];++k){
unitImg[j-arrY[i][0]][k-arrX[i][0]] = imgArr[j][k];
}
}
imgArrArr.push(unitImg);
}
return imgArrArr;
}
function getString(imgArr){
var s = "";
imgArr.forEach((vx) => {
vx.forEach((vy) => {
s += vy;
})
})
return s;
}
function comparedText(s1,s2){
var percent = 0;
var n = s1.length;
for(let i = 0;i<n;++i) s1[i] === s2[i] ? ++percent : "";
return percent;
}
function matchCode(imgArrArr){
var record = "";
imgArrArr.forEach((imgArr) => {
let maxMatch = 0;
let tempRecord = "";
for(let char in charMap){
let percent = comparedText(getString(imgArr),charMap[char]);
if(percent > maxMatch){
maxMatch = percent;
tempRecord = char;
}
}
record += tempRecord;
})
return record;
}
function showImg(imgArr){
var s = "";
imgArr.forEach((vx) => {
vx.forEach((vy) => {
s += vy;
})
s += "\n";
})
console.log(s);
}
function main(){
var img = document.getElementById("SafeCodeImg");
const canvas = document.createElement("canvas");
canvas.width = width;
canvas.height = height;
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var imgArr = binaryImage(ctx);
imgArr = removeByLine(imgArr);
var imgArrArr = cutImg(imgArr,[[4, 13], [14, 23], [24, 33], [34, 43]],[[4, 16], [4, 16], [4, 16], [4, 16]],4);
showImg(imgArr);
var result = matchCode(imgArrArr);
console.log("识别为:",result);
document.getElementById("RANDOMCODE").value = result;
document.getElementById("userAccount").value = username;
document.getElementById("userPassword").value = password;
if (autologin) document.getElementById("btnSubmit").click();
}
(function() {
'use strict';
var img = document.getElementById("SafeCodeImg");
img.onload = function(){main()};
img.src = img.src;
})();
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

强智教务系统验证码识别
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/WindrunnerMax/SWVerifyCode.git
git@gitee.com:WindrunnerMax/SWVerifyCode.git
WindrunnerMax
SWVerifyCode
SWVerifyCode
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /