美文网首页
web页面不携带cookie实现自动登录

web页面不携带cookie实现自动登录

作者: 时米高的人生笔记 | 来源:发表于2017-07-24 15:26 被阅读54次

    需求背景

    使用某个app的时候碰到一个web页面, 登录之后每次打开都还要重新登录. 想办法弄到url之后发现, 这个页面没有携带cookie. 所以, 就在想这种情况下有没办法实现自动登录.

    实现思路

    • 在Chrome浏览器打开url, 右键可以查看网页源码. 找到填充账号密码的js语句和登录方法
    • oc执行js语句, 自动填充账号密码, 并调用js的登录方法

    代码

    -1. 加载webview

    self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
        self.webView.navigationDelegate = self;
        [self.view addSubview:self.webView];
        NSURL *URL = [NSURL URLWithString:@"http://www.kball.com.cn:3000/huolala/tkb_huolala_insurance_reg.html?channelId=huolala"];
        NSURLRequest *request = [NSURLRequest requestWithURL:URL];
        [self.webView loadRequest:request];
    

    -2. 在webview加载完成的代理方法中, 执行js语句

    //webview加载完成代理
    - (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation {
    
        //拼接js语句,用js语句自动填充账号和密码
        NSString *userPhone = @"18576677707";
        NSString *userPassWord = @"123456";
        NSString *javaScript = [NSString stringWithFormat:@"var x = document.getElementsByClassName('userPhone');var i;for (i = 0; i < x.length; i++) {x[i].value=%@;}var y = document.getElementsByClassName('userPassWord');var i;for (i = 0; i < y.length; i++) {y[i].value=%@;}" ,userPhone,userPassWord];
        
        //调用js方法
        [webView evaluateJavaScript:javaScript completionHandler:^(id _Nullable sucess, NSError * _Nullable error) {
            //成功回调,调用登录方法
            [webView evaluateJavaScript:@"login()" completionHandler:^(id _Nullable sucess, NSError * _Nullable error) {      
            }];        
        }];
    }
    

    • 这只是兴趣导向的小研究, 真实开发中一般不这么实现自动登录的需求.
    • 因为web页面的代码随时可以更改发布, 而app更改之后要审核上架. web代码改了, app没改, 自动登录还是会失效.
    • 所以真实开发中, 如果web页面要实现自动登录, 就必须在请求中携带cookie或者token, 客户端负责读取保存cookie.

    demo地址:

    https://git.oschina.net/SLY_C/oc_jsJiaoHu_ZiDongDengLu.git

    相关文章

      网友评论

          本文标题:web页面不携带cookie实现自动登录

          本文链接:https://www.haomeiwen.com/subject/oxebkxtx.html