Comments (6)
我现在回到了宿舍。。发现了大活和宿舍请求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();
}
};
from njuptcmcc.
我现在回到了宿舍。。发现了大活和宿舍请求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相同,实际上这个不是个关键参数, 所以没有特意再补上。
from njuptcmcc.
我自己写了一个浏览器使用的脚本,
和你的对比发现你的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是否登录成功。
from njuptcmcc.
嗷,我用的是校园网,不是运营商的网络
from njuptcmcc.
嗷,我用的是校园网,不是运营商的网络
确实, 目前这份代码校园网登不上, 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中提取参数。我修改一下
from njuptcmcc.
已修复。问题归档-无法登录NJUPT: NJUPT与CMCC访问6.6.6.6返回结果不一样;解决方案:当NJUPT登录时通过6.6.6.6网址重定向url提取参数
from njuptcmcc.
Related Issues (1)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from njuptcmcc.