Skip to content

Update HttpAndHttpsProxy.java #22

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 46 additions & 27 deletions src/main/java/burp/HttpAndHttpsProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,31 +85,50 @@ public static Map<String,String> HttpsProxy(String url, List<String> headers,byt
httpsConn.setSSLSocketFactory(sc.getSocketFactory());
httpsConn.setHostnameVerifier(new TrustAnyHostnameVerifier());
// 设置通用的请求属性
//设置控制请求方法的Flag
String methodFlag = "";
// 设置通用的请求属性
for(String header:headers){
if(header.startsWith("GET") ||
header.startsWith("POST") ||
header.startsWith("PUT")){
if(header.startsWith("GET")){
methodFlag = "GET";
}
else if(header.startsWith("POST")||
header.startsWith("PUT")){
methodFlag = "POST";
}//在循环中重复设置了methodFlag,代码非常的丑陋冗余,请见谅
continue;
}
String[] h = header.split(":");
}//判断结束后以键值对的方式获取header
String[] h = header.split(": ");
String header_key = h[0].trim();
String header_value = h[1].trim();
httpsConn.setRequestProperty(header_key, header_value);
}
// 发送POST请求必须设置如下两行
httpsConn.setDoOutput(true);
httpsConn.setDoInput(true);

if (methodFlag.equals("GET")){
// 发送GET请求必须设置如下两行
httpsConn.setDoOutput(false);
httpsConn.setDoInput(true);

// 获取URLConnection对象对应的输出流
out = new PrintWriter(httpsConn.getOutputStream());
// 获取URLConnection对象的连接
httpsConn.connect();
}
else if(methodFlag.equals("POST")){
// 发送POST请求必须设置如下两行
httpsConn.setDoOutput(true);
httpsConn.setDoInput(true);

if(body != null) {
// 发送请求参数
out.print(new String(body));
// 获取URLConnection对象对应的输出流
out = new PrintWriter(httpsConn.getOutputStream());
if(body != null) {
// 发送请求参数
out.print(new String(body));
}
// flush输出流的缓冲
out.flush();
}
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(httpsConn.getInputStream()));
Expand Down Expand Up @@ -211,20 +230,20 @@ public static Map<String,String> HttpProxy(String url,List<String> headers,byte[
}


// 设置通用的请求属性
for(String header:headers){
if(header.startsWith("GET") ||
header.startsWith("POST") ||
header.startsWith("PUT")){
continue;
}
String[] h = header.split(":");
String header_key = h[0].trim();
String header_value = h[1].trim();
//BurpExtender.stdout.println("key: " + h[0].trim());
//BurpExtender.stdout.println("value: " + h[1].trim());
httpsConn.setRequestProperty(header_key, header_value);
}
// // 设置通用的请求属性
// for(String header:headers){
// if(header.startsWith("GET") ||
// header.startsWith("POST") ||
// header.startsWith("PUT")){
// continue;
// }
// String[] h = header.split(": ");
// String header_key = h[0].trim();
// String header_value = h[1].trim();
// //BurpExtender.stdout.println("key: " + h[0].trim());
// //BurpExtender.stdout.println("value: " + h[1].trim());
// httpsConn.setRequestProperty(header_key, header_value);
// }
//设置控制请求方法的Flag
String methodFlag = "";
// 设置通用的请求属性
Expand All @@ -241,7 +260,7 @@ else if(header.startsWith("POST")||
}//在循环中重复设置了methodFlag,代码非常的丑陋冗余,请见谅
continue;
}//判断结束后以键值对的方式获取header
String[] h = header.split(":");
String[] h = header.split(": ");
String header_key = h[0].trim();
String header_value = h[1].trim();
httpsConn.setRequestProperty(header_key, header_value);
Expand Down