Mmx233 / BitSrunLoginGo

深澜校园网登录程序 Go 语言版,适用于Windows、Linux、路由器等。提供对 Docker、Go Module、OpenWrt 的支持
GNU Affero General Public License v3.0
303 stars 27 forks source link

无法匹配的异常 #2

Closed qianfanguojin closed 2 years ago

qianfanguojin commented 3 years ago

image 首先感谢作者提供的这个工具,让我对校园网提起了希望。但是在我确认正确配置账号密码的的前提下,我发现还是出现如图的异常。 我也大致浏览了作者的源码,似乎应该是在第二步就已经出了问题,还没到验证账号密码那步,但是由于对Go语言的陌生。还是向作者求助,想了解出现这样的问题我应该作如何的解决方案,期待您的回复

Mmx233 commented 3 years ago

目前程序内未内置对无匹配异常的日志处理,但你可以进行以下尝试:

如何仍然无效,可以尝试手动请求models/config.go中拼接的url以进行进一步检查

qianfanguojin commented 3 years ago

目前程序内未内置对无匹配异常的日志处理,但你可以进行以下尝试:

  • 确认登录ip或域名是否正确
  • 登录参数是否正确

如何仍然无效,可以尝试手动请求models/config.go中拼接的url以进行进一步检查

我也是这么想的,但是好像不太会搭建Go的环境......,用IDEA试了总报错

Mmx233 commented 3 years ago

为什么不用postman来模拟请求呢

qianfanguojin commented 3 years ago

为什么不用postman来模拟请求呢

模拟请求和这个异常关系不大,我已经试了。 不过在搭建好GO环境Debug后,我已经定位到了问题的所在,根据报错信息,明显获取客户端IP 这个步骤就已经炸了,而我在调试代码时发现,作者您在获取客户端IP时调用的方法是这个: image 于是我就猜测是不是这个正则获取不到我学校的客户端IP,在调试之后,结果果然如此。 于是我将返回值的IP固定,然后运行,成功登录: image image

但是,我继续分析网页,我学校的客户端ip格式是这样的: image 然而想要获取这个ip匹配却很麻烦,Go似乎不支持后向断言,现在我就卡在这里了

qianfanguojin commented 3 years ago

为什么不用postman来模拟请求呢 您这里为什么要判定ta它大于2呢,这样我改写有点麻烦

image

Mmx233 commented 3 years ago

为什么不用postman来模拟请求呢 您这里为什么要判定ta它大于2呢,这样我改写有点麻烦

image

因为每个正则都有一个子表达式,len为1的时候其实还是没有结果

Mmx233 commented 3 years ago

为什么不用postman来模拟请求呢

模拟请求和这个异常关系不大,我已经试了。 不过在搭建好GO环境Debug后,我已经定位到了问题的所在,根据报错信息,明显获取客户端IP 这个步骤就已经炸了,而我在调试代码时发现,作者您在获取客户端IP时调用的方法是这个: image 于是我就猜测是不是这个正则获取不到我学校的客户端IP,在调试之后,结果果然如此。 于是我将返回值的IP固定,然后运行,成功登录: image image

但是,我继续分析网页,我学校的客户端ip格式是这样的: image 然而想要获取这个ip匹配却很麻烦,Go似乎不支持后向断言,现在我就卡在这里了

可以连换行一起写入正则表达式 image image

qianfanguojin commented 3 years ago

为什么不用postman来模拟请求呢

模拟请求和这个异常关系不大,我已经试了。 不过在搭建好GO环境Debug后,我已经定位到了问题的所在,根据报错信息,明显获取客户端IP 这个步骤就已经炸了,而我在调试代码时发现,作者您在获取客户端IP时调用的方法是这个: image 于是我就猜测是不是这个正则获取不到我学校的客户端IP,在调试之后,结果果然如此。 于是我将返回值的IP固定,然后运行,成功登录: image image 但是,我继续分析网页,我学校的客户端ip格式是这样的: image 然而想要获取这个ip匹配却很麻烦,Go似乎不支持后向断言,现在我就卡在这里了

可以连换行一起写入正则表达式 image image

最终我还是魔改了一点,重新定义了一个方法来解决。 哦对了,配置了 守护Daemon进程我怎么感觉会直接结束进程啊,我在IDE中跑它直接结束了,放到控制台也是,没有效果

Mmx233 commented 3 years ago

为什么不用postman来模拟请求呢

模拟请求和这个异常关系不大,我已经试了。 不过在搭建好GO环境Debug后,我已经定位到了问题的所在,根据报错信息,明显获取客户端IP 这个步骤就已经炸了,而我在调试代码时发现,作者您在获取客户端IP时调用的方法是这个: image 于是我就猜测是不是这个正则获取不到我学校的客户端IP,在调试之后,结果果然如此。 于是我将返回值的IP固定,然后运行,成功登录: image image 但是,我继续分析网页,我学校的客户端ip格式是这样的: image 然而想要获取这个ip匹配却很麻烦,Go似乎不支持后向断言,现在我就卡在这里了

可以连换行一起写入正则表达式 image image

最终我还是魔改了一点,重新定义了一个方法来解决。 哦对了,配置了 守护Daemon进程我怎么感觉会直接结束进程啊,我在IDE中跑它直接结束了,放到控制台也是,没有效果

windows下是这样的,只能用SYSTEM账号运行才能真正进后台

qianfanguojin commented 3 years ago

为什么不用postman来模拟请求呢

模拟请求和这个异常关系不大,我已经试了。 不过在搭建好GO环境Debug后,我已经定位到了问题的所在,根据报错信息,明显获取客户端IP 这个步骤就已经炸了,而我在调试代码时发现,作者您在获取客户端IP时调用的方法是这个: image 于是我就猜测是不是这个正则获取不到我学校的客户端IP,在调试之后,结果果然如此。 于是我将返回值的IP固定,然后运行,成功登录: image image 但是,我继续分析网页,我学校的客户端ip格式是这样的: image 然而想要获取这个ip匹配却很麻烦,Go似乎不支持后向断言,现在我就卡在这里了

可以连换行一起写入正则表达式 image image

最终我还是魔改了一点,重新定义了一个方法来解决。 哦对了,配置了 守护Daemon进程我怎么感觉会直接结束进程啊,我在IDE中跑它直接结束了,放到控制台也是,没有效果

windows下是这样的,只能用SYSTEM账号运行才能真正进后台

Linux也是一样吗,我挂在路由器上好像也没有生效 哦对了,能冒昧问一下您的项目结构吗,我这直接导入是不行的,好像得建几个目录?

Mmx233 commented 3 years ago

Linux可以直接进后台的,可以看到进程 不过路由器的话还是建议使用screen挂,不然可能出奇怪的问题

qianfanguojin commented 3 years ago

Linux可以直接进后台的,可以看到进程 不过路由器的话还是建议使用screen挂,不然可能出奇怪的问题

现在是已经挂了,但是就是,这个好像是允许多开的?如何让它确保只有一个进程呢

Mmx233 commented 3 years ago

Linux可以直接进后台的,可以看到进程 不过路由器的话还是建议使用screen挂,不然可能出奇怪的问题

现在是已经挂了,但是就是,这个好像是允许多开的?如何让它确保只有一个进程呢

目前只有daemon模式会确保单进程。手动挂的话,我不理解为什么会出现多个进程的情况,只要开机的时候启动一下就好啦

Mmx233 commented 2 years ago

如果你的问题仍未解决有其他问题的话,欢迎开一个新的issue以跟进