• Charles添加URL Decode功能


     

      如果你只是单纯的为了使用,那么请看这里,直接下载 安装,替换 charles.jar包即可

      链接: https://pan.baidu.com/s/1LW2kiwx4ms4w-L9YW9hO1A 密码: cs1d

             闲话不多说,直接上手艺!!!!

    相信你已经在网上看到各种关于 Charles 添加 URL Dedode 功能的文档,场景描述和调研我就不细讲了,charles.jar 包如何拿到你也了解

    以下是具体思路如何通过gui 反编译拿到java源码, 通过 IDEA 新建java项目 添加jar包build 成 .class源码,通过命令jar  -uvf 更新到 Charles.jar包中

    准备工具

    下载 jd-gui  地址

    • 怎么把.class转成.java文件呢?也是在jd-gui文件里面。点击要转的文件,然后file-->save Source如下图:  

      

    保存后就是.java文件了。当然可以直接保存整个jar包,也可以是单个文件 

     URL Decode功能代码 -以下代码都需要新建

     1 package com.xk72.charles.gui.transaction.actions;
     2 import com.xk72.charles.CharlesContext;
     3 import javax.swing.*;
     4 import javax.swing.text.JTextComponent;
     5 import java.awt.*;
     6 import java.awt.event.ActionEvent;
     7 import java.awt.event.KeyEvent;
     8 import java.awt.event.KeyListener;
     9 import java.net.URLDecoder;
    10 
    11 public abstract class CharlesUrlDecode extends AbstractAction {
    12     private final Component source;
    13 
    14     protected CharlesUrlDecode(Component paramComponent) {
    15         super("URL Decode");
    16         this.source = paramComponent;
    17     }
    18     protected abstract  String getBody();
    19 
    20 
    21     public void actionPerformed(ActionEvent paramActionEvent) {
    22         try {
    23 
    24             String urlDecode = URLDecoder.decode(getBody(), "utf-8");
    25             urlDecode = urlDecode.replace("},{", "}
    
    {");
    26             WaringDialog("URL Decode Result",urlDecode);
    27 
    28         } catch (Exception exception) {
    29           CharlesContext.getInstance().error("Failed to url decode. Probably not valid");
    30         }
    31 
    32     }
    33     //避免影响原功能,所以新弹出一个窗口展示结果更为合适
    34     public  void WaringDialog(String title,String content) {
    35         JFrame JFrame = new JFrame(title);
    36         JFrame.setPreferredSize(new Dimension(800, 500));
    37         JTextArea textArea = new JTextArea();
    38         textArea.setText(content + "
    ");
    39         textArea.setLineWrap(true);
    40         textArea.setWrapStyleWord(true);
    41 
    42         JScrollPane jScrollPane  = new JScrollPane(textArea);
    43         jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    44 
    45         jScrollPane.setAutoscrolls(false);
    46         JFrame.setContentPane(jScrollPane);
    47         JFrame.pack();
    48         JFrame.setVisible(true);
    49     }
    50 
    51 }
    CharlesUrlDecode.java
     1 package com.xk72.charles.gui.transaction.actions;
     2 import java.awt.Component;
     3 
     4 public class CharlesUrlDecodeText extends CharlesUrlDecode {
     5 
     6     private final String text;
     7 
     8     public CharlesUrlDecodeText(String str) {
     9         super(null);
    10         this.text = str;
    11     }
    12 
    13     public CharlesUrlDecodeText(String str, Component component) {
    14         super(component);
    15         this.text = str;
    16     }
    17 
    18     protected String getBody() {
    19         return this.text;
    20     }
    21 }
    CharlesUrlDecodeText.java
     1 package com.xk72.charles.gui.transaction.actions;
     2 import javax.swing.text.JTextComponent;
     3 
     4 public class CharlesUrlDecodeTextComponent extends CharlesUrlDecode {
     5     private final JTextComponent component;
     6 
     7     public CharlesUrlDecodeTextComponent(JTextComponent jTextComponent) {
     8         super(jTextComponent);
     9         this.component = jTextComponent;
    10     }
    11 
    12     protected String getBody() {
    13         String selectedText = this.component.getSelectedText();
    14         return selectedText == null ? this.component.getText() : selectedText;
    15     }
    16 
    17 }
    CharlesUrlDecodeTextComponent.java

     主入口popview类 -此代码是修改

      根据度娘上所有文档,都自动屏蔽了popview类的新增此处鄙视他们一下)导致很多人入坑, 即使build成功,把class文件更新到jar包中,也没有出现 URL Decode 功能选项

    IDEA  Build项目 

    1.  新建一个java项目  test123
    2. 创建和charles相同的代码路径 以下是例子:
      1. test123/src/com/xk72/charles/gui/transaction/actions/CharlesUrlDecode.java
      2. test123/src/com/xk72/charles/gui/transaction/popups/TransactionViewerPopupMenu.java
    3. 打开 File --> Project Structure      这里有不懂的可以百度下 如何导入jar包 build项目可能在编译过程中说  IDEA版本太低,下载对应高版本的IDEA版本      
      1. Project 选择对应的jdk版本
      2. Modules   --->导入项目
      3. Libraries  ---> 导入Charles.jar包 
    4. build过程中可能会报错, class类文件具有错误的版本52.0,应为50.0,查看自己的jdk版本,Project 下载报错的对应jdk版本,以下是版本对照      
    J2SE 8 = 52,
    J2SE 7 = 51,
    J2SE 6.0 = 50,
    J2SE 5.0 = 49,
    JDK 1.4 = 48,
    JDK 1.3 = 47,
    JDK 1.2 = 46,
    JDK 1.1 = 45
    

      打包后效果图-如果实在不懂,可以问下java开发 --这里可能java 基础不好的同学费点事,其实这里懂了以后,发现很简单

     

     jar 包更新

    1. 新建一个文件夹 new ,在文件夹中创建和 charles对应的目录  比如 cd new  &&   mkdir -p com/xk72/charles/gui/transaction/actions
    2. 把编译好的class文件 拷贝到 对应文件夹中
    3. 使用  jar  uvf  更新到charls.jar 包中  jar -uvf charles.jar  com/xk72/charles/gui/transaction/actions/CharlesUrlDecode.class 

       

       

     实践 

      点击该选项后,会将转码的结果用一个新的pop弹窗来展示

     总结

      整个过程相对来说比较顺利,每天吃完晚饭后,每天2-3个小时研究,中间也踩到了坑,坑都在上面有详细的说明,因为我主语言不是java,所以比较慢

      不过也用了不到俩周时间搞定 ,希望下个你看到对你有所帮助,这是我很大的荣幸!记得点赞,留言多夸我,哈哈哈!

      有任何不明白可以留言,看到会回复,要是嫌麻烦,你可以留下联系方式, 我可以发给你编译后的charle.jar包,因为没找到上传附件的地方 ,我用的 charles 版本 4.6.1

      链接: https://pan.baidu.com/s/1LW2kiwx4ms4w-L9YW9hO1A 密码: cs1d

                         

            

  • 相关阅读:
    毕业设计:参考文献(3)
    毕业设计:参考文献(5)
    毕业设计:参考文献(1)
    毕业设计:参考文献(7)
    毕业设计:参考文献(2)
    2021ICPC沈阳站游记
    2021CCPC广州站游记
    常用linux 脚本
    Jenkins调优实践
    linux工具安装
  • 原文地址:https://www.cnblogs.com/Baylor-Chen/p/14963207.html
Copyright © 2020-2023  润新知