ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

fiddler抓取guns框架登录以及业务接口【java】

2021-12-25 20:03:10  阅读:145  来源: 互联网

标签:fiddler java 请求 url headers String import guns HashMap


 点击登录按钮后在fiddler中找出请求url。链接过多的话设置一下fiddler中的过滤器就好了。

 登录进来后随便点击一个功能进行测试。

 

 直接点击raw就能看到请求头的全部内容。下面的点击json,就能看到返回的响应结果了。

 下面是java代码,因为我是学Java的,所以就用java来远程调用接口了。

package com.example.springwangwork;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

/**
 * @author: Mr.Wang
 * @create: 2021-12-19 10:49
 **/
@Configuration
public class Main {
    private static final RestTemplate restTemplate = new RestTemplate();
    public static void main(String[] args) throws InterruptedException {
        //设置请求头内容
        LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
        headers.set("Accept","application/json, text/javascript, */*; q=0.01");
        headers.set("Accept-Encoding","gzip, deflate, br");
        headers.set("Accept-Language","zh-CN,zh;q=0.9");
        headers.set("Content-Type","application/json");
        headers.set("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36 Core/1.77.85.400 QQBrowser/10.9.4610.400");
        
        HashMap<?, ?> post = post("http://localhost:8080/login",headers); //登录获取token
        String data = (String) post.get("data");//成功登录后,提取token设置在请求头中,因为每个请求都需要验证token。

        headers.add("Authorization",data);//guns中的shiro登录验证存放于名为Authorization的cookies中,里面放的是jwt的token。
        

        //获取业务中的json需要发送get请求,因为是查询嘛。他controller设置的请求只允许get请求。get请求想要携带请求头的话需要通过restTemplate的exchange方法。不能直接getForObject
        ResponseEntity<String> exchange = exchange("http://localhost:8080/sysUser/currentUserInfo", headers);
        System.out.println(exchange);
    }

    public static HashMap<?,?> get(String url){
        return restTemplate.getForObject(url, HashMap.class);
    }

    public static ResponseEntity<String> exchange(String url,LinkedMultiValueMap<String,String> headers){
        HttpEntity<String> httpEntity = new HttpEntity<>("parameters",headers);
        return restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);
    }

    public static HashMap<?,?> post(String url,LinkedMultiValueMap<String,String> headers){
        //请求体需要携带的参数,账号密码。
        Map<String, String> valueMap = new HashMap<>();
        valueMap.put("account","admin");
        valueMap.put("password","123456");
        valueMap.put("rememberMe","True");
        HttpEntity<Map<String, String>> httpEntity = new HttpEntity<>(valueMap,headers);//对请求头,请求体进行封装
        return restTemplate.postForObject(url, httpEntity, HashMap.class);//发出请求
    }
}

请求头内容

 浏览器控制台也是一样的

 控制台打印信息,现在就可以直接对接到前端去了。这样做的原因仅仅是后端远程调用不存在跨域。如果前端也可以不用跨域进行远程访问的话,也就不用这么多花里胡哨的了,直接js就搞定了。教程结束,第一次发帖。有错误的大家可以指点一下!

标签:fiddler,java,请求,url,headers,String,import,guns,HashMap
来源: https://blog.csdn.net/qq_52637449/article/details/122147401

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有