-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
无网络请求的时候登录失败 #48
Comments
是稳定复现吗 |
是, 两台笔记本(arch/freebsd)还有树莓派(debian)上都有这个问题 |
抱歉,最近在忙春招,没有及时回复。该问题在我 windows 11 上无法复现。😢 |
复现方法是在全新安装的系统上(无桌面环境), 使用wpa_supplicant和dhclient连接校园网, 然后用ipgw登录, 确认在 linux(amd64, arm64)和 freebsd(amd64)上都会出现问题, ipgw是编译自最新master分支 试着打印了一下错误, 问题好像是出在这个位置
用curl发一个http请求以后就正常了, 猜测是登录认证服务器需要客户端先发送一个http请求后才能登录? 可能有关 抱歉因为我对网络和go不了解调试能力有限.. |
那连用两次ipgw,是不是第二次ipgw能成功呢 |
不能, 重复多次也不行 |
方便的话可以试一下先curl pass.neu.edu.cn再ipgw能不能成功吗 |
不能.. |
Google了下上面 PR#49 代码里面的 198.18.0.1 ,原来是出自 RFC2544 ,是被分配给基准测试专用的 IP 地址,涨姿势了 前段时间我在一个 ESP8266 单片机上面写了个登录校园网的工具,然后也稳定遇到了第一次登录 ipgw 失败,第二次登录才成功的 bug,当时没太多想,但是第一次登录失败返回的 json 信息确实是 这和本 issue 遇到的这个错误信息是一样的,并且我的单片机程序会在 ipgw 认证之后访问一次公网,相当于经过了 ipgw认证 -> 访问公网 -> 失败 -> 重新进行ipgw认证 这样一个流程之后,ipgw 才认证成功,因此我感觉这个 bug 应该可以被稳定复现,在 Windows 上不容易复现可能是因为 Windows 连接网络后就已经发过一些公网请求了,只不过没有被咱们直观感知到 |
嗯,而且必须是http请求,根据维基captive portal的实现里
正常的登录流程应该是客户端有一个http请求后重定向到认证网页进行认证 我之前认真看了一下项目代码感觉大概看懂了,所以稍微改了一下,亲测可以正常使用 |
暂时 revert 了,需要一个更好的解决方案 |
@bsbds 最近又看到这个 issue,结合 unbyte 在 #50 (comment) 里给出的第二个思路
我有两个想法
c := http.Client{
Timeout: 100 * time.Millisecond, // 等待100ms就结束请求
}
c.Get("http://198.18.0.1") 我的操作系统是 Windows 10,并不能直接复现这个问题,我尝试过在 Linux 虚拟机环境下复现,但也没能成功,要是你还有复现这个问题的时间和条件的话,可以试一试我的想法 |
好的,过段时间没事了再重新来修一下试试 |
今天有时间又测试了一下,用宿舍有线连校园网的captive portal重定向是坏的,不会自动跳转,只有连无线才能正确重定向。同时有线校园网请求 至于(无线校园网环境)Windows下复现不了的原因是Windows会自动打开浏览器跳转吧,比如Windows识别到网络portal会自动打开浏览器,浏览器(firefox)接下来会请求一个跳转的链接 将之前的代码改成请求一个url是可行的,这样不会超时,例如 |
我这边确实是缺少一个裸机 Linux 环境来复现问题🙁,如果这个方案在你那边的环境下可以解决问题了,我觉得就 OK |
在没有其他使用网络的用户软件的情况下运行
任意发一个公网连接请求后就能正常登录
The text was updated successfully, but these errors were encountered: