使用PythonInfiniti爆破路由器密码, 限制错误次数? 对Python无用!

路由器的密码应该都是可以reset的,看到后面的标签上有web界面的地址,而是真的见过很多并不需要登录的APP去做了登录功能,或者是并不需要强制登录的APP把登录作为启动页,客户端使用HTTP,向集成客户端提供查询数据和登录服务,因为模拟登陆的是我的个人网站,但都基本上都是用get请求一些页面

金沙澳门官网7817网址 1

 

1.概述

下个月喜欢用python去抓一些页面玩,但都大概都以用get请求一些页面,再经过正则去过滤。

image

登入 保存密码 安全 加密
这些年来发觉群内大伙对用Hbuilder做的应用程式咋办登陆功能以及维护登六状态尤其纳闷,而小编前一段时间正好稍微研商了1晃,所以把本人驾驭的告知大家,节约我们找找资料的时间。

1.1.用途

向集成客户端提供查询数据和登入服务。
如果财富需求授权技能查看和应用,请首先阅读“五.登6验证”小节。

明日试了弹指间,模拟登入个人网址。发现也比较轻便。读懂本文供给对http协议和http会话有早晚的掌握。

在院子里面来看了3个没人用的路由器(ws860s),看起来像个黑科学技术的玩意儿,就想着进去看看,到底有何有趣的。看到后头的价签上有web分界面包车型大巴地址,然后登录进去看看,发现成密码,然后本人想,路由器的密码应该都以足以reset的,然后本人就用笔戳这一个reset键,神蹟未有爆发,原来那一个reset键坏了。

你是还是不是真的必要登录成效?
把这些主题材料放在最前面并不是灌水,而是真的见过繁多并不要求登陆的应用程式去做了登入效能,也许是并不须要强制登六的应用软件把登六作为运行页。
用户对您的应用程式一窍不通,你将需求对方注册并登陆,除非APP本人已经很有名声也许是用户有强必要,不然常常人应有会直接把它删掉。
正如温柔的章程是将部分并不必要登入,但足以给用户带来帮忙的东西,第一时半刻间呈现给他们,让他们发生兴趣,再在适宜的空子辅导他们注册(比如动用须要选择越来越高端的功能,或用户需求收藏某些喜欢的音讯时)。

一.贰.通讯商议

客户端和服务器通过HTTP协议通讯,客户端应用HTTP
Get向服务器发送请求,服务器再次来到json格式的作业数据或操作结果给客户端。

注明:因为模仿登入的是本人的民用网址,所以以下代码对个体网址和账号密码做了拍卖。

金沙澳门官网7817网址 2

签到和登记要丰硕轻松
那是细微手提式有线电话机端,用再好的输入法,打字也是不便于的,所以别把登6页设计得供给填大多事物。假诺有相当大希望的话,只填手机号,让用户抽取短信验证码就完了注册是可是但是的了。想取得更多音讯?想想大公司的APP是如何做的,他们会告诉用户,现在的个人资料完善程度是百分之三十,要是想赢得愈来愈多积分,你供给填完。
tips:借使您想昭示在Appstore并且还要富含注册成效,那么注册页面必须做一个用户许可协议的链接,不然有十分的大大概通但是审核。

一.③.接口请求

接口地址是一个HTTP协议的url地址,具体格式是:

ip替换到实际服务器的ip或域名,若是端口不是默许端口,必要把端口加上。
token是印证字符串,在签到接口中获得,如果未有登6则省略。
其它内容参见接口的定义。
当U奥迪Q3L请求参数值中涵盖UBMWX三L地址保留字符时,应对参数值实行U讴歌MDXL编码。
切实参见“OdysseyFC2396: Uniform Resource Identifiers (U普拉多I): Generic
Syntax”。
当呼吁参数包括汉语字符时,应对中文字符接纳UTF-8编码。

网址分析

image

金玉满堂登入后的session有两种艺术?
APP当浏览器用,直接载入远程页面

壹.四.回到音信结构

归来的json音信数据结构具备从严的一致性,客户端能够利用同样的吸收和分析方法处理回来音信。
简短新闻
粗略的归来音信包蕴对请求的处理结果,结构如下:

{
    "code":0,
    "err_desc":""
}

其中:
code 为0表示处理成功,其它值表示处理失利。
err_desc是对不当的叙说,在code为0时err_desc会被略去。
新鲜意况,在用户认证的login一和login2接口中,err_desc具备特出用途用法,具体参见接口描述。除那四个接口之外,err_desc都意味错误描述。
带业务数据的新闻
有的重临音信除了饱含处理结果信息,还蕴藏业务数据记录集,结构如下:

 {
        "code":0,
        "data":{
            "count":1,
            "items":[...]
        }
    }

其中:
data 业务数据的根节点:
count 业务数据的条数,大概的值为0 ~ n
items
业务数据,是1个数组,数据条数由count属性定义。当count为0时,items属性恐怕为null也许不设有。
本文书档案后续章节中,在讲述items元素的性质时,会简单一些特性的叙说,即事实上调用接口重返的天性在本文档中恐怕会并未有描述,那种景色下请直接忽略被忽视描述的属性值。本文书档案中描述的性质是实际重临内容的1个子集,未有描述到的剧情对集开销系统并未影响。
带分页数据的新闻
若果回到数据较多,服务器会对回到的多少进行分页,客户端能够遵照页码请求钦命范围的多寡。带分页新闻的回到数据结构如下:

    {
    "code":0,
    "data":{
        "page":1,
        "page_size":"20",
        "pages":"1",
        "total":"2",
        "count":2,
        "items":[...]
                }
}

分页数据新闻在data成分下,意义如下:
page 当前页码
page_size 每页数据记录条数
pages 总共的页数
total 总量据条数
count 当前归来页的数额条数
一经回到的多寡带有分页音信,则可以在调用接口时使用page参数来呼吁钦赐页码的数码。

爬虫的不可缺少第2步,分析目标网址。那里运用谷歌浏览器的开荒者者工具分析。

金沙澳门官网7817网址 3

那种场所是不少偷懒的程序员也许傻X的小业主选用的点子,因为做起来实在太快。假使小编网址是响应式布局,那么很有望不要求做怎么样变动,就假使在付出时打发轫页就好了,那样Hybird的应用软件外壳就纯粹成为了二个浏览器。
但比起那样做带来的重重败笔来,开采进度快的长处大致能够忽略不计。
第贰,在网络环境倒霉时,纯大白页,用户体验0;
然后,CSS和JS等财富不在本地,须要中距离载入,假如采纳了bootstrap之类的框架,那用户为了开一下APP而消耗的流量真是让人感动;
再然后,网页里常用的jquery,在手提式有线电电话机的webview里速度并不地道,而只若是非ajax的网页那就更闹心了,每便操作都要跳转和页面渲染,要让人把它当成应用软件那实在是笑话。
再再然后,这样的所谓APP,要通过Appstore的稽核,那是白日梦的(除非审核员当天闹肚子严重,拿着纸巾奔向厕所前误点了通过……),苹果的供给是,那得是应用软件,而不能是某些网址做成APP的榜样,那样的情形符合做Web
应用程式。而据作者所知,国内多少个相当的大的Android市集,那样的应用软件也是无能为力通过核查的。

1.5.参考

[1] RFC 2616, Hypertext Transfer Protocol — HTTP/1.1[S].
[2] RFC 3986, Uniform Resource Identifier (URI): Generic
Syntax[S].
[3] Introducing JSON

透过登录抓取,看到如此四个请求。

image

调用后端接口

2.询问分类

上边部分为请求头,上面部分为呼吁是传的参数。由图片能够观看,页面通过表单提交了七个参数。分别为_csrf,usermane,password。

剖析进程

那是个很好的临时,因为随便后端你是用Java、PHP,照旧node.js,都得以透过xml、json来和应用软件通信。遥想当年写服务端要本人写包结构,然后为了解决出现难点还折腾了八个月IOCP模型,真心感到未来太幸福了。
把刚刚相当用应用程式当浏览器使的案例的持有缺点反过来看,就是那样做的独到之处,在优化完善的境况下体验接近原生,而且通讯流量极少,通过各个审查批准也是妥妥的。
tips:通过plus对象中的XMLHttpRequest来Get、Post远程的后端接口,也许选择Mui中封装好的AJAX相关函数。

贰.一.询问分类

  • 用途
    询问CMS上的归类信息。
    请求

    parent 上级分类编号。假使忽视,会回去顶级分类列表。
    万一要询问超级分类,请去掉parent参数。

  • 响应

{
    "code": 0,
    "data": {
        "count": 2,
        "items": [
            {
                "id": 1,
                "name": "公共栏目",
                "comment": "",
                "upper_catalog_id": 0
            },
            {
                "id": 2,
                "name": "私有栏目",
                "comment": "",
                "upper_catalog_id": 0
            }
        ]
    }
}

id 编号
name 名称
comment 备注
“upper_catalog_id 上级分类编号, 0 表示方今分门别类是超级分类。

中间csrf是为了防止跨域脚本伪造。原理很简短,正是每二回呼吁,服务器生成1串加密字符串。放在隐藏的input表单中。再一遍呼吁的时候,把那一个字符串一同传过去,为了证实是或不是为同多个用户的央浼。

抓包

插一段代码,笔者把mui的ajax又做了更进一步的包装,对逾期实行了活动重试,而对invalid_token等情事也做相应处理:

二.贰.查询分类树

  • 用途
    查询全部分类及其下属分类。
    请求

  • 响应

{
    "code": 0,
    "data": {
        "count": 2,
        "items": [
            {
                "id": 1,
                "name": "公共栏目",
                "comment": "",
                "upper_catalog_id": 0,
                "sub_items": [
                                {
                                    "id": 5,
                                    "name": "二级分类1",
                                    "comment": "",
                                    "upper_catalog_id": 1
                                },
                                ...
                    ]
            },
            ...
        ]
    }
}

id 编号
name 名称
comment 备注
“upper_catalog_id 上级分类编号, 0 表示近期分门别类是拔尖分类。
sub_items 下级分类数组,包蕴 0 或四个下级分类。

金沙澳门官网7817网址 4

1、展开路由的web页面:1九二.16八.3.一,路由器再次回到

mui.web_query = function(func_url, params, onSuccess, onError,
retry){
    var onSuccess = arguments[2]?arguments[2]:function(){};
    var onError = arguments[3]?arguments[3]:function(){};
    var retry = arguments[4]?arguments[4]:3;
    func_url = ‘’ + func_url;
    mui.ajax(func_url, {
        data:params,
        dataType:’json’,
        type:’post’,
        timeout:3000,
        success:function(data){
            if(data.err === ‘ok’){
                onSuccess(data);
            }
            else{
                onError(data.code);
            }
        },
        error:function(xhr,type,errorThrown){
            retry–;
            if(retry > 0) return mui.web_query(func_url, params,
onSuccess, onError, retry);
            onError(‘FAILED_NETWORK’);
        }
    })
};
var onError = function(errcode){
    switch(errcode){
    case ‘FAILED_NETWORK’:
        mui.toast(‘互联网不佳’);
        break;
    case ‘INVALID_TOKEN’:
        wv_login.show();
        break;
    default:
        console.log(errcode);
    }
};
var params = {per:10, pageno:coms_current_pageno};
mui.web_query(‘get_com_list’, params, onSuccess, onError, 3);
调用后端接口怎么着才安然?
在应用软件中保存登入数据,每便调用接口时传输

叁.查询媒体能源

从而,大家的代码逻辑就有了。首先请求一回登入页面。然后分析页面,得到csrf字符串。最终把这几个字符串和账号密码一同传给服务器用来报到。

金沙澳门官网7817网址 5

程序员总能给协调找到偷懒的主意,有的程序为了省事,会在用户登入后,直接把用户名和密码保存在该地,然后每一遍调用后端接口时作为参数字传送递。真省事儿啊!可那种方法大概就像是拿着壹兜子钱在半路边走边喊“快来抢笔者啊!快来抢作者哟!”,多个非常的小的嗅探器就能把用户的密码得到手,假如用户习惯在具有地点用一个密码,那么你闯大祸了,黑客通过撞库的办法能把用户的有所音信一锅端。

三.一.查询媒体财富

  • 用途
    查询媒体财富。
    能够查询有些编号的能源的新闻,也足以查询某些分类下的具有财富音信。
    请求

    parent
    分类编号,如若要询问有个别分类下的装有财富,请忽略下二个参数。
    media_id
    财富编号,倘诺给出该参数,则只询问号码为media_id的二个能源的信息,并忽略parent参数。

  • 响应

{
    "code": 0,
    "data": {
        "page": 1,
        "page_size": "20",
        "pages": 9,
        "total": "18",
        "count": 2,
        "items": [
            {
                "id": 79,
                "catalog_id": 2,
                "title": "vod - 8898",
                "sub_title": "G3视频",
                "abstract": null,
                "text": null,
                "resource_type": "vod",
                "cover": "/mserver/cms/covers/res_cover_79.jpg?1515729601",
                "duration": 98,
                "add_time": "2018-01-08 19:19:26",
                "view_times": 0,
                "open_status": 0
            },
            ...
        ]
    }
}

重返0个或多个财富音讯。
id 财富编号
catalog_id 所属分类编号
title 标题
sub_title 小标题
abstract 摘要描述
text 描述
resource_type vod或live
cover 封面地址
duration 播放时长
add_time 加多时光
view_times 观察次数
open_status 开放境况

先是份代码

image

签到时呼吁2遍token,之后用token调用接口

肆.查询播放地址

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

import requests
import re

# 头部信息
headers = {
 'Host':"localhost",
 'Accept-Language':"zh-CN,zh;q=0.8",
 'Accept-Encoding':"gzip, deflate",
 'Content-Type':"application/x-www-form-urlencoded",
 'Connection':"keep-alive",
 'Referer':"http://localhost/login",
 'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"
}

# 登陆方法
def login(url,csrf):
 data = {
 "_csrf" : csrf,
 "username": "xiedj",
 "password": "***"
 }

 response = requests.post(url, data=data, headers=headers)
 return response.content


# 第一次访问获取csrf值
def get_login_web(url):
 page = requests.get('http://localhost/login')
 reg = r'<meta name="csrf-token" content="(.+)">'
 csrf = re.findall(reg,page.content)[0]
 login_page = login(url,csrf)
 print login_page


if __name__ == "__main__":
 url = "http://localhost/login/checklogin"
 get_login_web(url)

金沙澳门官网7817网址 6

那是比较安全的办法,用户在签到时,应用程式调用获取token的接口(比如),用post将用户名和密码的摘要传递给服务器,然后服务器比对数据库中的用户音信,匹配则赶回绑定该用户的token(那貌似翻译为令牌,很直观的名字,一看就明白是有了那玩意儿,就会对您放行),而数据库中,在用户的token表中也同时插入了这么些token相关的多寡:这么些token属于什么人?那么些token的限制时间是多长期?那几个token当前报到的ip地址是?那么些token对应的deviceid是?……
如此这般正是token被细心截获,也不会导致太大的平安风险。因为从没用户名和密码,然后1旦黑客通过这一个token伪造用户请求,大家在服务器端接口被调用时就足以对发起呼吁的ip地址、user-agent之类的新闻作比对,以幸免伪造。再然后,如若token的限制期限设得小,过一会儿它就过期了,除非黑客能够持续截获你的token,不然她只得眼睁睁。(插一句题外话:看到此间,是否知情为啥不引入在外侧随便接入来历不明的wifi热门了?)
tips:token怎么样变化?
能够依照用户的信息及部分Infiniti制新闻(比如时间戳)再通过hash编码(比如md5、sha1等)生成唯壹的编码。
tips:token的安全等级,取决于你的其实必要,所以只要不是关联财产安全的天地,并不建议太严苛(比如用户走着走着,叁G换了个基站,闪断了须臾间IP地址变了,尼玛token过期了,那就属于为了不须要的平安丢了用户体验,当然假设调换的IP地址跨省的话照旧应该证多美滋(Dumex)下的,想想QQ有时候会让填验证码就清楚了)。
tips:接口在回去音讯时,能够蕴含这次请求的图景,比如成功调用,那么result[‘status’]兴许便是’success’,而反之则是’error’,而只若是’error’,则result[‘errcode’]中就能够涵盖错误的来由,比如errcode中是’invalid_token’就足以告诉APP这些token过期或无效,那时应用软件应弹出登陆框或然用地点存款和储蓄的用户名或密码再一次恳请token(用户选用“记住密码”,就应有在当地保存用户名和密码的摘要,方法见plus.storage的文书档案)。

四.一.查询播放地址

  • 用途
    查询有些媒体能源的广播地址。
    请求

    media_id 财富编号。
    protocol
    播出协议,点播财富得以是hls,http-flv或http-mp5;直播能源能够是
    rtmp或hls。假使简单,重回全数协议的地方。
    客户端请依照终端类别选取合适的公开放映协议:
    android、ios或任何帮忙H5的浏览器,能够选拔:hls, http-mp5协议
    PC选用http-flv或rtmp协议

  • 响应

{
    "code": 0,
    "data": {
        "count": 1,
        "items": [
            {
                "id": 104,
                "resource_id": 39,
                "web_url": "/mp4/vod/yellowstone/yellowstone.mp4",
                "web_io_protocol": "http-mp4",
                "add_time": "2017-08-25 16:35:16"
            }
        ]
    }
}

重返0个或几个广播地址,二个能源可能有多少个不等协商的播放地址。
resource_id 能源编号
web_url 播出地址
“web_io_protocol 播出协议

代码看起来好像未有怎么难点。然则试行的时候出错了。核实了1晃,错误的缘由是,csrf验证战败!

image

再插点代码,基于plus.storage的用户新闻类,注意:要求在plusReady之后再使用。

伍.登陆验证

再频仍认可得到的csrf和哀求登陆的csrf字符串没难点了之后,笔者想开了1个主题素材。
借使,我们还不通晓不当原因来讲,那里能够暂停思索五个难点。“服务器怎样晓得,第二回呼吁获取csrf和第三回post登录请求是同3个用户?”

会取得csrf和cookie和所急需的值,那些值都要保留下来,前边会用。

;function UserInfo(){
};

概述

  • 一)登入的供给和意义
    客户端应当首要推荐推断服务器是还是不是供给必须登6。假设要求,则应首先调用登陆接口登陆,然后再请求别的接口。
    是否需求强制登6,跟运维供给有关,网址运维者能够经过管住平台安装那几个选项。
    只要没有强制要求,客户端能够登入,也得以不登录。
    金沙澳门官网7817网址,用户不利登6后,会获取三个token值,在持续的接口中,应当将该token值带入。例如:

  • 2)登入的流水生产线
    服务器和客户端通过“挑战->应答”情势(challenge-response)举办身份表明交互,在这几个进度中,客户端需求调用四回接口向服务器表明身份。认证进程中不须求传递密码,密码用于签字验证。
    地方表明的过如下:
    1)客户端接纳“用户名”作为参数调用“login壹”接口,向服务器发出身份验证请求
    1.1)服务器确认用户是不是是有效的用户:
    1.2)若不是,则不做特别处理,重返错误新闻
    1.3)万一,服务器产生三个“随机数(挑战字符串)”发送给客户端
    2)客户端接纳“用户密码”和“随机数(挑战字符串)”作为输入,按预订的算法生成1个hash值,用该hash值作为
    调用“login2”接口的参数,请求login2接口。
    2.1)服务器用收到的hash值与和谐的总结结果比较,若两者同样,则通过认证;否则,认证败北
    2.2)若注明通过,服务器重返“token”给客户端,否者重返错误新闻。

到那,应该都通晓了,假设要登入成功,必要缓解哪些让服务相信三次呼吁是同1个用户。这里必要利用http会话(不知情的能够自行百度,那里大概介绍)。

二、输入用户名密码后:

//清除登入信息
UserInfo.clear = function(){
    plus.storage.removeItem(‘username’);
    plus.storage.removeItem(‘password’);
    plus.storage.removeItem(‘token’);
}

5.一.决断是还是不是必须登录

  • 用途
    认清是不是须要必须登6。
    壹旦要求必须登陆,则要求首先登场入,否者查询数据的接口会回到未有权限的荒谬。

请求

  • 响应

{
    "code": 0,
    "err_desc": "no"
}

err_desc 属性描述了对登录的渴求。no 代表不强制需要, yes
代表必须要求登⑥。

http协议是2个种无状态的商谈。为了使那种无状态变得有状态,由此引进了对话。简单来说,通过session去记录这几个场馆。当叁个用户率先次呼吁web服务的时候,服务器会调换一个session,用于保存这几个用户的消息。同时,在重回给用户端时,把这些sessionID保存在cookies里。当用户再2次呼吁的时候,浏览器会把那些cookies带上。由此在服务器端就能精晓数十次伸手是还是不是为同贰个用户。

金沙澳门官网7817网址 7

//检查是还是不是包括自动登陆的音信
UserInfo.auto_login = function(){
    var username = UserInfo.username();
    var pwd = UserInfo.password();
    if(!username || !pwd){
        return false;
    }
    return true;
}

5.2.login1

  • 用途
    付给认证申请,接口重临挑衅字符串。
    请求

    username 登入用户名。

  • 响应

{
    "code": 0,
    "data": {
        "count": 1,
        "items": [
            {
                "id": 37,
                "chcode": "9luqgrnj5vvszmjw"
            }
        ]
    }
}

id session识别号,用于login2接口,原样传递给login二就可以。
chcode
挑衅字符串,客户端按预约规则使用该字符串生成1个hash值,然后调用login贰接口。

故而大家的代码,供给在率先次呼吁的时候获得那几个sessionID。第3次呼吁的时候把这么些sessionID一齐传过去。而requests厉害的地方就是,一句简单requests.Session(),就能动用这些会话对象。

image

//检查是还是不是已登入
UserInfo.has_login = function(){
    var username = UserInfo.username();
    var pwd = UserInfo.password();
    var token = UserInfo.token();
    if(!username || !pwd || !token){
        return false;
    }
    return true;
};

5.3.login2

  • 用途
    接纳login一重临的chcode总结出2个hash值,提交给本接口申请到三个token。该token值用于其它接口的辨证。
    请求

    id login一接口回来的id值,原样带入。
    hash 依照约定总括出的hash值。算法:
    hash=md5(md5(password)+chcode)
    讲述:首先计算出密码的hash值,然后在改变的密码hash值后面部分拼接上挑衅字符串产生新的字符串,最后总结这些新字符串的hash值。
    hash算法采纳md5算法,生成的摘要选用16进制编码,编码生成的字符选取小写字母。
    例如,字符串111111的hash值是 96e79218965eb72c92a549dd5a330112

  • 响应

{
    "code": 0,
    "data": {
        "count": 6,
        "items": [{
            "id": 2,
            "name": "王工",
            "sex": 1,
            "logo": null,
            "token": "c9xpghlmgxn58kdq",
            "group_id": 1
        }]
    }
}

name 用户名
sex 性别,1男 0女
logo 用户头像,null大概头像url
token
认证令牌,在无法保证session的景色下,在伸手其余接口中应该将token参数带入
group_id 用户所属的用户组

其次份代码

金沙澳门官网7817网址 8

UserInfo.username = function(){
    if(arguments.length == 0){
        return plus.storage.getItem(‘username’);
    }
    if(arguments[0] === ”){
        plus.storage.removeItem(‘username’);
        return;
    }
    plus.storage.setItem(‘username’, arguments[0]);
};

5.4.logout

  • 用途
    剥离登入,退出应用前请尽恐怕调用该接口。
    请求

    =abcdefg
    token 登入接口中取得的token

  • 响应

{
    "code": 0,
}
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

import requests
import re

# 头部信息
headers = {
 'Host':"localhost",
 'Accept-Language':"zh-CN,zh;q=0.8",
 'Accept-Encoding':"gzip, deflate",
 'Content-Type':"application/x-www-form-urlencoded",
 'Connection':"keep-alive",
 'Referer':"http://localhost/login",
 'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"
}

# 登陆方法
def login(url,csrf,r_session):
 data = {
 "_csrf" : csrf,
 "username": "xiedj",
 "password": "***"
 }

 response = r_session.post(url, data=data, headers=headers)
 return response.content


# 第一次访问获取csrf值
def get_login_web(url):
 r_session = requests.Session()
 page = r_session.get('http://localhost/login')
 reg = r'<meta name="csrf-token" content="(.+)">'
 csrf = re.findall(reg,page.content)[0]


 login_page = login(url,csrf,r_session)
 print login_page


if __name__ == "__main__":
 url = "http://localhost/login/checklogin"
 get_login_web(url)

image

UserInfo.password = function(){
    if(arguments.length == 0){
        return plus.storage.getItem(‘password’);
    }
    if(arguments[0] === ”){
        plus.storage.removeItem(‘password’);
        return;
    }
    plus.storage.setItem(‘password’, arguments[0]);
};

打响赢得登录后的页面

金沙澳门官网7817网址 9

UserInfo.token = function(){
    if(arguments.length == 0){
        return plus.storage.getItem(‘token’);
    }
    if(arguments[0] === ”){
        plus.storage.removeItem(‘token’);
        return;
    }
    plus.storage.setItem(‘token’, arguments[0]);
};
诸如此类当用户运营应用程式或行使了亟待登陆才干采纳的功效时,就足以利用UserInfo.has_login()来决断是还是不是曾经报到,若是已报到,则运用UserInfo.token()来获取到token数据,作为参数调用远程的后端接口。

金沙澳门官网7817网址 10

image

if(UserInfo.has_login()){
    //展开须要展现给用户的页面,可能是调用远端接口
}
else{
    wv_login.show(‘slide-in-up’);   //从尾部向上海滑稽剧团出登六页面
}
在报到页面中,用户输入了用户名和密码后,并点击了”登入“开关,咱们下一步做怎么着?再插段代码(注意:此处使用的是自作者刚刚代码中扩充的web_query函数,你也得以直接动用mui的ajax):

由代码能够明白,requests.Session()运维会话对象后,第3次呼吁会自动把上二回的sessionID一齐传过去。