小米内测自动答题脚本

为啥要搞这个脚本呢,是真的被恶心到了,我记得我还是从高二开始就用的小米,MIUI从以前的真香,变成BUG一堆、负优化的UI。买了个小米11,到手3个月真心被这系统恶心到了,越更新越辣鸡,什么哈曼音效砍了(MIUI 12.0.22),4600ma的电池用着和老手机没什么区别,1月份首发到手,结果现在4月初所谓的MIUI12.5还没出来,以前可以随便刷开发版,现在也要个申请,关键是tmd不让过,无法了…… 这个脚本本来是打算为了答题申请内测,现在搞完反而没想法了,等用坏了以后就不用小米手机。 本脚本仅交流使用,不提供任何技术支持。 效果如下: 脚本运行环境是auto.js免费版4.0,看了半个小时直接开始撸了,附带采集功能,题库中没有的题目自动入库,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 toast("开始运行!"); // click("再次答题"); // click("同意协议并开始答题"); var myAPP = {}; // 唯一的全局变量myAPP myAPP.packageName = "com.xiaomi.vipaccount"; console.log('查找题目'); var patt = /,,.*(?=多选题|单选题)/g; for (let i = 0; i < 40; i++) { let title = textContains("选题").findOne().text(); console.log('?????????') var reg=new RegExp(patt); var result = reg.exec(title); // console.log('题目',title); title = result[0].replace(',,','').replace(' ',''); console.log(result[0]); // break; if (title == undefined) { continue; } console.log("题目:", title); // console.log(title.textMatches(patt)); let an; try { an = textContains("未选中").find(); } catch (error) { console.log('异常'); } /*增加题目到题库*/ let post = {}; post.question = title; for (let i = 0; i < an.length; i++) { let an_t = an[i].text().replace(',未选中', ''); if (i === 0) { post.answer_a = an_t; } else if (i === 1) { post.answer_b = an_t; } else if (i === 2) { post.answer_c = an_t; } else if (i === 3) { post.answer_d = an_t; } } // console.log(JSON.stringify(post)); let url = "http://192.168.15.227:8012/add_question"; let url_select = "http://192.168.15.227:8012/getQuestion?title=" + title; var r = http.get(url_select); var data_j = JSON.parse(r.body.string()); console.log('返回结果:', data_j); if(data_j.code === -1){ // 没有题库,直接提交到数据库 http.postJson(url, post); console.log(post); click(post.answer_a + ",未选中"); sleep(1000); click("下一题"); }else{ // data_j. var nc = Number(data_j.data.answer); console.log('答案',nc); if ((nc & 16) === 16) { console.log('点击',data_j.data.answer_a + ',未选中'); click(data_j.data.answer_a); } if ((nc & 32) === 32) { console.log('点击',data_j.data.answer_b + ',未选中'); click(data_j.data.answer_b); } if ((nc & 64) === 64) { console.log('点击',data_j.data.answer_c +',未选中'); click(data_j.data.answer_c); } if ((nc & 128) === 128) { console.log('点击',data_j.data.answer_d + ',未选中'); click(data_j.data.answer_d); } sleep(1000); click("下一题"); } } 不知道为啥,正则那里用了前置断言就报错…… ...

2021年4月1日 · 7 分钟 · 浅忆

H2 数据库配置DATABASE_TO_UPPER区分大小写无效

背景 刚接触这个h2内存数据库,被这个问题折腾2天了,我使用的是mybatis-plus,而H2默认 表名、列名都是大写,和mybatis plus默认的策略有冲突(SQL大写变小写加下划线),虽然可以配置关闭掉,但全部大写还是看着不习惯…… 所以百度搜了下关闭的方法,在url链接上加上 DATABASE_TO_UPPER=FALSE 就行了,但这问题就来了,由于我加了 AUTO_SERVER=TRUE 也就是混合模式,在idea中修改数据就会 报错: 1 2 3 4 5 [90079][90079] org.h2.jdbc.JdbcSQLSyntaxErrorException: Schema "information_schema" not found; SQL statement: select catalog_name from information_schema.catalogs [90079-200]. Schema "information_schema" not found; SQL statement: select catalog_name from information_schema.catalogs [90079-200] (458 ms) 解决办法 后面搜索到 github同样有人遇到了这个问题,给出的解决方法是使用 DATABASE_TO_LOWER=TRUE 参数。记得删除原来的库重新生成 。 我的配置如下: 1 2 3 4 spring.datasource.url=jdbc:h2:./db/qq_bot;DATABASE_TO_LOWER=TRUE;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9092;USER=sa;PASSWORD=sa; #spring.datasource.h2.username=admin #spring.datasource.h2.password=admin spring.datasource.h2.driver-class-name=org.h2.Driver 至于我为啥把用户名密码配置在url里…….那就是另外个问题了,哈哈哈 使用H2需要注意的问题 1、如果修改了url配置,原来的数据库要删除重新生成,因为在第一次创建数据库的时候就写死了,无法修改。 2、关于混合模式,我一直以为配置了,AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9092; 就可以使用tcp直接连接进行修改了,虽然端口开放了但会说密码错误 ,其实只是可以使用相同的url再次连接而已。 参考文章: https://github.com/h2database/h2database/issues/485

2021年3月27日 · 1 分钟 · 浅忆

关于TDengine使用上一些注意事项(坑) - 未完

第一次使用时序数据库,本来想用influxdb,搜了下说是国产的TDengine 性能更好,sql和原生差不多,所以就想尝试下,但学到现在一路的坑啊…… 这里我使用的是TDengine Docker版,安装命令 1 docker run -d -v /etc/taos:/etc/taos -p 6030:6030 -p 6035:6035 -p 6041:6041 -p 6030-6040:6030-6040/udp tdengine/tdengine:2.0.0.0 注意版本号,默认账户密码为:root/taosdata 常见问题 1、 java.sql.SQLException: TDengine Error: Invalid timestamp 如果本地时区要和服务端一样 解答:https://github.com/taosdata/TDengine/issues/4345# 2、本地驱动版本、maven TDengine 版本、服务端版本 要一致 3、本地开发需要设置TDengine驱动环境变量 1 -Djava.library.path=C:\TDengine\driver 4、TDengine Error: Unable to resolve FQDN 这个居然还要保持主机名一致…….也就是要设置host ,docker版服务端也要在docker里设置,但官网提供的docker创建命令并未配置环境变量。

2021年3月11日 · 1 分钟 · 浅忆

RabbitMQ Java Client 并发问题思考(一)

此篇文章仅作为个人笔记,由于初学难免有理解错误的地方,请大佬指正~ 由于我这个部分没有使用SpringBoot,使用的是RabbitMq java Client API 所以在Springboot上的有些功能用不了,只能手动实现,故在思维上走了一个坑。 测试代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 public static void main(String[] args) { //连接工厂 ConnectionFactory factory = new ConnectionFactory(); // factory.useNio(); // factory.setNioParams(new NioParams().setNbIoThreads(4)); factory.setHost("xxx.xxx.xxx.xxx"); factory.setPort(port); factory.setUsername("username"); factory.setPassword("password"); factory.setVirtualHost("msgpush"); // f.setConnectionTimeout(5000); // f.setHandshakeTimeout(3000); ExecutorService service = Executors.newFixedThreadPool(30); factory.setSharedExecutor(service); // 设置自动恢复 factory.setAutomaticRecoveryEnabled(true); factory.setNetworkRecoveryInterval(2); factory.setTopologyRecoveryEnabled(true);// 设置不重新声明交换器,队列等信息。 System.out.println("检索请求的最大频道数:" + factory.getRequestedChannelMax()); // f.setRequestedChannelMax(10); try { // Channel channel = f.newConnection().createChannel(); //建立连接 Connection c = factory.newConnection("push Client"); c.addShutdownListener(new ShutdownListener() { @Override public void shutdownCompleted(ShutdownSignalException e) { System.out.println( "断线了......"); } }); //建立信道 Channel ch = c.createChannel(); //声明队列,如果该队列已经创建过,则不会重复创建 //ch.queueDeclare("QueueWX", false, false, false, null); System.out.println("等待接收数据"); // 单条消息的大小限制,一般设为0或不设置,不限制大小 int prefecthSize = 0; // 告诉RabbitMQ不要同时给消费端推送n条消息,一旦有n个消息还没ack,则该consumer将block掉,直到有ack;注意在自动应答下不生效 int prefecthCount = 5; // 表示是否应用于channel上,即是channel级别还是consumer级别 boolean global = true; ch.basicQos(3); //消费者取消时的回调对象1 CancelCallback cancelHandel = new CancelCallback() { @Override public void handle(String consumerTag) throws IOException { System.out.println(consumerTag + " 链接已断开"); } }; /*微信*/ DeliverImpl deliverWx = new DeliverImpl(ch, MQEnum.QUEUE_WX); ch.basicConsume(MQEnum.QUEUE_WX.getData(), false, deliverWx, cancelHandel); /*企业微信*/ DeliverImpl deliver = new DeliverImpl(ch, MQEnum.QUEUE_WORKWX); //第二个参数为消息回执,消息确认处理完成,为true为自动确认,只要消息发送到消费者即消息处理成功;为false为,手动发送确认回执,服务器才认为这个消息处理成功 ch.basicConsume(MQEnum.QUEUE_WORKWX.getData(), false, deliver, cancelHandel); /*钉钉*/ DeliverImpl deliverDing = new DeliverImpl(ch, MQEnum.QUEUE_DINGDING); ch.basicConsume(MQEnum.QUEUE_DINGDING.getData(), false, deliverDing, cancelHandel); /*tg*/ DeliverImpl deliverTg = new DeliverImpl(ch, MQEnum.QUEUE_TG); ch.basicConsume(MQEnum.QUEUE_TG.getData(), false, deliverTg, cancelHandel); } catch (IOException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } } ...

2021年3月9日 · 4 分钟 · 浅忆

国内WordPress启用谷歌验证码(noCaptcha )

众所周知,noCaptcha 的验证接口和css是被屏蔽的,所以可以使用 recaptcha.net 这个google在国内的域名。想着有轮子绝不撸代码的想法,试了几款插件,找到一款对代码修改最小的插件(或者直接不用修改,我目前使用的这款主题需要手动修改)。 1、安装插件 https://cn.wordpress.org/plugins/advanced-nocaptcha-recaptcha/ 2、启用并设置插件 注册 recaptcha 秘钥。https://www.google.com/recaptcha/admin/ 3、修改主题代码(可选) 同理,如果评论的时候没有进行验证,提交没有显示错误信息,那么只需要对提交评论的 g-recaptcha-response 字段就行判断一下就可以了。 每款主题的输错错误方式不一样,所以自己修改~ 同时还需要添加验证代码 1 2 anr_verify_captcha() 成功时返回值为true,否则为false。

2021年3月1日 · 1 分钟 · 浅忆

Spring Boot 通过SMTP发送电子邮件(ssl/tls)

使用的技术: Spring Boot 2.3.2 Java Mail 1.6.2 Maven 3 Java 8 1、添加依赖 1 spring-boot-starter-mail 1 2 3 4 5 <!-- send email --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 2、配置 application.properties 这里得注意下了,除了邮件服务商说明同时支持tls或者ssl,否则需要将tls/ssl分开配置 ,这里我使用得是outlook,所以只支持 tls 587端口,一开始我配置成ssl,走了一个坑。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=username spring.mail.password=password # Other properties spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.connectiontimeout=5000 spring.mail.properties.mail.smtp.timeout=5000 spring.mail.properties.mail.smtp.writetimeout=5000 # 这里是tls的配置项,如果没有使用587,则要注释掉 # TLS , port 587 spring.mail.properties.mail.smtp.starttls.enable=true # 这里是ssl的配置项,如果没有使用465,则要注释掉 # SSL, post 465 #spring.mail.properties.mail.smtp.socketFactory.port = 465 #spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory 1 2 3 4 5 6 7 8 如果是这个错误,那么就是你把tls/ssl的配置弄反了。 nested exception is: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 587; nested exception is: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?; message exceptions (1) are: Failed message 1: javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 587; nested exception is: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?] with root cause 3、发送文本邮件 1 2 3 4 5 6 7 8 9 10 11 import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; @Autowired private JavaMailSender javaMailSender; void sendEmail() { SimpleMailMessage msg = new SimpleMailMessage(); msg.setTo("to_1@gmail.com", "to_2@gmail.com", "to_3@yahoo.com"); msg.setSubject("Testing from Spring Boot"); msg.setText("Hello World \n Spring Boot Email"); javaMailSender.send(msg); } 4、发送html格式的邮件 1 2 3 4 5 6 7 8 9 10 @GetMapping("sendMail") void sendMain() throws MessagingException { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true); message.setFrom("浅忆博客(系统)<server@curlc.com>"); message.setTo("xxxxx@qq.com"); message.setSubject("HTML邮件"); message.setText("<h1>Check attachment for image!</h1>", true); mailSender.send(mimeMessage); } 5、发送HTML电子邮件和文件附件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import org.springframework.core.io.ClassPathResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; void sendEmailWithAttachment() throws MessagingException, IOException { MimeMessage msg = javaMailSender.createMimeMessage(); // true = multipart message MimeMessageHelper helper = new MimeMessageHelper(msg, true); helper.setTo("to_@email"); helper.setSubject("Testing from Spring Boot"); // default = text/plain //helper.setText("Check attachment for image!"); // true = text/html helper.setText("<h1>Check attachment for image!</h1>", true); // hard coded a file path //FileSystemResource file = new FileSystemResource(new File("path/android.png")); helper.addAttachment("my_photo.png", new ClassPathResource("android.png")); javaMailSender.send(msg); } ...

2021年2月17日 · 2 分钟 · 浅忆

吐槽下贵州电信宽带公网IP问题

背景 自从贵州在搞大数据后,大概在18年还是17年底,贵州电信就回收了所有的家庭公网ip,当时我家里宽带的也被回收了,刚了2天,贵州电信一直把这个责任推给办宽带的营业厅和安装师傅,我所在的地区欠发达,人家安装师傅和营业厅工作人员也不知道怎么弄,一直好言好语给我打了好几次电话,最后成功拿到公网IP最关键的一句话是“以前我的宽带都有公网IP”,我就让安装师傅就把问题再反馈到上一级,后面机房的人给我打电话说弄好了,重启光猫后确实有公网了(中间有变成内网过1次,又是刚了2天)。 2021-02-16 我在贵阳又办了一根千兆的宽带,可笑的是千兆上传还是30Mbps(这30Mbps还是当年工信部强制出了个文件,才开始从20Mbps升级到30Mbps),光猫也不给万兆或者2.5G光猫,速度也不达标(白天还好,能跑930Mbps,晚上高峰期就只有650Mbps了),公网ip?更别想了,客服回复永远只有这几句话 目前暂未提供IP地址更改服务 目前我公司提供的IP地址多数都是100开头的,只要您能正常登录QQ、访问网站,即表示宽带网络正常。同时IP地址是我公司宽带接入服务器动态分配的,暂未提供IP地址更改服务。 所以现在是bt下载没速度,NAS不能玩,为了所谓的大数据把ip资源给某些公司,不得已去华为云买了台贵阳地区5Mpbs 的vps做内网穿透,把摄像头和NAS映射出去,延迟倒是和内网一样,但是5Mbps的上传能做啥,卡的一批。不过有点欣慰的是可能也知道回收公网IP 搞得大家都不高兴,IPV6推进倒是蛮快得,电信和联通都分配了/60 的ipv6(手机数据也给了),但现在v6的路由瞎跳,开了反而影响正常上网,哎…… 2021-2-20 09:30: 昨天投诉后,10000号回访,说ip资源有限,无法给新用户公网ip,老用户可以ip回退,说到要工信部投诉,回复是“这是您的权益”,看来真的挺刚的…… 中间我打4008810000投诉过当地电信,然而更牛,直接说这是业务问题,请打10000号,然后直接挂了,这个投诉电话也是摆设?emm……???要是有用我打这个投诉电话做啥???我投诉当地电信居然说这是业务问题,又推给10000号?真的把我气笑了。 然而又能怎么办呢,只能将就用ipv6了,不过对这贵州电信真的是一生黑,过段时间携号转网了…… 附图 这里借用这个链接的图片,我问的回答也是一样的 https://zhidao.baidu.com/question/1772589045169142300.html 收集关于贵州电信公网IP的链接: https://tieba.baidu.com/p/6112677755

2021年2月16日 · 1 分钟 · 浅忆

PVE 常用命令

将lvm转换为qcow2 1 qemu-img convert -O qcow2 -c /dev/mapper/pve-vm--103--disk--1 13103.qcow2 将备份后的vma转为qcow2(备份时选择不压缩,得到vma文件,再解压,再转换为qcow2,文件比较大) 1 2 3 4 vma extract vzdump-qemu-100-2019_01_31-13_11_02.vma temp/ qemu-img convert -f raw temp/disk-drive-scsi0.raw -O qcow2 myvm-disk1.qcow2 #如果需要esxi导入则需要加水-o参数 qemu-img convert -f raw temp/disk-drive-ide0.raw -o adapter_type=lsilogic,subformat=streamOptimized,compat6 -O vmdk 100.vmdk 直通 1 qm set 100 -sata0 /dev/disk/by-id/ata-Colorful_xxxxxxxxxxxxxxxxxxx

2021年2月5日 · 1 分钟 · 浅忆

IKOULA C-StorageII 5折机器

前几天IKOULA 5折活动就上了这款机器,12.99欧的样子,蛮不错的~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ---------------------------------------------------------------------- CPU Model : Intel(R) Xeon(R) CPU E31220 [url=home.php?mod=space&uid=175]@[/url] 3.10GHz CPU Cores : 4 CPU Frequency : 2530.147 MHz CPU Cache : 8192 KB Total Disk : 3687.4 GB (3.0 GB Used) Total Mem : 7946 MB (836 MB Used) Total Swap : 1023 MB (0 MB Used) System uptime : 0 days, 0 hour 2 min Load average : 0.44, 0.25, 0.10 OS : Debian GNU/Linux 9 Arch : x86_64 (64 Bit) Kernel : 4.15.18-30-pve TCP CC : cubic Virtualization : Dedicated Organization : AS21409 Ikoula Net SAS Location : Paris / FR Region : Île-de-France ---------------------------------------------------------------------- I/O Speed(1st run) : 179 MB/s I/O Speed(2nd run) : 177 MB/s I/O Speed(3rd run) : 173 MB/s Average I/O speed : 176.3 MB/s ---------------------------------------------------------------------- Node Name Upload Speed Download Speed Latency Speedtest.net 939.86 Mbps 940.75 Mbps 3.06 ms Beijing CU 413.42 Mbps 659.80 Mbps 222.46 ms Shanghai CT 0.51 Mbps 450.41 Mbps 211.26 ms Guangzhou CT 2.32 Mbps 13.37 Mbps 227.53 ms Guangzhou CU 0.28 Mbps 255.96 Mbps 300.72 ms Shenzhen CU 0.53 Mbps 856.65 Mbps 191.32 ms Hongkong CN 372.65 Mbps 906.42 Mbps 193.00 ms Singapore SG 0.94 Mbps 748.87 Mbps 249.70 ms Tokyo JP 101.93 Mbps 2.91 Mbps 215.84 ms --------------------------------------------------------------------- 硬盘是新的~ ...

2021年2月2日 · 2 分钟 · 浅忆

cloudflare(cf) ssl 无法部署的一个问题

背景 前几天由于云筏那里把我的域名从cf处删除后,导致解析全部回源,ssl证书异常! 后来用了ion的cfp版本,但是ssl一直处于 待颁发(错误) 状态,将鼠标移到三角感叹号出发现报错 caa error: xxx.x 这才想起申请let’s 通配符证书时加了CAA记录 1 0 issue "letsencrypt.org" 解决方法 所以这里有2种处理方法 将 let’s 的caa 记录删掉 或者将cf的证书颁发机构也加入CAA 0 issue “digicert.com” CAA:允许域所有者指示允许哪些CA为其颁发证书。 所以加了let’s 的CAA记录就会导致其他的CA颁发证书失败,这个时候就需要将带颁发的CA加入CAA。

2021年1月6日 · 1 分钟 · 浅忆