Web 登录的网络 如何利用 OpenWRT 做到自动开机登录?

2014-12-20 22:56:27 +08:00
 cokebar
学校校园网Web页面验证登录,现在我是用tinyproxy用路由代理手动web登录的,有木有人折腾过通用方法,路由器用脚本自动post用户名密码过去然后登录的?
6101 次点击
所在节点    问与答
5 条回复
wyf88
2014-12-20 23:25:24 +08:00
有。你先用 Chrome 登陆一次,看登陆时 post 了什么,然后在路由器上用 wget 去 post 咯
chunyang
2014-12-20 23:43:20 +08:00
Web 认证大概指的是 Captive portals 吧,通常也没有验证码,用脚本(curl 比 wget 更合适)实现很容易。

关键是如何*自动*执行登陆脚本,正确的方法应该是 监听网络连接 (而不是开机时),也就是说一旦有网络建立时(可以检查 SSID 以确认连上了你的学校的 WLAN)便登陆。

至于如何监听网路连接,应该由你使用的 OS 或者 Network Manager 决定,比如,GNU/Linux 一般默认用 Redhat 的 NetworkManager,这个程序默认支持在网路发生变化时执行脚本(参见 /etc/NetworkManager/dispatcher.d/)。至于 OpenWRT,我不清楚,应该有类似的东西。
lizheming
2014-12-21 07:39:08 +08:00
有啊…这个post脚本开机自启动妥妥的…要是加个网络掉线检测那更是极好的了。
wyf88
2014-12-21 15:17:19 +08:00
翻了一下我在学校的路由器里的,给你举个例子,不同学校肯定不一样。因为 Busybox 里就有 wget,所以我没有用 curl。我不是写程序的,所以这代码凑合用用就好。默认开机运行。监听网络连接之类的,我就不懂了。

cat <<'EOF' >/root/resnet_login.sh
#!/bin/sh

for loop in 1 2 3 4 5 6 7 8 9 10
do
wget -q 'http://www.apple.com/library/test/success.html' -O '/tmp/success.html'
if [ $(cat /tmp/success.html) == '<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>' ]
then
echo 'Router is online.'
rm -f '/tmp/success.html'
break
else
echo 'Router is offline.'
wget -q 'http://securelogin.net.XXX.edu.cn/cgi-bin/login' --post-data='user=14XXXXXXX&password=XXXX&cmd=authenticate&Login=Log+In' -O '/tmp/login.html'
rm -f '/tmp/login.html' '/tmp/success.html'
fi
sleep 12
done

EOF

chmod +x /root/resnet_login.sh
sed -i '/^exit 0/i/root/resnet_login.sh' /etc/rc.local
wyf88
2014-12-21 15:18:07 +08:00
晕。。。我不知道直接粘进回复框里,缩进就全没了。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/155406

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX