大活等地区不能使用
Len-Jon opened this issue · 6 comments
我自己写了一个浏览器使用的脚本,
和你的对比发现你的wlancname
是写死的,参考了你的思路,请求6.6.6.6之后可以获取重定向的地址:
获取这个参数即可
function getQueryString(params, name) {
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
let r = params.match(reg);
if (r != null) {
return decodeURIComponent(r[2]);
};
return null;
}
//...
config["ip"] = config["wlanuserip"] = getQueryString(url.split("?")[1], "UserIP");
config["wlanacname"] = getQueryString(url.split("?")[1], "wlanacname");
config["wlanacip"]= getQueryString(url.split("?")[1],"wlanacip");
//...
另外,post请求登录的时候建议不要使用异步,否则toast就没内味了
我现在回到了宿舍。。发现了大活和宿舍请求6.6.6.6的结果不同,这里给出我的解决方案。明天我去看看教学区的请求结果。
function getNetConfig() {
var url = "http://6.6.6.6/";
try {
var response = http.get(url);
if (response.statusCode === 200) {
var url = response.request.url().toString();
console.log(url);
if (url === "http://6.6.6.6/") {
//宿舍
var html = response.body.string();
url = html.match("location.href=\\\"(http://.*)\\\"")[0];
}
var config = {};
var queryPart = url.split("?")[1];
config["ip"] = config["wlanuserip"] = getQueryString(queryPart, "UserIP") ? getQueryString(queryPart, "UserIP") : getQueryString(queryPart, "wlanuserip");
config["wlanacname"] = getQueryString(queryPart, "wlanacname");
config["wlanacip"] = getQueryString(queryPart, "wlanacip");
console.log(config);
return config;
} else {
toast("未知错误");
exit();
}
} catch (e) {
console.log(e);
toast("当前网络正常或未连接校园网");
exit();
}
};
我现在回到了宿舍。。发现了大活和宿舍请求6.6.6.6的结果不同,这里给出我的解决方案。明天我去看看教学区的请求结果。
function getNetConfig() { var url = "http://6.6.6.6/"; try { var response = http.get(url); if (response.statusCode === 200) { var url = response.request.url().toString(); console.log(url); if (url === "http://6.6.6.6/") { //宿舍 var html = response.body.string(); url = html.match("location.href=\\\"(http://.*)\\\"")[0]; } var config = {}; var queryPart = url.split("?")[1]; config["ip"] = config["wlanuserip"] = getQueryString(queryPart, "UserIP") ? getQueryString(queryPart, "UserIP") : getQueryString(queryPart, "wlanuserip"); config["wlanacname"] = getQueryString(queryPart, "wlanacname"); config["wlanacip"] = getQueryString(queryPart, "wlanacip"); console.log(config); return config; } else { toast("未知错误"); exit(); } } catch (e) { console.log(e); toast("当前网络正常或未连接校园网"); exit(); } };
我去大活测试了一下, CMCC是可以使用的, 不知道不能登录的情况是在哪个运营商网络下呢?
大活和教学楼的请求结果都是3个参数:
wlanuserip: 10.163.152.206
wlanacip: 10.255.252.150
wlanacname: XL-BRAS-SR8806-X
好像是差不多的, 至于宿舍我没看过返回结果。但本人目前在大活、宿舍、图书馆、教学楼、食堂皆能正常使用。
至于在这几个ip参数的提取上,你写的getQueryString
用正则根据传参name来提取确实是个不错的方法, 但是如果运营商修改了这边的参数,那么代码又需要立马相应的修改,较为麻烦。
我看了下代码params中貌似少了ip这个key,其value为wlanuserip相同,实际上这个不是个关键参数, 所以没有特意再补上。
我自己写了一个浏览器使用的脚本,
和你的对比发现你的wlancname
是写死的,参考了你的思路,请求6.6.6.6之后可以获取重定向的地址:
获取这个参数即可function getQueryString(params, name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); let r = params.match(reg); if (r != null) { return decodeURIComponent(r[2]); }; return null; } //... config["ip"] = config["wlanuserip"] = getQueryString(url.split("?")[1], "UserIP"); config["wlanacname"] = getQueryString(url.split("?")[1], "wlanacname"); config["wlanacip"]= getQueryString(url.split("?")[1],"wlanacip"); //...另外,post请求登录的时候建议不要使用异步,否则toast就没内味了
对比教学楼和大活的wlancname参数, 我得到的结果都是XL-BRAS-SR8806-X, 但其也是通过6.6.6.6中返回的url中提取的。
<script type="text/javascript">location.href="http://p.njupt.edu.cn/a70.htm?wlanuserip=10.163.246.104&wlanacip=10.255.252.150&wlanacname=XL-BRAS-SR8806-X"</script>
至于post请求登录的时候建议不要使用异步,否则toast就没内味了
, 考虑到目的是想实现成一键登录的脚本,则中间过程都可以是阻塞调用过程,最后的登录调用需要实现异步。效果就是想要点击下app后,就不用关心结果了(因为大多数情况下应该是succeed),至于toast是在回调中显示的,并不会造成影响,效果为点击app后即可以滑到其他应用上,然后等post请求完成后在任意的界面上都可以显示toast是否登录成功。
嗷,我用的是校园网,不是运营商的网络
嗷,我用的是校园网,不是运营商的网络
确实, 目前这份代码校园网登不上, njupt跟运营商网络登录6.6.6.6的结果不一样。 之前测试的是用直接用卡号如1102018000xxx00(不加后缀)去登录CMCC,会报账号费用超额。没测试NJUPT登录。
我现在回到了宿舍。。发现了大活和宿舍请求6.6.6.6的结果不同,这里给出我的解决方案。明天我去看看教学区的请求结果。
function getNetConfig() { var url = "http://6.6.6.6/"; try { var response = http.get(url); if (response.statusCode === 200) { var url = response.request.url().toString(); console.log(url); if (url === "http://6.6.6.6/") { //宿舍 var html = response.body.string(); url = html.match("location.href=\\\"(http://.*)\\\"")[0]; } var config = {}; var queryPart = url.split("?")[1]; config["ip"] = config["wlanuserip"] = getQueryString(queryPart, "UserIP") ? getQueryString(queryPart, "UserIP") : getQueryString(queryPart, "wlanuserip"); config["wlanacname"] = getQueryString(queryPart, "wlanacname"); config["wlanacip"] = getQueryString(queryPart, "wlanacip"); console.log(config); return config; } else { toast("未知错误"); exit(); } } catch (e) { console.log(e); toast("当前网络正常或未连接校园网"); exit(); } };
可以的, 可以通过重定向的url中提取参数。我修改一下
已修复。问题归档-无法登录NJUPT: NJUPT与CMCC访问6.6.6.6返回结果不一样;解决方案:当NJUPT登录时通过6.6.6.6网址重定向url提取参数