|
|
AIWROK软件手机短信采集按需采集
这个正则你要按需要重写一下
- /*
- 这个是获取手机短信的例子,
- 最近很多人用AIWORK怎么获取短信验证码,这样就不用去打开,然后一点一点的采集了。
- 其实AIwork是有很便捷的方式进验证码采集的,比如下面这段,按时间排序的短信验证码,这样就可以采集出验证码,
- 并且可以全部输入数字出来,有哪位朋友需要这段代码的请加群或是加我Q获取这段现成的代码。
- 下面是AIWORK演示代码操作:
- */
- // 定义一个函数,用于读取最新的短信
- function readLatestSms() {
- // 引入Android的ContentResolver和Uri类
- var ContentResolver = Packages.android.content.ContentResolver;
- var Uri = Packages.android.net.Uri;
- // 获取当前上下文的内容解析器
- var contentResolver = context.getContentResolver();
- // 指定短信内容的URI
- var smsUri = Uri.parse("content://sms/inbox");
- // 创建一个大小为4的字符串数组,用于指定查询的字段
- var projection = java.lang.reflect.Array.newInstance(java.lang.String, 4);
- projection[0] = "_id"; // 短信ID
- projection[1] = "address"; // 短信发送者地址
- projection[2] = "date"; // 短信发送日期
- projection[3] = "body"; // 短信内容
- // 按照日期降序排列
- var sortOrder = "date DESC";
- // 查询短信内容
- var cursor = contentResolver.query(smsUri, projection, null, null, sortOrder);
- // 检查游标是否有效并移动到第一条记录
- if (cursor != null && cursor.moveToFirst()) {
- // 获取发送者地址和短信内容的索引
- var addressIndex = cursor.getColumnIndex("address");
- var bodyIndex = cursor.getColumnIndex("body");
- // 获取发送者地址和短信内容
- var address = cursor.getString(addressIndex);
- var body = cursor.getString(bodyIndex);
- // 返回短信的发送者和内容
- return ("From: " + address + ", Content: " + body);
- cursor.close(); // 关闭游标
- } else {
- // 如果没有找到短信,返回提示信息
- return ("No SMS found.");
- }
- }
- // 调用函数,获取最新的短信内容并打印
- printl(readLatestSms());
- // 获取短信内容
- let smsContent = readLatestSms();
- // 打印短信内容
- printl(smsContent);
- // 定义正则表达式,用于匹配验证码(假设验证码在特定格式的短信中)
- let regex = /【新浪】(\d+)/;
- // 执行正则表达式匹配
- let match = regex.exec(smsContent);
- // 如果找到了匹配的验证码
- if (match) {
- let captchaCode = match[1]; // 提取验证码
- printl("验证码是:", captchaCode); // 打印验证码
- } else {
- printl("未能找到验证码"); // 如果未找到,打印提示信息
- }
复制代码
以下是代码的详细说明:
1. 引入必要的类
var ContentResolver = Packages.android.content.ContentResolver;
var Uri = Packages.android.net.Uri;
这里引入了Android的ContentResolver和Uri类,用于访问设备上的短信内容。
2. 获取内容解析器
var contentResolver = context.getContentResolver();
通过context.getContentResolver()获取当前上下文的内容解析器,用于查询短信数据。
3. 指定短信内容的URI
var smsUri = Uri.parse("content://sms/inbox");
指定了短信收件箱的URI,用于访问设备上的短信数据。
4. 定义查询字段
var projection = java.lang.reflect.Array.newInstance(java.lang.String, 4);
projection[0] = "_id"; // 短信ID
projection[1] = "address"; // 短信发送者地址
projection[2] = "date"; // 短信发送日期
projection[3] = "body"; // 短信内容
定义了一个字符串数组,用于指定查询的字段,包括短信ID、发送者地址、发送日期和短信内容。
5. 排序方式
var sortOrder = "date DESC";
按照短信的发送日期降序排列,确保最新的短信排在最前面。
6. 查询短信内容
var cursor = contentResolver.query(smsUri, projection, null, null, sortOrder);
使用contentResolver.query()方法查询短信内容,返回一个游标对象。
7. 检查并处理查询结果
if (cursor != null && cursor.moveToFirst()) {
var addressIndex = cursor.getColumnIndex("address");
var bodyIndex = cursor.getColumnIndex("body");
var address = cursor.getString(addressIndex);
var body = cursor.getString(bodyIndex);
return ("From: " + address + ", Content: " + body);
cursor.close(); // 关闭游标
} else {
return ("No SMS found.");
}
检查游标是否有效并移动到第一条记录,然后获取发送者地址和短信内容,最后返回短信的发送者和内容。如果没有找到短信,则返回提示信息。
8. 调用函数并打印结果
printl(readLatestSms());
let smsContent = readLatestSms();
printl(smsContent);
调用readLatestSms()函数获取最新的短信内容,并打印出来。
9. 使用正则表达式提取验证码
let regex = /【新浪】(\d+)/;
let match = regex.exec(smsContent);
if (match) {
let captchaCode = match[1];
printl("验证码是:", captchaCode);
} else {
printl("未能找到验证码");
}
定义了一个正则表达式,用于匹配特定格式的短信中的验证码。如果找到匹配的验证码,则提取并打印出来;否则,打印提示信息。
总结
这段代码的主要功能是从Android设备的短信收件箱中读取最新的短信,并通过正则表达式提取出验证码。代码使用了Android的ContentResolver和Uri类来访问短信数据,并通过正则表达式匹配特定的短信格式来提取验证码。
|
|