我也在 考虑这个问题,我能获取到动态js的key value但是登录总是非法请求,不知为何

解决方案 »

  1.   

    https://kyfw.12306.cn/otn/dynamicJs/lojzuyz  现在就是这个路径取不到值
      

  2.   


    你是怎么获取到的,你是java还是,你获取找那个js直接分析key好像key的值是1111才是有效的,再经过加密(js有算法)再带入算出来的值登陆就可以了 现在我就是取不到https://kyfw.12306.cn/otn/dynamicJs/lojzuyz这个返回值 我qq624400382 求指点
      

  3.   

    嗯,我用的Java,也是httpclient4,那是个空白文件,直接拖到浏览器访问是不行的,用httpget方法去请求这个链接,用正则表达式匹配到那个动态js的文件名,拼接成链接,然后再去get方法请求这个!最后是可以返回文件里的内容的,然后再用正则匹配到那个key,有了key,用文件里的js加密方法就可以得到value了,只是我这一直都非法请求!HttpDoGetUtils.doRequestToString("https://kyfw.12306.cn/otn/login/init");
    Pattern pattern = Pattern.compile("/otn/dynamicJs[^\"']+");
    Matcher matcher = pattern.matcher(loginResponseText);
    String jsSrc = "";
    while (matcher.find()) {
    jsSrc = matcher.group();
    }
    if (jsSrc.equals("")) {
    return null;
    }
    String jsText = HttpDoGetUtils.doRequestToString("https://kyfw.12306.cn"+jsSrc);
    pattern = Pattern.compile("\\skey\\s?=\\s?'\\w+'");
    matcher = pattern.matcher(jsText);
    String key = "";
    while (matcher.find()) {
    key = matcher.group();
    }
    if (key.indexOf("'") == -1) {
    Thread.sleep(1000);
    getKeyPageForLogin(loginResponseText);
    }
    key = key.substring(key.indexOf("'")+1,key.lastIndexOf("'"));
    String value = lgin.getKeyValue(key);
            return new String[]{key,value};
      

  4.   

    https://kyfw.12306.cn/otn/dynamicJs/lahobgk 原来是这个链接 ,你是怎么发下的 ,膜拜,但是他是怎么骗过浏览器呢 真是奇怪
      

  5.   

    经过你的解答我发下原来他js的路径是拼出来的,突然感觉自己笨死了,他每次相当于在那个js路径中加入了tonken动态生成路径,访问一次之后令牌失效,先谢谢楼上的解答,真心困扰了我很久,今晚终于可以睡个好觉啦 ,再次谢谢