热点排行

图鉴识别平台例子AIWORK软件成品实例

432

主题

-245

回帖

2259

积分

管理员

积分
2259

67a31c278702c.png

1.png

详细版:

function sendImageToAPI(username, password, typeid) {
    var url = "http://api.ttshitu.com/predict"; // API地址


    // 截取全屏图像并裁剪验证码区域
    var img = screen.screenShotFull().cutImagePercent(0.17, 0.412, 0.83, 0.57).toBase64(); 


    // 准备POST请求的数据
    var postData = JSON.stringify({
        username: username,
        password: password,
        typeid: typeid,
        image: img // Base64 编码的图像
    });


    // 使用OKHttp发送JSON请求并返回响应
    return new okHttp().json(url, postData);
}


// 使用该函数的示例
var response = sendImageToAPI("账号", "密码", ID这个是数字不要弄错了);
printl(response); // 打印返回的结果


// 解析JSON响应并提取"result"字段的值
var parsedResponse = JSON.parse(response);
var result = parsedResponse.data.result;


// 假设result是一个数组,例如["123", "456"]
// 将字符串转换为数字
var x = Number(result[0]);
var y = Number(result[1]);


printl(`原始X: ${x}, 原始Y: ${y}`);


// 假设您有一个基准坐标或者偏移量,这里我用基准坐标baseX和baseY作为示例
// 请根据实际情况替换下面的基准坐标
var baseX = 100; // 示例基准X坐标
var baseY = 200; // 示例基准Y坐标


// 计算实际的X和Y坐标
var X坐标 = x + baseX;
var Y坐标 = y + baseY;


printl(`实际X: ${X坐标}`);
printl(`实际Y: ${Y坐标}`);


// 打印结果
printl(`X: ${X坐标}, Y: ${Y坐标}`);

如果想简单点调用的可以这样:

function sendImageToAPI(username, password, typeid) {
    // 定义API的URL地址
    var url = "http://api.ttshitu.com/predict";

    // 截取全屏图像并裁剪验证码区域,然后将其转换为Base64编码
    var img = screen.screenShotFull().cutImagePercent(0.17, 0.412, 0.83, 0.57).toBase64();

    // 准备POST请求的数据,包括用户名、密码、验证码类型ID和Base64编码的图像
    var postData = JSON.stringify({
        username: username,
        password: password,
        typeid: typeid,
        image: img // Base64 编码的图像
    });

    // 使用OKHttp发送JSON请求并返回响应
    return new okHttp().json(url, postData);
}

// 调用sendImageToAPI函数,传入用户名、密码和验证码类型ID
var response = sendImageToAPI("账号", "密码", ID这个是数字不要弄错了);

// 解析API返回的JSON响应
var parsedResponse = JSON.parse(response);

// 提取JSON响应中的"result"字段的值
var result = parsedResponse.data.result;

// 将字符串转换为数字
var x = Number(result[0]);
var y = Number(result[1]);

// 定义基准坐标
var baseX = 100; // 示例基准X坐标
var baseY = 200; // 示例基准Y坐标

// 计算实际的X和Y坐标,通过将基准坐标与解析得到的验证码坐标相加
var X坐标 = x + baseX;
var Y坐标 = y + baseY;

// 打印计算得到的实际X和Y坐标
printl(`X: ${X坐标}, Y: ${Y坐标}`);
  1. 函数定义:

    • sendImageToAPI(username, password, typeid):定义了一个名为sendImageToAPI的函数,该函数接受三个参数:用户名、密码和验证码类型ID。
  2. API URL:

    • var url = "http://api.ttshitu.com/predict";:定义了API的URL地址,该地址用于发送验证码识别请求。
  3. 截取和裁剪图像:

    • var img = screen.screenShotFull().cutImagePercent(0.17, 0.412, 0.83, 0.57).toBase64();:这段代码执行了三个主要操作:
      • screen.screenShotFull():截取整个屏幕的图像。
      • cutImagePercent(0.17, 0.412, 0.83, 0.57):根据百分比裁剪图像,提取验证码区域。这里的参数表示裁剪区域的左上角和右下角的百分比坐标。
      • toBase64():将裁剪后的图像转换为Base64编码格式,以便于通过POST请求发送。
  4. 准备POST数据:

    • var postData = JSON.stringify({ username: username, password: password, typeid: typeid, image: img });:将用户名、密码、验证码类型ID和Base64编码的图像封装成一个JSON对象,并将其转换为字符串格式,以便于HTTP请求。
  5. 发送POST请求:

    • return new okHttp().json(url, postData);:使用okHttp库发送一个POST请求,请求的URL地址和数据分别为url和postData。该函数返回API的响应。
  6. 调用函数并处理响应:

    • var response = sendImageToAPI("gmgne", "As123456", 27);:调用sendImageToAPI函数,传入具体的用户名、密码和验证码类型ID,并将API的响应存储在response变量中。
    • var parsedResponse = JSON.parse(response);:将API返回的JSON字符串解析为JavaScript对象。
    • var result = parsedResponse.data.result;:从解析后的对象中提取data.result字段的值,该字段通常包含验证码识别的结果。
  7. 字符串转数字:

    • var x = Number(result[0]);:将result数组中的第一个元素(假设是一个字符串)转换为数字,并赋值给x。
    • var y = Number(result[1]);:将result数组中的第二个元素转换为数字,并赋值给y。
  8. 定义基准坐标:

    • var baseX = 100;:定义了一个基准X坐标,用于后续计算。
    • var baseY = 200;:定义了一个基准Y坐标,用于后续计算。
  9. 计算实际坐标:

    • var X坐标 = x + baseX;:将基准X坐标与解析得到的X坐标相加,计算出实际的X坐标。
    • var Y坐标 = y + baseY;:将基准Y坐标与解析得到的Y坐标相加,计算出实际的Y坐标。

举报 回复

432

主题

-245

回帖

2259

积分

管理员

积分
2259
下载.mp4 (1.86 MB, 下载次数: 1301)

举报 回复

432

主题

-245

回帖

2259

积分

管理员

积分
2259
QQ录屏20250206162943.mp4 (13.09 MB, 下载次数: 1364)

举报 回复

0

主题

10

回帖

20

积分

新手上路

积分
20

图鉴识别平台例子AIWORK软件成品实例

学习了,实际操作里最花时间的往往不是写脚本,是把步骤拆到足够细,机器才能无歧义地执行。别把所有异常都当同一种处理,找不到元素和网络失败要分开,混在一起错误就全被吞了。操作序列完全相同、固定间隔,这两点比一天发多少条更容易被判定成自动化。我补充一个点:权限没开全的话,后面跑得再稳也白搭,这个我吃过亏。有没有能跟着做的例子?

举报 回复

0

主题

10

回帖

20

积分

新手上路

积分
20

图鉴识别平台例子AIWORK软件成品实例

楼主这个思路可以,坐标兜底一定要按分辨率分组存,换机型之后你会感谢当初没写死。别把所有异常都当同一种处理,找不到元素和网络失败要分开,混在一起错误就全被吞了。实际操作里最花时间的往往不是写脚本,是把步骤拆到足够细,机器才能无歧义地执行。

举报 回复

0

主题

1

回帖

2

积分

新手上路

积分
2

图鉴识别平台例子AIWORK软件成品实例

这个代码是用来识别验证码的,用的是啥库来着?还有那个 `screen.screenShotFull()` 是自己写的还是现成的?感觉挺方便的。能跑起来挺不错的!不过我这边用的是 Tesseract,你们用的是第三方 API 吗?

举报 回复

0

主题

10

回帖

20

积分

新手上路

积分
20

图鉴识别平台例子AIWORK软件成品实例

这个有点意思,要判断值不值得投入,就看这个场景一天重复多少次,一天十次的自动化维护成本可能比手工还高。数据先落原始文件再处理,中间出问题能回溯,内存里转两次格式出错就没救了。权限那块要单独开无障碍和电池白名单,否则跑到一半会被系统杀掉,最常见的问题就是这个。实际操作里最花时间的往往不是写脚本,是把步骤拆到足够细,机器才能无歧义地执行。请问具体用的什么设备跑的?

举报 回复

0

主题

5

回帖

10

积分

新手上路

积分
10

图鉴识别平台例子AIWORK软件成品实例

看图感觉这个验证码识别的代码挺详细的,用的是.ttshitu.com的API。那个截图和裁剪的部分挺关键的,0.17到0.83,0.412到0.57,这两个坐标记得修改成实际的验证码位置。这个API接口需要用户名和密码,还有类型ID,具体怎么来的你得自己搞清楚。代码里用的okHttp库,发送的是JSON格式的数据,最后返回的是识别结果。你自己测试的时候,确保验证码图片的格式和大小是API要求的,不然可能会识别不准。

举报 回复

0

主题

3

回帖

6

积分

新手上路

积分
6

图鉴识别平台例子AIWORK软件成品实例

这代码挺清晰的,但是有个细节得注意,你截取的验证码区域比例和坐标都写死在代码里了,万一验证码位置变了咋办?最好能动态调整,或者增加一个配置文件,这样灵活性更高。你们用的是哪个API呢?效果咋样?

举报 回复

本文标签:quot 坐标 var 基准 验证
随机推荐
随机推荐每次刷新 · 热帖 + 双随机栏 各 50 篇
热帖浏览量最高
随机换个角度看
随机随便看看
随机会员刷新换一批