论我一个小白是如何发现某个比赛网站注册的bug

前言

在2023年上半年,我参加了中国机器人及人工智能大赛,我们的作品是四足仿生机器人,省赛我们很容易就拿到了省级一等奖(当然这和队伍不多有关系),但是我从接触机器人到比赛也就4天时间,对机器人了解的并不是特别多。在进入国赛初赛,我们花费了大量时间研究比赛和机器人,最终在初赛中大放异彩,进入了国赛决赛的准备工作(只有两天时间),我们加班加点做了个简单模型,由于决赛测试时间只有一天,我们去的比较迟,直到晚上9点才找到机器人,测试场地和我们的备赛场地差别很大,我有点慌,没有进行完整的测试,就草草结束了。也就是说我们的测试时间只有比赛的短短15分钟,起初以为是20分钟。比赛中意外很多,我们的设备(机器人)有个很奇怪的问题,就是在使用网线连接,进行局域网通信,特别慢(连接时间长),也许是地域问题吧,在海南测试期间,我们只花了一秒就连接好了,但是第二天连接又特别慢,所以比赛期间我也不敢过于冒险,只能简单测试,尽量拿到最多的分,剩余时间进行调试(如果花费大量时间调试的话,网线一断,连接得好长时间,对我是很不利的)。最终成绩也一般般,当然最开心的是,剩余时间可以去海南其他地方玩耍啦。这次比赛对我有点遗憾啦。

不知道为什么,我一个计算机专业的特别喜欢机器人,以至于后来的电子科技的投环比赛的那一跳,是真的激起了我对机器人的那种"火",哈哈哈,还有那个小车比赛跑的很快,特别好奇那个算法是双边计算还是单边还是什么呢。算了,不多说了,开始正题吧

起因

昨天晚上看机器人比赛,发现2023中国机器人大赛暨RoboCup比赛开始了,好几个省赛已经比赛结束了,不过作者的省份不太行啦,但还是想参加比赛,就去了报名窗口,一路填写信息,后来在提交注册的那一步总是提示电话格式不正确。

图片中的信息是错误的,这是为什么呢,无论是位数还是开头都是正确的啊,尝试了座机电话,甚至在电话前面加+86和空格等一系列操作,都是错误的。这个让患有强迫症的我一晚上没有睡好。不得不说我是一个很愚蠢的家伙,我居然忘记自己是程序员了,于是我打开了F12

查找问题

打开F12,找到电话窗口对应的标签元素,找到id

然后在源代码中找到js文件夹,下面的register.js文件夹找到那个检验手机号的函数,发现它是这样的

js 复制代码
//验证手机号
function isPhoneNo(phone) { 
var pattern = /^1[34578]\d{9}$/; 
return pattern.test(phone); 
}

正则表达式有问题,第一位匹配了 1 ,第二位匹配【34578】,但是现在手机号已经有了,6和9,因为我的手机号正好第二位是9,所以一直匹配错误。

解决问题

正确的匹配规则应该是

js 复制代码
var pattern = /1([38][0-9]|14[579]|5[^4]|16[6]|7[1-35-8]|9[189])\d{8}$/; 
//这是最合理的匹配规则

至此,原因找到了,我也给主办方反馈了这个问题。进入报名系统的我,发现的参加省赛和专项赛才可以参加国赛,我们省目前任何消息也没有,唉。真羡慕打机器人比赛的那些娃娃。

总结

发现这个问题,得益于在大一了解过一段html,但是js语言不是特别会,正则表达式应该都是通用的吧,基本函数也知道如何找到。

相关推荐
kyriewen2 小时前
别再 console.log 了:5 个 Chrome DevTools 调试技巧,用过就回不去了
前端·javascript·面试
IT_陈寒4 小时前
Python搞不定字符串编码?这破玩意坑我两小时!
前端·人工智能·后端
DigitalOcean5 小时前
Laravel 开发者已在 DigitalOcean 上开通超过 10 万台服务器
前端·laravel
星始流年5 小时前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
李惟6 小时前
开源本地通信库,纯客户端 RPC,像聊天一样通信
前端
YAwu116 小时前
深入解析 React 炫彩鼠标跟随标题组件:从坐标定位到动画性能
前端·react.js
GuWenyue6 小时前
排序效率低?5分钟吃透快速排序,性能飙升至O(nlogn)
前端·javascript·面试
OpenTiny社区6 小时前
🎨 看完 GenUI SDK 源码我悟了!
前端·vue.js·github
叁两6 小时前
前端转型AI Agent该如何学习?(前置篇)
前端·人工智能·node.js
何时梦醒6 小时前
深入理解递归与快速排序 —— 从基础入门到手写实现
前端·javascript