Atitit.http代理的实现 代码java php c# python
Atitit.http代理的实现 代码java php c# python
1. 代理服务器用途
代理服务器看成是一种扩展浏览器功能的途径。例如,在把数据发送给浏览器之前,可以用代理服务器压缩数据
调试器
数据搜集器
木马病毒
作者:: ★(attilax)>>> 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
package aaa0proxy;
import java.io.*;
import java.net.*;
import log.Log;
import com.attilax.exception.ExUtil;
import com.attilax.json.AtiJson;
import com.attilax.net.SocketUtil;
import com.attilax.web.UrlX;
public class MyHttpProxy extends Thread {
static public int CONNECT_RETRIES = 5; // 尝试与目标主机连接次数
static public int CONNECT_PAUSE = 5; // 每次建立连接的间隔时间
static public int TIMEOUT = 20000; // 每次尝试连接的最大时间
static public boolean logging = false; // 是否记录日志
// 与客户端相连的Socket
protected Socket csocket;
public MyHttpProxy(Socket cs) {
csocket = cs;
start();//run ()
}
public void run() {
String reqHead_firstLine = ""; // 读取请求头
String URL = ""; // 读取请求URL
String host = ""; // 读取目标主机host
int port = 80; // 默认端口80
Socket ssocket = null;
SocketUtil client_SocketUtil=null;
SocketUtil server_SocketUtil_remote = null;
Log logger=new Log();
System.out.println("--log file:"+logger.LOGFILENAME_C );
try {
client_SocketUtil=new SocketUtil(csocket).setSoTimeout(TIMEOUT).setLogger(logger);
UrlX urlUtil=new UrlX();
try {
reqHead_firstLine = client_SocketUtil. readFirstLine().firstLine;
} catch (Exception e) {
System.out.println("---read first line ex,msg:"+e.getMessage());
//、、+ "csocket inso:"+ AtiJson.toJson(csocket) );
ExUtil.throwEx(e);
}
if(reqHead_firstLine.contains(".jpg"))
System.out.println("dbg");
// 抽取URL(<a href="http://www.baidu.com/">http://www.baidu.com/</a>)
//GET http://s.cimg.163.com/catchpic/E/E0/E007CE953D48E9E1EC2319B343B5940D.jpg.670x270.jpg HTTP/1.1
URL = urlUtil.getRequestURL(reqHead_firstLine);
System.out.println("--url:"+URL);
if(URL.contains("1366134690"))
System.out.println("dbg");
host = urlUtil.hostNoport(URL);
port=urlUtil.port(URL);
//s.cimg.163.com
server_SocketUtil_remote=new SocketUtil()
.createConn2remote(host, port, CONNECT_RETRIES,
CONNECT_PAUSE).setSoTimeout(TIMEOUT).setLogger(logger)
.write(reqHead_firstLine+"").write(client_SocketUtil.charFirstLineBreak);
server_SocketUtil_remote.pipe(client_SocketUtil.is, client_SocketUtil.os); // 建立通信管道;
} catch (Exception e) {
e.printStackTrace();
} finally {
new SocketUtil( client_SocketUtil).close();
new SocketUtil( server_SocketUtil_remote) .close();
logger.flush();logger.close();
System.out.println("--thd finish");
}
}
public static void startProxy(int port, Class clobj) {
try {
ServerSocket ssock = new ServerSocket(port); //if port use ,throw ex
/*
* java.net.BindException: Address already in use: JVM_Bind
* */
System.out.println("---start ok port:"+port);
while (true) {
Class[] sarg = new Class[1];
Object[] arg = new Object[1];
sarg[0] = Socket.class;
try {
java.lang.reflect.Constructor cons = clobj
.getDeclaredConstructor(sarg);
arg[0] = ssock.accept();
cons.newInstance(arg); // 创建HttpProxy或其派生类的实例
} catch (Exception e) {
Socket esock = (Socket) arg[0];
try {
esock.close();
} catch (Exception ec) {
}
}
}
} catch (IOException e) {
System.out.println("\nStartProxy Exception:");
e.printStackTrace();
}
}
// 测试用的简单main方法
static public void main(String args[]) throws FileNotFoundException {
System.out.println("在端口808启动代理服务器\n");
//MyHttpProxy.log_S = file_S;
//MyHttpProxy.log_C = file_C;
//MyHttpProxy.logging = true;
MyHttpProxy.startProxy(808, MyHttpProxy.class);
}
}
相关文章
- 揽货最短路径解决方案算法 - V2(增加了时间维度-客户允许的服务时间段,C#/JAVA同步实现,带python作图)
- 不通用版(从SVN取版本,通过MAVEN生成JAVA包,通过SALTSTACK传送到远程服务器并自动重启TOMCAT服务)PYTHON代码
- Python Django后台管理模板美化:使用django-simpleui模块
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
- Atitit.http代理的实现 代码java php c# python
- Atitit.http代理的实现 代码java php c# python
- Atitit 文件上传 架构设计 实现机制 解决方案 实践java php c#.net js javascript c++ python
- Atitit 文件上传 架构设计 实现机制 解决方案 实践java php c#.net js javascript c++ python
- Atitit 文件上传 架构设计 实现机制 解决方案 实践java php c#.net js javascript c++ python
- Atitit.得到网络邻居列表java php c#.net python
- paip.判断文件是否存在uapi python php java c#
- paip.获取文件名从路径uapi java python php总结...
- paip.提升安全性----Des加密 java php python的实现总结
- 华为OD机试 - 最长的密码(Java & JS & Python)
- 华为OD机试 - 区间交叠问题(Java & JS & Python)
- 华为OD机试 - 最大社交距离(Java & JS & Python)
- 华为OD机试 - 求符合要求的结对方式(Java & JS & Python)
- 华为OD机试 - 比赛(Java & JS & Python)
- 华为OD机试 - 求满足条件的最长子串的长度(Java & JS & Python)
- 华为OD机试 - 最大矩阵和(Java & JS & Python)
- python教你最简单的机器学习算法:KNN,有手就行
- 教你如何在Spark Scala/Java应用中调用Python脚本
- python使用pandas读取excel
- 【华为OD机试 2023】 最差产品奖(C++ Java JavaScript Python)
- 【华为OD机试 2023】租车骑绿岛(C++ Java JavaScript Python)
- 【华为OD机试 2023】最优高铁城市修建方案(C++ Java JavaScript Python)
- 【 华为OD机试 2023】荒地建设电站 /区域发电量统计(C++ Java JavaScript Python)
- 华为校招机试 - 字母加密(Java & JS & Python)
- Python接口自动化——Web接口(2-2)