之所以有这个想法是因为安卓手机上的WebKit似乎不能正常执行注销按钮的javascript响应函数wc()。或者说,点那个注销按钮根本没反应。

<img class=\" loading="lazy" src="/wp-content/uploads/2017/05/dr_com%E6%B3%A8%E9%94%80%E9%A1%B5%E9%9D%A2.png">

<img class=\" loading="lazy" src="/wp-content/uploads/2017/05/%E6%B3%A8%E9%94%80%E6%8C%89%E9%92%AE%E7%9A%84%E5%93%8D%E5%BA%94%E5%87%BD%E6%95%B0.png">找到wc函数的定义

// 注销事件
function wc(){
    // 自定义confirm
    //if(window.confirm("确定注销? Logout Confirmed?")){
    ui.confirm('确定注销? Logout Confirmed?', function(func){
        if(func){
            if(enPortal == 1){//启用Portal协议,进行第三方AC认证
                if(enHttps == 1){//需要Https(需要EPOrtal另置接口支持)
                    document.f1.action = "https://" + window.location.hostname + ":801/eportal/?c=ACSetting&a=Logout&wlanuserip="
                                    + getQueryString('wlanuserip') +"&wlanacip="+ getQueryString('wlanacip') 
                                    + "&session="+ getQueryString('session') +"&vlanid="+ getQueryString('vlanid') 
                                    + "&port="+ window.location.port +"&iTermType="+ getTermType() 
                                    + "&protocol=https:";
                }
                else{
                    document.f1.action = window.location.protocol + "//" + window.location.hostname + ":801/eportal/?c=ACSetting&a=Logout&wlanuserip="
                                    + getQueryString('wlanuserip')+ "&wlanacip="+ getQueryString('wlanacip') 
                                    + "&session="+getQueryString('session')+ "&vlanid="+ getQueryString('vlanid')
                                    + "&port="+ window.location.port+ "&iTermType="+ getTermType()
                                    + "&protocol="+ window.location.protocol;
                }
                //alert("document.f1.action:"+document.f1.action);
                document.f1.submit();
            }
            else{//本地认证
                s2=1;
                if(enHttps == 1){//需要Https
                    window.location = "https://" + window.location.hostname + "/F.htm";
                }
                else{
                    window.location = window.location.protocol + "//" + window.location.hostname + "/F.htm";
                }
            }
        }
    }, true);
    //};
}

我们学校实际上没有采用enPortal或者https,因此document.f1.action的赋值应该采取第一个else分支中的形式。整理得到如下的代码段

document.f1.action = window.location.protocol + "//" + window.location.hostname + ":801/eportal/?c=ACSetting&a=Logout&wlanuserip="
                                    + getQueryString('wlanuserip')+ "&wlanacip="+ getQueryString('wlanacip') 
                                    + "&session="+getQueryString('session')+ "&vlanid="+ getQueryString('vlanid')
                                    + "&port="+ window.location.port+ "&iTermType="+ getTermType()
                                    + "&protocol="+ window.location.protocol;
alert("即将注销……");
document.f1.submit();

对于采用Webkit内核的浏览器,通常在地址框中输入javascrpt:(注意这有个半角冒号),然后输入相应的javascript代码,即可执行。一般来说,Android内置浏览器都是WebKit内核的(但是听说华为搞的浏览器用的是UC的内核?)

具体点说,要使用上面的代码,首先打开你的WebKit内核浏览器。截图用的是Via,实测MIUI浏览器亦可。然后先访问上网认证的页面,我们学校是http://192.168.255.4。接着在地址栏里面敲入“javascript:”(不要加引号),然后紧跟着粘贴上面的代码。然后像访问正常的网站一样按一下(虚拟)键盘上的回车,即能注销。如图